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 :

[AJAX] AJAX - ID dans une boucle


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut [AJAX] AJAX - ID dans une boucle
    Bonjour,
    je débarque dans le monde "d'ajax", m'y étant penché seulement depuis hier et je ne trouve pas de solution à mon problème.

    Ce que je veux faire: dans mon fichier index.php je fait apparaitre une liste de fichier (selectionné ds ma bdd) qui lorsque je click sur leur nom doit afficher une description correspondante dans une div.

    Mon probleme : est que je fait apparaitre cette liste de fichier avec une boucle while (voir ci dessous ) et donc mes fichiers ont tous le même id (grrr) donc derrière je ne peux pas sélectionner la description correspondant a UN fichier étant donné qu'ils ont tous le même id :/
    bref, je buche la dessus depuis qque heure deja donc si qqu'un comprend mon problème et a un moyen quelconque pour le resoudre, je prend =)


    index.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
    <div class="fichier">
    <div class="titre-fichier">Fichiers en ligne </div>
     
    <?php
     
        $sql="Select * from fichier where fichier.nom='".$f."'";
     
        $result=mysql_query($sql); 
     
        while($row=mysql_fetch_array($result)){
     
        echo "<a onclick=\"description()\" id=\"test\" value=\"".$row['id']."\" href=\"#\">".$row['titre']."</a>";
     
        } 
     
    ?>
    </div>
     
    <div class="fichier">
    <div class="titre-fichier">Description </div>
     
        <div id="description-fichier">Cliquer sur le nom du fichier pour afficher sa descritpion.</div>
     
    </div>


    cote 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
    function description_js(){
     
     
        var xhr = getXhr();
     
        xhr.onreadystatechange = function(){
     
            if(xhr.readyState == 4 && xhr.status == 200){
     
                ladescription = xhr.responseText;
                document.getElementById('description-fichier').innerHTML = ladescription; 
     
            }
     
        }
     
     
        id = document.getElementById("test").getAttribute('value');
        alert("mon id "+id);
     
        xhr.open("GET", "../fichiers/description.php?id="+id, true);
        xhr.send(null);
     
    }

    traitement description.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
    <?php
    include("../include_php/connexion_bdd.inc.php");
     
    if(isset($_GET['id'])){
     
        $sql="Select * from fichier where fichier.id='".$_GET['id']."'";
        $result=mysql_query($sql);
     
            while($row=mysql_fetch_array($result)){
            echo "Descripton : ".$row['description'];
            } 
     
    }
    else{
    echo "marche pas";
    }

  2. #2
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    tu peux très bien utiliser la même valeur pour id et value, auquel cas tu pourras aller chercher ton id en js et y placer ce que tu veux.

    Juste pour te donner une orientation (vérifies la syntaxe):

    Dans ta boucle While :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a onclick="description(this)" id="' . $row['id'] . '" value="'. $row['id'] .'" href="#">' . $row['titre'] . '</a>';
    Il te faut aussi établir le lien entre le "this" et ta fonction ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function description_js(mon_id){
    ...
    }
    Et évites les id avec un "-", utilises plutôt l'underscore "_".

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ou simplement utiliser un incrément :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $i=0;
    while($row=mysql_fetch_array($result)){
     
        echo "<a onclick=\"description()\" id=\"test$i\" value=\"".$row['id']."\" href=\"#\">".$row['titre']."</a>";
        $i++;
        }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    tout d'abord merci pour vos réponse et merci a la personne qui a éditer mon message

    Citation Envoyé par Bovino Voir le message
    Ou simplement utiliser un incrément :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $i=0;
    while($row=mysql_fetch_array($result)){
     
        echo "<a onclick=\"description()\" id=\"test$i\" value=\"".$row['id']."\" href=\"#\">".$row['titre']."</a>";
        $i++;
        }

    j'ai penser a utiliser un incrément, ce qui nous donnerais un id bien "unique" mais je ne vois pas comment le traiter du coté js pour récupérer cet id lorsque je clique sur le nom correspondant.

    En effet, lorsque je click sur le nom d'un fichier pour obtenir sa description, j'ai la ligne de code suivante qui fait le traitement coté js:
    id =document.getElementById("test");"
    comment faire en sorte de mettre le bon id a la place de document.getElementById("test");" coté js vu que du coté php, les id change tt le tps avec l'incrément ? je vois pas comment faire la correspondance avec cette méthode que tu me propose oO ?? enfin, je sais pas si j'arrive a me faire comprendre ^^


    hornetbzz, n'ayant pas eu le temps aujourd'hui de me pencher sur mon code (journée très chargé), je m'y attellerais des demain

    ps: je mettrais des underscore a l'avenir

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut

    La réponse a déjà été donnée...
    Citation Envoyé par hornetbzz Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a onclick="description(this)" id="' . $row['id'] . '" value="'. $row['id'] .'" href="#">' . $row['titre'] . '</a>';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function description_js(mon_id){
    ...
    id = this.id;
    }
    Dernière chose, à donner à tes variables des mots clés de JavaScript (par exemple id qui représente une propriété des éléments HTML), tu t'exposes à des problèmes
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    Citation Envoyé par Bovino Voir le message

    La réponse a déjà été donnée...

    Dernière chose, à donner à tes variables des mots clés de JavaScript (par exemple id qui représente une propriété des éléments HTML), tu t'exposes à des problèmes

    je ferais attention pour mes variables la prochaine fois, merci du conseil également =)

    par contre, en passant juste this dans l'apelle de la fonction js, ca ne marche pas, je dois mettre this.id comme ceci:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
     echo '<a id="' . $row['id'] .'" onclick="description_js(this.id)" href="#">' . $row['titre'] . '</a>';

    et coté js cela fonctionne bien ensuite:
    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
     
    function description_js(mon_id){  	
     
            var xhr = getXhr();	        
            xhr.onreadystatechange = function(){     
                if(xhr.readyState == 4 && xhr.status == 200){  
                    ladescription = xhr.responseText;			// xhr recupere les donnes traiter par script php    		   	
                    document.getElementById('description-fichier').innerHTML = ladescription;   // On se sert de innerHTML pour rajouter la description au niveau de l'id	  
          		}
            } 
    		alert("id : "+mon_id);
     
     
    		xhr.open("GET", "../fichiers/description.php?id="+mon_id, true);
    		xhr.send(null); 
     
        }
    c'était assez simple finalement ^^" mais je ne suis pas très fort en JS ^^

    problème résolus, MERCI =)

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Arf... effectivement, comme je te l'avais donné, le this n'était pas le bon

    Ta solution est bonne, sinon, dans celle que je t'ai proposée, il suffit de remplacer this.id par mon_id.id
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/11/2011, 12h04
  2. [AJAX - PHP] Lancer des requêtes dans une boucle
    Par Psycadi dans le forum AJAX
    Réponses: 12
    Dernier message: 01/07/2010, 16h05
  3. [AJAX] propriété dynamique perdue dans une boucle FOR
    Par spidflinch dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/02/2009, 14h01
  4. Réponses: 3
    Dernier message: 25/11/2008, 17h01
  5. [AJAX] variable de fonction dans une boucle
    Par Hurin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/06/2008, 09h51

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