[AJAX] Formulaire avec deux listes dynamiques liées
Bonjour à tous,
Je suis confronté un un problème assez courant me semble t il mais je ne trouve pas de solution me convenant.
Dans un formulaire Php, je souhaite intégré deux listes provenant de ma BDD.
Le choix de la première liste définissant les choix possible de la seconde:
Exemple:
Liste 1: PAYS Liste 2: Ville.
Je crois que ceci ne peut être réaliser directement par PHP, mais qu'il faille passer par du javascript.
J'ai trouver alors ce code:
Code:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
<SCRIPT LANGUAGE="JavaScript">
function ModifierListe(code_ville)
{
lg = document.MonFormulaire.ListeVille.length;
// ON VIDE LA LISTE DES VILLES
for (i = lg - 1; i >= 0; i--)
{
document.MonFormulaire.ListeVille.options[i] = null;
}
code_pays = document.MonFormulaire.ListePays.selectedIndex;
<?php
// CONNEXION A LA BASE DE DONNEES
$id_connexion = mysql_connect("localhost","root","");
mysql_select_db("exercice") or die("Could not select database");
$sql = "SELECT code FROM demo_pays ORDER BY code";
$resultat = mysql_query($sql) or die("Query failed");
// Génération des Villes par Pays
$max_lignes = 0;
$option_max = '';
while ($enr = mysql_fetch_array($resultat)) {
$sql = "SELECT code, ville FROM demo_ville WHERE code_pays=$enr[0] ORDER BY ville";
$resultat2 = mysql_query($sql) or die("Query failed");
echo " if (document.MonFormulaire.ListePays.options[code_pays].value == ".$enr[0].") {\n";
echo " document.MonFormulaire.ListeVille.length = ".(mysql_num_rows($resultat2)).";\n";
$cpt = 0;
while ($enr2 = mysql_fetch_array($resultat2)) {
echo " document.MonFormulaire.ListeVille.options[".$cpt."].value = ".$enr2[0].";\n";
echo " document.MonFormulaire.ListeVille.options[".$cpt."].text = \"".$enr2[1]."\";\n";
echo " if (code_ville== ".$enr2[0].") document.MonFormulaire.ListeVille.options[".$cpt."].selected = true;\n";
$cpt++;
if ($cpt > $max_lignes) $max_lignes = $cpt;
if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1];
}
echo " }\n";
}
?>
}
</SCRIPT>
<?php
// ----------------------------------------------------------------------------
// LISTE DES PAYS
// ----------------------------------------------------------------------------
$sql = "SELECT code, pays FROM demo_pays ORDER BY pays";
$resultat = mysql_query($sql) or die("Query failed");
echo "<FORM METHOD=POST NAME='MonFormulaire' action='".$_SERVER['PHP_SELF']."' >";
echo "<BR> PAYS : ";
echo " <SELECT NAME='ListePays' onChange='ModifierListe(-1)'>\n";
if (!isset($ListePays)) $ListePays = - 1;
while ($enr = mysql_fetch_array($resultat)) {
echo "<OPTION VALUE='".$enr[0]."'";
if ($ListePays == $enr[0]) echo " SELECTED";
echo ">".htmlspecialchars($enr[1])."</OPTION>\n";
}
echo "</SELECT> \n";
// ----------------------------------------------------------------------------
// LISTE DES VILLES
// ----------------------------------------------------------------------------
echo " VILLE : ";
echo " <SELECT NAME='ListeVille'>\n";
for ($cpt = 0; $cpt < $max_lignes; $cpt++)
echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n";
echo "</SELECT> \n";
if (!isset($ListeVille)) $ListeVille = -1;
echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$ListeVille.");\n</SCRIPT>\n";
// ----------------------------------------------------------------------------
echo "<br><br>";
echo "<INPUT TYPE='submit' VALUE='Valider'>\n";
echo "</FORM>";
echo "<br><br>";
// ----------------------------------------------------------------------------
// Résultats des sélections
// ----------------------------------------------------------------------------
if (isset($_POST['ListePays']) && $_POST['ListePays'] != "") {
$sql = "SELECT pays FROM demo_pays WHERE code='".$_POST['ListePays']."'";
$resultat = mysql_query($sql) or die("Query failed");
$enr = @mysql_fetch_array($resultat);
echo $enr[0];
echo "<br />";
}
if (isset($_POST['ListeVille']) && $_POST['ListeVille'] != "") {
$sql = "SELECT ville FROM demo_ville WHERE code='".$_POST['ListeVille']."'";
$resultat = mysql_query($sql) or die("Query failed");
$enr = @mysql_fetch_array($resultat);
echo $enr[0];
}
?> |
:yaisse2: Mon problème est qu'il faut cliquer sur un bouton de validation..?
Et je préférerais qu'il n'y ait pas besoin, mais dans ce cas comment puis je récupérer, la valeur de mes listes?
Merci d'avance, à ceux qui essayeront de m'aider.
Bye
quelqu'un pourrais m'aider?
Je pense pas avoir trouver ma réponse?
J'ai regardé les liens indiquée, car je souhaite intégrée, c'est liste dans un formulaire complet.
Donc j'ai bien trouvé mon script que j'ai mis plus haut, et que j'ai intégré au reste de mon scripte, mais le problème c'est que j'arrive pas à récupérer, les valeurs des listes.
Désolé je suis débutant, et on m'a déjà signaler lors d'autre post, que içi c'etait plus orienté pro.
Peut être quelqu'un connaitrais t il un forum, ou je pourrais trouver mes réponse?