Listes deroulantes

xabivalencia Messages postés 34 Date d'inscription jeudi 14 octobre 2004 Statut Membre Dernière intervention 23 juin 2005 - 2 nov. 2004 à 11:51
xabivalencia Messages postés 34 Date d'inscription jeudi 14 octobre 2004 Statut Membre Dernière intervention 23 juin 2005 - 3 nov. 2004 à 08:51
Bonjour,

Je voudrais creer deux liste deroulante mais liees.
Dans ma base, j ai un champs "nom" et un autre "prenom.
Exemple:
id|nom|prenom
1|momo|toto
2|momo|lolo
3|mumu|tutu
4|mumu|lulu
5|mimi|titi
6|mimi|lili

En effet, la premiere liste fait apparaitre par requete touts les noms de ma base et la segonde, selon le nom selectionne, va laisser apparaitre tous les prenoms qui lui correspondent.

Voila ce que j ai fait, ms ca plante:

<SCRIPT LANGUAGE= "JavaScript">

function ModifierListe(prenom) {

lg = document.frmDemo1.zlprenom.length;

// On vide la liste
for (i = lg - 1; i >= 0; i--) {
document.frmDemo1.zlprenom.options[i] = null;
}

nom = document.frmDemo1.zlnom.selectedIndex;

<?php
// Génération des Prenoms par Noms
$sql = "SELECT DISTINCT nom FROM datos ORDER BY nom";
$resultat = mysql_db_query($Base, $sql);

$max_lignes = 0;
$option_max = '';

while ($enr = mysql_fetch_array($resultat)) {

$sql = "SELECT prenom FROM datos WHERE nom='".$enr[0]."' ORDER BY prenom";
$resultat2 = mysql_db_query($Base, $sql);

echo " if (document.frmDemo1.zlnom.options[nom].value == ".$enr[0].") {\n";
echo " document.frmDemo1.zlprenom.length = ".(mysql_num_rows($resultat2)).";\n";
$cpt = 0;
while ($enr2 = mysql_fetch_array($resultat2)) {
echo " document.frmDemo1.zlprenom.options[".$cpt."].value = ".$enr2[0].";\n";
echo " document.frmDemo1.zlprenom.options[".$cpt."].text = "".$enr2[1]."";\n"; echo " if (code_item ".$enr2[0].") document.frmDemo1.zlprenom.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 Nom
// ----------------------------------------------------------------------------
$sql = "SELECT DISTINCT nom FROM datos ORDER BY nom";
$resultat = mysql_db_query($Base, $sql);

echo "<FORM METHOD=POST NAME='frmDemo1'>";
$zlnom=''; // il faut declarer cette variable sinon elle apparait indefinie en local!!
echo "
Nom ";
echo " <SELECT NAME ='zlnom' onChange= 'ModifierListe(-1)'>\n";
while ($enr = mysql_fetch_array($resultat)) {
echo "<OPTION VALUE='".$enr[0]."'";
if ($zlnom == $enr[0]) echo " SELECTED";
echo ">".htmlspecialchars($enr[1])."</OPTION>\n";
}
echo "</SELECT> \n";
// ----------------------------------------------------------------------------
// Liste Prenom
// ----------------------------------------------------------------------------
echo " Prenom ";
echo " <SELECT NAME ='zlprenom'>\n";
for ($cpt = 0; $cpt < $max_lignes; $cpt++)
echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n";
echo "</SELECT> \n";
if (!isset($zlprenom)) $zlprenom = -1;
echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$zlprenom.");\n</SCRIPT>\n";
// ----------------------------------------------------------------------------

echo "\n";

echo "</FORM>";
?>

Si qq un veut bien m aider....

Merci, Xabi

2 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
2 nov. 2004 à 21:39
ca plante sur quelle ligne ?? Et avec quel message d'erreur ?

Manu
0
xabivalencia Messages postés 34 Date d'inscription jeudi 14 octobre 2004 Statut Membre Dernière intervention 23 juin 2005
3 nov. 2004 à 08:51
bonjour,

Voila, j ai reecri mon code mais les select ne se chargent pas....
Je sais que c est un peu gavant de lire un code, sur quand c est pas le notre mais j ai mis bcp de commentaire pour que ca soit plus facil a comprendre....
<?php

// paramètres de connexion
$hostname_smoby =  "localhost"; // nom de votre serveur
$Base = "smoby"; // nom de votre base de données
$username_smoby = "root"; // nom d'utilisateur (root par défaut) !!! ATTENTION, en utilisant root, vos visiteurs on tout les droits sur la base
$password_smoby = ""; // mot de passe (aucun par défaut mais il est conseillé d'en mettre un)
$db = mysql_pconnect($hostname_smoby, $username_smoby, $password_smoby)

?>

<SCRIPT LANGUAGE="JavaScript">

function ModifierListe('liste_prenom') 
{
  	//calcul de la longueur de la liste prenom
lg = document.getElementById('liste_prenom').length;
  	// On vide la liste
  	for (i = lg - 1; i >= 0; i--) 
{
   		document.getElementById('liste_prenom').options[i] = null;
  		}
    <?php
//----------------------------------
// Génération des prenoms par noms
//-----------------------------------

//-- premiere etape: lister toutes les valeurs du champs nom de  la base
$sql = "SELECT DISTINCT nom FROM datos ORDER BY nom";
$resultat = mysql_db_query($Base, $sql);
while ($enr = mysql_fetch_array($resultat)) 
{
//-- deuxieme etpae: lister tous les prenoms  ou le nom est egale a celui
  		$sql  = "SELECT prenom FROM datos WHERE nom='".$enr[0]."' ORDER BY prenom";
  		$resultat2 = mysql_db_query($Base, $sql);
//-- si le nom selectionnné dans ma liste "nom" est egale a la valeur "nom"enregistree
//-- alors j affiche tous les prenoms correspondants dans ma "liste_prenom"
echo " 
if(document.getElementById('liste_nom').options[document.getElementById('liste_nom').selectedIndex].value ==  ".$enr[0].")";
  		{
while ($enr2 = mysql_fetch_array($resultat2)) 
{
$nblignes = mysql_numrows($resultat2); 
//nblignes correspond au nombres de valeurs prenoms correspondants au nom selectionné
for ($i=0;$i<$nblignes;$i++)
{ //on insere les prenoms contenu dans notre requete a la liste prenom 
 echo "    document.getElementById('liste_prenom').options[".$i."].value = ".$enr2[".$i."].";\n";
} // fin du for
} // fin du while
}// fin du if

  echo "  }\n";
  		} // fin du while

?>      
} // fin de la fonction 

</SCRIPT>

<?php

// ---------------------
// Liste Nom
// ---------------------
$sql = "SELECT DISTINCT nom FROM datos ORDER BY nom";
$resultat = mysql_db_query($Base, $sql);

echo "<FORM METHOD=POST NAME='liste_nom'>";
echo "
  Nom  ";
$nom ='';
echo " <SELECT NAME= 'nom' onChange='ModifierListe(-1)'>\n";
while ($enr = mysql_fetch_array($resultat)) {
  echo "<OPTION VALUE='".$enr[0]."'";
  if ($nom == $enr[0]) echo " SELECTED";
  echo "></OPTION>\n";
}
echo "</SELECT> \n";
echo "</FORM>";
// -----------------
// Liste prenom
// -----------------
echo "<FORM METHOD=POST NAME='liste_prenom'>";
echo "
  Prenom  ";
echo " <SELECT NAME ='prenom'>\n";
for ($cpt = 0; $cpt < $nblignes; $cpt++)
{
  echo "<OPTION VALUE='".$enr2[$cpt]."'";
  echo "></OPTION>\n";
}
echo "</SELECT> \n";

if (!isset($prenom)) $prenom = -1;
echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$prenom.");\n</SCRIPT>\n";
// ----------------------------------------------------------------------------
echo "</FORM>";

?> 



Si vous avez une idee....

merci

Xav
0
Rejoignez-nous