Listes liées déroulante
Mikesunshine
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
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);
?>
A voir également:
- Listes liées déroulante
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Supprimer une liste déroulante excel - Forum Word
- Google sheet liste déroulante dynamique ✓ - Forum Google Docs
5 réponses
Bonjour
Je n'ai pas regardé en détail, mais tu as déjà deux problèmes dans ta requête :
Tu n'as pas prévu d'espace entre NOM et WHERE. Ça va donner
De plus, la clause WHERE doit obligatoirement être avant ORDER BY
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
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.
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.
Quelqu'un pourrait m'aider svp ?
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 ?
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
Oui c'est exactement cela :-)
Je suis parti d'une table utilisteur avec deux champs nom et prenom :
Le premier fichier
Le second pour l'ajax
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; ?>
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);