IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Souci url - incrémentation


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Souci url - incrémentation
    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.

    Cela pourrait venir d'ou?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <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>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     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');
     
        }
    [

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    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>";
     
     
     
    		}

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Sans connaître l'articulation de ces 3 bouts de code c'est difficile de te répondre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    En fait le premier code correspond à la vue.

    On va afficher les questions et réponses en fonction d'un $_GET['id'] qui est à 1 de base.

    Quand on clique sur l'une des réponses dans displayAddReponses, on va dans un controleur qui incrémente de 1 ce $_GET['id'] envoi les réponses à la base de donnée puis retourne vers la page de question avec le nouveal $_GET['id'] et ainsi de suite.

    Les soucis que que j'ai actuellement :

    - Si je met l'adresse avec ~satisfaction/index.php?id=1 à la fin, il m'affiche déjà pas la question 1 mais la deux..
    - Si je met juste ~satisfaction/ il va m'afficher 2 fois la question 2 pour la question 3 et 4.

    Du coup je suis un peu perdu la :/



    edit :

    J'ai corriger une partie du soucis mais il reste toujours le souci de l'url

    C'est a dire qu'il va me mettre 1 - 1 - 2 - 3 au lieu de 1 - 2 - 3 - 4

  4. #4
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Il ne faut pas d'espace entre "Location" et ":".

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Alors si je fais ~satisfaction/index.php?id=1 tout fonctionne correctement
    Cependant si je met ~satisfaction/ on va avoir deux fois la question 1.

    Pourquoi?

  6. #6
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Après essai, d'un serveur à l'autre, l'espace après "Location" peut passer ou non.
    Si il ne passe pas sur votre serveur, alors les redirections ne fonctionneront pas, ce qui expliquerait ce que vous disiez :
    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.
    Pour moi, c'est ce qu'on aurait si la redirection ne passe pas.

    Pour commencer, essayez déjà ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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']);
             header('Location:index.php?id='.$_GET['id']);
        } else if(isset($_GET['id'])===false) {
     
            header('Location:index.php?id=0');
     
        }
    J'ai supprimé les espaces après "Location" et ajouté un test après "else" pour éviter une redirection à l'infini.
    Pour le reste, je n'ai pas eu le temps de tout lire, peut-être plus tard si le problème persiste.

Discussions similaires

  1. soucis url rewritting infini
    Par thib3113 dans le forum Apache
    Réponses: 1
    Dernier message: 07/04/2014, 15h33
  2. Soucis url rewriting
    Par eriden42 dans le forum Apache
    Réponses: 2
    Dernier message: 02/11/2010, 21h18
  3. Soucis avec la réécriture d'URL
    Par Olivier Regnier dans le forum OVH
    Réponses: 10
    Dernier message: 28/12/2007, 01h04
  4. quelques soucis avec l'url rewriting
    Par romain_paris dans le forum Apache
    Réponses: 10
    Dernier message: 17/09/2006, 16h51
  5. [Tableaux] Petit Soucis d'URL
    Par sanosuke85 dans le forum Langage
    Réponses: 17
    Dernier message: 19/06/2006, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo