Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de valeur de idContinent dans php

    11 avril 2024 à 20:58:10

    Bonjour à tous, j'ai un souci avec mon code : la mise à jour de ma variable de session ne se fait pas correctement du côté PHP. Les console.log du script JavaScript donnent les bonnes valeurs, mais le var_dump du côté HTML/PHP ne renvoie pas la bonne idContinent contenue dans le script JavaScript.

    <form id="submitSiegeSocial" action="php/scripts/actionChoisirSiegeSocial.php" method="POST">
                                            <label for="continent">Choisir un continent :</label>
                                            <select id="continent" name="continent">
                                                <option value="0">Choisir un continent</option>
                                            <?php foreach ($allContinents as $allContinents): ?>
                                                    <option value="<?= $allContinents->id() ?>">
                                                        <?= $allContinents->nom() ?> - superficie cultivable : 
                                                        <?= $allContinents->supCultivableKmC() - ($terresJoueursManager->sommeHecRestentContinent($allContinents->id()) * 0.01) ?> km² / <?= $allContinents->supCultivableKmC() ?> km²
                                                    </option>
                                            <?php endforeach; ?>
                                            </select>
                                            <!-- Suite formulaire en fonction du continent choisie -->
                                            <div id="suiteFormChoixPays" class="hidden">
                                                <?php $choixIdContinent = (int)$_COOKIE['choixIdContinent'];
                                                    var_dump($choixIdContinent);
                                                      ?>
                                                <label for="pays">Choisir un pays :</label>
                                                <select id="pays" name="pays">
                                                    <option value="0">Choisir un pays</option>
                                                    <?php foreach ($allPays as $allPays): 
                                                            if($allPays->idContinent() == $choixIdContinent) { ?>
                                                                <option value="<?= $allPays->id() ?>">
                                                                    <?= $allPays->nom() ?> - superficie cultivable :
                                                                    <?= $allPays->supCultivableKmC() - ($terresJoueursManager->sommeHecRestentContinent($allPays->id()) * 0.01) ?> km² / <?= $allPays->supCultivableKmC() ?> km²
                                                                </option>
                                                    <?php   }
                                                        endforeach; ?>
                                                </select>
                                            </div>
                                        </form>

    voici le code js qui est appeler dans mon fichier php.

    document.getElementById('continent').addEventListener('change', function() {
        var idContinent = this.value;
        console.log(idContinent);
        document.cookie = "choixIdContinent = " + parseInt(idContinent);
        console.log(document.cookie);
        var suiteFormChoixPays = document.getElementById('suiteFormChoixPays');
    
        if(idContinent != '0'){
            suiteFormChoixPays.classList.remove('hidden');
        }else{
            suiteFormChoixPays.classList.add('hidden');
        }
        
        
    });

    J'aimerai savoir si vous avez une solution, merci d'avance a vous tous.


    • Partager sur Facebook
    • Partager sur Twitter
      11 avril 2024 à 21:31:50

      PHP est exécuté côté serveur donc avant Javascript qui l'est côté client.

      De plus, passant par un cookie, le serveur ne verra tout changement qu'à la prochaine requête HTTP.

      Si tu veux une communication client => serveur il te faut de l'ajax ou des websockets. Ton code PHP aura toujours un temps de retard : il ne montrera que la valeur sélectionnée "précédemment" (= il faut forcer le rafraîchissement de la page par F5/Ctrl + R ou revenir sur la page), bref, j'imagine que ce n'était pas l'idée/que l'approche ne convient pas.

      -
      Edité par julp 11 avril 2024 à 21:40:41

      • Partager sur Facebook
      • Partager sur Twitter

      Problème de valeur de idContinent dans php

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      • Editeur
      • Markdown