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

AJAX Discussion :

Récupération de la valeurd'une question


Sujet :

AJAX

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Récupération de la valeurd'une question
    Bonjour,

    Je ne suis qu'un développeur du dimanche (pour l'instant) donc veuillez m'excuser si mon code parait "sale" ou si l'erreur vient d'un code "mal codé".
    Je développe actuellement un petit site internet. Mes outils de développement sont MAMP (pour localhost et phpMyAdmin), Firefox (et Firebug) et XCode.
    Mon problème tourne évidemment autour de 3 fichiers:
    • XXX.php contenant le code de la page
    • requete.php pour me connecter et effectuer mes requetes
    • question.js avec le code JavaScript pour AJAX


    Mon problème: Je n'arrive pas à récupérer la valeur de la question (id) afin de l'utiliser dans l'indice (ind). Dans Firebug, le fichier "requete.php" ne me retourne pas laQuestion.value mais undefined.

    Voici les trois morceaux de code utiles (je pense):
    XXX.php:
    Code html : 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 id="menu">
                <table width=100% height=100%>
     
                    <tr>
                         <p style="padding:50px;text-align:center;font-family: Georgia, 'DejaVu Serif', Norasi, serif;text-transform: none; letter-spacing: 0px;font-weight:normal;" id="laQuestion"></p>
                    </tr>
                    <tr>
                         <td><p id="indice">Indice</p></td>
                         <td>Réponse</td>
                    </tr>
                    <tr>
                         <td><a href="../index.php"><img width="40%" name="accueil" src="imageQuestion/Retour.png" onmouseover="this.src='imageQuestion/RetourHover.png'" onmouseout="this.src='imageQuestion/Retour.png'"/></a></br>Accueil</td>
                         <td><a href="QuestionTheme.php"><img width="40%" name="accueil" src="imageQuestion/Retour.png" onmouseover="this.src='imageQuestion/RetourHover.png'" onmouseout="this.src='imageQuestion/Retour.png'"/></a></br>Retour Theme</td>
                    </tr>
                </table>
            </div>
    <script type="text/javascript" src="question.js"></script>

    question.js:
    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
    29
    30
    31
    var laQuestion = document.getElementById("laQuestion");
    var bouton_indice = document.getElementById("indice");
    var bouton_reponse = document.getElementById("reponse");
    var CheminComplet = document.location.href;
    var CheminRepertoire  = CheminComplet.substring(CheminComplet.lastIndexOf( "/" )+1,CheminComplet.lastIndexOf( "." ) );
     
    window.addEventListener('load',function(){
                            var ajax = new XMLHttpRequest();
                            ajax.open('POST', 'requete.php', true);
                            ajax.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
                            ajax.addEventListener('readystatechange', function(e) {
                                                  if(ajax.readyState == 4 && ajax.status == 200){
                                                  laQuestion.innerHTML += ajax.responseText;
                                                  }
                                                  });
                            var data = "type=question&theme="+CheminRepertoire;
                            ajax.send(data)
                            },false);
     
    bouton_indice.addEventListener('click',function(){
                                  var ajax = new XMLHttpRequest();
                                  ajax.open('POST', 'requete.php', true);
                                  ajax.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
                                  ajax.addEventListener('readystatechange', function(e) {
                                                        if(ajax.readyState == 4 && ajax.status == 200){
                                                        bouton_indice.innerHTML += ajax.responseText;
                                                        }
                                                        });
                                  var data = "type=indice&selection="+laQuestion.value;
                                  ajax.send(data)
                                  },false);

    requete.php:
    Code php : 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
    $link = mysqli_connect($serveur,$user,$password,$base);
        if (!$link) {
            die('Erreur de connexion');
        }else{
            echo '';
        }
        if ($_POST["type"]=="question") {
            $sq1="SELECT Quest,id FROM Question WHERE Theme='".$_POST['theme']."' ORDER BY RAND() LIMIT 1;";
            if($result = mysqli_query($link, $sq1)){
                while($ligne = mysqli_fetch_assoc($result)){
                    $qu=$ligne["Quest"];
                    $id=$ligne["id"];
                    echo "<option value=".$id.">".utf8_encode($qu)."</option>";
                }
            }
        }
        elseif ($_POST["type"]=="indice") {
            $sq1="SELECT Indice FROM Question WHERE id='".$_POST['selection']."'";
            if($result = mysqli_query($link, $sq1)){
                while($ligne = mysqli_fetch_assoc($result)){
                    $ind=$ligne["Indice"];
                    echo "<option>".utf8_encode($ind)."</option>";
                }
            }
        }
        mysqli_close($link);

    Merci

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2016
    Messages : 42
    Points : 60
    Points
    60
    Par défaut
    Salut,

    Pour récupérer le contenu de ton paragraphe, tu dois utiliser "innerHTML" et non "value".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var data = "type=indice&selection=" + laQuestion.innerHTML;
    ++

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Merci pour ton aide mais je veux effectivement récupérer (id) de laQuestion et non la question en elle même. De plus, même avec ce que tu m'indiques, le champs sélection reste à undefined au lieu de prendre la question. Une autre idée?

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Solution Partielle
    Bonjour à tous,

    Voici la seule et sale solution que j'ai mise en œuvre. J'espère toujours une meilleure réponse si quelqu'un a une idée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <tr><p style="padding:50px;text-align:center;font-family: Georgia, 'DejaVu Serif', Norasi, serif;text-transform: none;
     letter-spacing: 0px;font-weight:normal;" id="laQuestion">Question:</br>
    </p></tr>
    <tr><td><p id="indice">Indice</p></td>[...]</tr>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    bouton_indice.addEventListener('click',function(){
                                  var ajax = new XMLHttpRequest();
                                   var numQuest  = laQuestion.innerHTML.substring(laQuestion.innerHTML.indexOf('"')+1,laQuestion.innerHTML.lastIndexOf('"') );
                                  ajax.open('POST', 'requete.php', true);
                                  ajax.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
                                  ajax.addEventListener('readystatechange', function(e) {
                                                        if(ajax.readyState == 4 && ajax.status == 200){
                                                        bouton_indice.innerHTML += ajax.responseText;
                                                        }
                                                        });
                                  var data = "type=indice&selection="+numQuest;
                                  ajax.send(data)
                                  },false);
    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
    if ($_POST["type"]=="question") {
            $sq1="SELECT Quest,id FROM Question WHERE Theme='".$_POST['theme']."' ORDER BY RAND() LIMIT 1;";
            if($result = mysqli_query($link, $sq1)){
                while($ligne = mysqli_fetch_assoc($result)){
                    $qu=$ligne["Quest"];
                    $id=$ligne["id"];
                    echo "<option value=".$id.">".utf8_encode($qu)."</option>";
                }
            }
        }
        elseif ($_POST["type"]=="indice") {
            $sq1="SELECT Indice FROM Question WHERE id='".$_POST['selection']."'";
            if($result = mysqli_query($link, $sq1)){
                while($ligne = mysqli_fetch_assoc($result)){
                    $ind=$ligne["Indice"];
                    echo "<option>".utf8_encode($ind)."</option>";
                }
            }
        }

Discussions similaires

  1. [SAX] Problème de récupération d'une valeur dans un attribut d'une balise
    Par Antheadousa dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 10/01/2012, 23h29
  2. [CR 10] Problème de récupération d'une valeur de sous-état
    Par lolo6413 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 12/09/2010, 11h17
  3. Problème de récupération d'une valeur
    Par EternelF dans le forum VB.NET
    Réponses: 4
    Dernier message: 15/06/2009, 13h20
  4. [MySQL] problème de récupération d'une valeur
    Par Larffas dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/10/2007, 15h15
  5. [AJAX] Récupération d'une valeur en retour d'un php
    Par lodan dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/02/2007, 21h18

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