Bonjour,
J'ai un problème assez étrange.

Techniquement mon programme est changé affiché des questions en fonction d'un id et on passe à la question suivante quand on clique sur l'un des choix.

Là où c'est étrange c'est que tout fonctionne sauf au niveau de l'url.

A la première question on a un id à 0 et quand on clique sur la question suivante on a la bonne question mais dans l'url l'id est toujours à 0. C'est seulement si on répond de nouveau à la question que l'id incrémente correctement.

Ce que je fais

 <div class="type-question">
                    <p class="question">
                      <?php
                        //echo $_SESSION['questions'];
                                    if (!empty($_GET['id'])) {
                                            displayQuestions($_GET['id']);
                                        } else {
                                                displayQuestions();

                                        }
                                    /*  if (intval($_GET['indexQuestion'])< sizeof($_SESSION["question"])-1) {
                                    $_SESSION["question"][intval($_GET['indexQuestion'])+1];
                                }*/

                                        ?>
                    </p>
                  </div>
    if (!empty($_POST['choix'])) {

        $_GET['id']++;

        //quelque soit le choix, l'appel est toujours le même
        addReponse($_SESSION['id_utilisateur'],$_POST['sondage_en_cours'],
                        $_POST['question'],$_POST['choix']);
        echo $_GET['id'];
         header('Location :index.php?id='.$_GET['id']);
    } else {

        header('Location :index.php?id=0');

    }
function displayAddReponses($idQuestion = 0) {

    $query = 'SELECT * FROM sondage_questions WHERE id = (SELECT min(id) FROM sondage_questions WHERE id > :id )';
    $resultat = db()->prepare($query);
    $resultat->bindValue(':id',$idQuestion,PDO::PARAM_INT);
    $data = $resultat->execute();
    $nb_sondage = $resultat->rowCount();
    if (!$resultat->execute()) {
        echo '<br>ERREUR select ID ('.$idQuestion.') => v&eacute;rifier la DB';
  } else {

        if (!$nb_sondage == 0) {

            $donnees = $resultat->fetch();

                echo "<form method='post' class='bandeau' action = 'index.php?id=".$_GET['id']."'>";
                echo "<input type='hidden'  name = 'sondage_en_cours' value = '".$donnees['id']."'/>";
                echo "<input type='hidden'  name = 'question' value = '".$donnees['question']."'/>";
                echo "<input type = 'submit' name='choix' value = 'bon' class='bon'/>";
                echo "<input type = 'submit' name='choix' value = 'moyen' class='moyen'/>";
                echo "<input type = 'submit' name='choix' value = 'mauvais' class='mauvais'/>";
                echo "</form>";

        }

Cela pourrait venir d'ou?

7 réponses


T'as pas du JS ou de l'ajax qui traine ?

gweared
Auteur

non du tout pourquoi?

ca aurait pu expliqué que l'url change pas, mais le contenu oui ^^
Déjà j'ai du mal à pigé comme tu fais pour sélectionner la question qui à l'ID 0. Etant donné que l'on comme toujours à l'ID 1.
C'est ptete par là qu'il faut creuser

gweared
Auteur

Alors j'ai retirer l'espace entre le location et le : et apriori sa à l'air de fonctionner.

header('Location : index.php?id=1');
header('Location: index.php?id=1');

Sinon une autre petite question, si je veux retirer la question a l'id 2.
Tu aurais une idée ?
C'est a dire qu'on afficherais la question 1 puis 3 puis 4 ?

Ca dépend de la raison, mais une simple condition du genre : Si l'id == 2 => id++

Pour le header il est vrai qu'il a tendence à être un peu strict pour pas grand chose. ( pour ca que je l'utilise plus :D )

gweared
Auteur

Par contre par rapport à la redirection si je fais

~satisfaction/index.php?id=1 tout fonctionne correctement
Cependant si je met ~satisfaction/ on va avoir deux fois la question 1.

ne le met pas alors. ^^