Listes liées déroulante
Mikesunshine
Messages postés
11
Statut
Membre
-
miramaze Messages postés 1429 Date d'inscription Statut Contributeur Dernière intervention -
miramaze Messages postés 1429 Date d'inscription Statut Contributeur Dernière intervention -
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);
?>
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
-
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 donnerSELECT * FROM TABLE ORDER BY NOMWHERE DERNIER=...
De plus, la clause WHERE doit obligatoirement être avant ORDER BY -
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. -
-
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 ? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
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; ?>
-