Listes liées déroulante

Fermé
Mikesunshine Messages postés 11 Date d'inscription dimanche 31 mai 2015 Statut Membre Dernière intervention 27 juin 2015 - 25 juin 2015 à 18:16
miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 - 27 juin 2015 à 22:34
Bonjour,

J'ai le code ci-dessous pour afficher une liste en PHP. Lorsque je sélectionne un élément, je souhaiterais que cela puisse alimenter la deuxième.

Mais comme ce code ne fonctionne pas, je fais appel aux génies ...

Merci d'avance pour votre aide,

Cordialement,

Michaël

<?php
$co=mysql_connect("xxxxxxxxx","xxxxxxxxx","xxxxxxxxx");
$dbnom="xxxxxxxxx";
$db=mysql_select_db($dbnom,$co);
$res=mysql_query("SELECT * FROM TABLE ORDER BY NOM",$co);
$max=@mysql_num_rows($res);
?>

<script type="text/javascript">

function xmlhttp()
{ var x;
try { x = new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) { try { x = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { try { x = new XMLHttpRequest(); }
catch (e) { x=false; }
}
}
return x;
}
function appel()
{ var xml = xmlhttp();
if(!xml)
{ alert("XmlHttpRequest non supporté"); }
else { xml.onreadystatechange = function()
{ if(xml.readyState==4)
{ var opt=xml.responseText.split("\t");
tb2.length=0;
for ( var n=1;n<opt.length;n++ )
{ tb2.length++;
tb2.options[tb2.length-1].text=opt[n];
}
}
}
xml.open("GET", "Ajax2.php?tbl2="+tb1.options[tb1.selectedIndex].text, true);
xml.send(null);
}
}


</script>
<select name="tb1" id="tb1"
size="1"
onchange='appel();'>
<?php
for ($nb=0;$nb<$max;$nb++)
{ $i=mysql_result($res,$nb,"NOM");
echo '<option>'.$i.'</option>';
}
?>
</select>
<select name="tb2" id="tb2"
size="1">
</select>

<?php
mysql_close($co);
?>

<?php
$co=mysql_connect("xxxxxxxxx","xxxxxxxxx","xxxxxxxxx");
$dbnom="xxxxxxxxx";
$db=mysql_select_db($dbnom,$co);
$rch="WHERE DERNIER='".$_GET["NOM"]."'";
$res=mysql_query("SELECT * FROM TABLE ORDER BY NOM" .$rch,$co);
$max=@mysql_num_rows($res);
$t="";
for ($nb=0;$nb<$max;$nb++)
{ $i=mysql_result($res,$nb,"NOM");
$t.="\t".$i;
}
echo $t;
mysql_close($co);
?>

5 réponses

Utilisateur anonyme
25 juin 2015 à 19:39
Bonjour

Je n'ai pas regardé en détail, mais tu as déjà deux problèmes dans ta requête :
$rch="WHERE DERNIER='".$_GET["NOM"]."'"; 
$res=mysql_query("SELECT * FROM TABLE ORDER BY NOM" .$rch,$co); 

Tu n'as pas prévu d'espace entre NOM et WHERE. Ça va donner
SELECT * FROM TABLE ORDER BY NOMWHERE DERNIER=...

De plus, la clause WHERE doit obligatoirement être avant ORDER BY
1
Mikesunshine Messages postés 11 Date d'inscription dimanche 31 mai 2015 Statut Membre Dernière intervention 27 juin 2015
26 juin 2015 à 09:49
Merci pour ta réponse,
J'ai apporté la modification ci dessous, mais le code ne fonctionne pas.
Vois tu autre chose stp ?

$rch="WHERE DERNIER='".$_GET["NOM"]."' ORDER BY NOM";
$res=mysql_query("SELECT * FROM TABLE " .$rch,$co);
0
Utilisateur anonyme
26 juin 2015 à 10:14
Justement, il y a une chose que je ne vois pas.
Tu utilises en javascript des variables tb1 et tb2, je ne vois pas où elles sont définies.
Je ne te demande pas ce qu'elle représentent, mais la ligne de code où elles sont initialisées.
0
Mikesunshine Messages postés 11 Date d'inscription dimanche 31 mai 2015 Statut Membre Dernière intervention 27 juin 2015
26 juin 2015 à 11:20
Désolé je n'ai pas compris.
Que dois je faire ?
0
Mikesunshine Messages postés 11 Date d'inscription dimanche 31 mai 2015 Statut Membre Dernière intervention 27 juin 2015
26 juin 2015 à 22:25
Quelqu'un pourrait m'aider svp ?
0
miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 92
26 juin 2015 à 23:07
Hello,
ça doit faire quoi tout ça. T'as un exemple concret ?
0
Mikesunshine Messages postés 11 Date d'inscription dimanche 31 mai 2015 Statut Membre Dernière intervention 27 juin 2015
27 juin 2015 à 00:18
J'ai une table avec deux colonnes.
Je voudrais dans mon Php avoir une liste reprenant les informations de la première colonne. Et quand je sélectionne un élément de la première colonne, cela affiche le résultat de la deuxième colonne.
0
miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 92
27 juin 2015 à 00:51
TABLE pour le nom de la table c'est pas bon, c'est un mot réservé.
Je comprends pas on doit récupérer une entrée pour l'afficher dans un menu déroulant ?

Par curiosité, c'est un exercie d'école ?
0
Mikesunshine Messages postés 11 Date d'inscription dimanche 31 mai 2015 Statut Membre Dernière intervention 27 juin 2015
27 juin 2015 à 19:48
TABLE est juste un exemple ... J'aurais pu mettre autre chose.
Non ce n'est pas un exercice d'école. Quoique la vie est une école.

Tu peux m'aider ?
0
miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 92
27 juin 2015 à 21:09
Ok d'accord. Donc a un menu déroulant qui a une liste de nom correspondant à une colonne d'une table, quand on sélectionne un nom, on affiche une entrée d'une autre colonne dans un menu déroulant ? C'est bien ça ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mikesunshine Messages postés 11 Date d'inscription dimanche 31 mai 2015 Statut Membre Dernière intervention 27 juin 2015
27 juin 2015 à 21:17
Oui c'est exactement cela :-)
0
miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 92
27 juin 2015 à 22:34
Je suis parti d'une table utilisteur avec deux champs nom et prenom :

Le premier fichier

<?php

$co=mysql_connect("localhost","root","root");
$dbnom="test";
$db=mysql_select_db($dbnom,$co);
$res=mysql_query("SELECT * FROM utilisateur ORDER BY NOM",$co);
$max=@mysql_num_rows($res);
?>

<script type="text/javascript">

 function xmlhttp()
 { var x;
     try { x = new ActiveXObject("Microsoft.XMLHTTP"); }
     catch (e) { try { x = new ActiveXObject("Msxml2.XMLHTTP"); }
         catch (e) { try { x = new XMLHttpRequest(); }
             catch (e) { x=false; }
         }
     }
     return x;
 }
 function appel()
 { var xml = xmlhttp();
     if(!xml)
     { alert("XmlHttpRequest non supporté"); }
     else { xml.onreadystatechange = function()
         { if(xml.readyState==4)
             {
                 document.getElementById("tb2").innerHTML = "<option>" + xml.responseText + "</option>";
             }
         }
         xml.open("GET", "trouver_prenom.php?nom="+tb1.options[tb1.selectedIndex].text, true);
         xml.send(null);
     }
 }


</script>
<select name="tb1" id="tb1"
        size="1"
        onchange='appel();'>
    <?php
    for ($nb=0;$nb<$max;$nb++)
    {
        $i = mysql_result($res,$nb,"NOM");
        echo '<option>'.$i.'</option>';
    }
    ?>
</select>
<select name="tb2" id="tb2"
        size="1">
</select>

<?php
mysql_close($co);
?>


Le second pour l'ajax

<?php

$co=mysql_connect("localhost","root","root");
$dbnom="test";
$db=mysql_select_db($dbnom,$co);
$res=mysql_query(sprintf("SELECT prenom FROM utilisateur where nom = '%s'", $_GET["nom"]),$co);
$max=@mysql_num_rows($res);
$nom = mysql_result($res,0);
mysql_close($co);

echo $nom;
?>
0