Bonjour,
Impossible de sortir de ce casse-tête depuis trop de jours.
Je souhaite créer dans un formulaire php un menu déroulant où on choisit un pays (dans une table d'une bdd) et en fonction de ce 1er choix s'affiche un second menu déroulant avec les départements concernés (aussi dans 1 table.
JuseN m'a aidé et transmis un code (je le remercie encore) que j'ai adapté à mon cas.
RIEN A FAIRE.
Si quelqu'un avait un peu de temps pour regarder mon code et voir ce qui ne va pas ça me sortirai d'un gros pétrin. Les "echo" sont des repères pour voir où ça ne va pas uniquement :
[code=php]<?php
$connexion = mysql_pconnect($serveur, $admin, $mdp);
echo '<p>====$connexion======</p>';
echo $connexion;
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
$sql1 = "SELECT `id_pays`, `nomPays`".
" FROM `PAYS`".
" ORDER BY `id_pays`";
// ICI C'EST LA PREMIERE REQUETE POUR SELECTIONNER UN PAYS DANS UNE FUTURE LISTE DEROULANTE
$rech_pays = mysql_query($sql1);
$id_pays = array();
$nomPays = array();
echo '<p>====$rech_pays======</p>';
echo $rech_pays;
echo '<p>-----$id_pays---</p>';
echo $id_pays;
echo '<p>-----$nomPays-----</p>';
echo $nomPays;
/* On active un compteur pour les régions */
$nb_pays = 0;
if($rech_pays != false)
{
while($ligne = mysql_fetch_assoc($rech_pays))
{
array_push($id_pays, $ligne['id_pays']);
array_push($nomPays, $ligne['nomPays']);
/* On incrémente de compteur */
$nb_pays++;
}
}
echo '<p>****avant form action ***</p>';
echo $nb_pays;
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdepartement">
<p>Sélectionnez un pays</p>
<select name="nomPays" id="nomPays" onchange="document.forms['chgdepartement'].submit();">
<option value="-1">- - - Choisissez un pays- - -</option>
<?php
echo '****avant boucle***<br />';
echo $nb_pays;
for($i = 0; $i < $nb_pays; $i++)
{
?>
<option value="<?php echo($id_pays[$i]); ?>"<?php echo((isset($idp) && $idp == $id_pays[$i])?" selected=\"selected\"":null); ?>><?php echo($nomPays[$i]); ?></option>
// ICI C'EST LA LISTE DEROULANTE, DANS VALUE ON A L'ID ET ENTRE LA BALISE OPTION ON A nomPays
<?php
}
?>
</select>
<?php
mysql_free_result($rech_pays);
/* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */
if(isset($idp) && $idp != -1)
{
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id_departement`, `nomDepartement`".
" FROM `DEPARTEMENT`".
" WHERE `id_pays` = ". $idp ."".
" ORDER BY `id_departement`;";
//ICI CEST LA DEUXIEME REQUETE POUR TROUVER UN DEPARTEMENT SUIVANT CE QUON A SELECTIONNER EN nomPays
// AVEC LA CLAUSE WHERE IDnomPays=$idr
if($connexion != false)
{
$rech_departement = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$id_departement = array();
$nomDepartement = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_departement = mysql_fetch_assoc($rech_departement))
{
array_push($id_departement, $ligne_departement['id_departement']);
array_push($nomDepartement, $ligne_departement['nomDepartement']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="nomDepartement" id="nomDepartement">
<?php
for($d = 0; $d<$nd; $d++) // BOUCLE POUR LA DEUXIEME LISTE DEROULANTE
{
?>
<option value="<?php echo($id_departement[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $id_departement[$d])?" selected=\"selected\"":null); ?><?php echo($nomDepartement[$d]." (". $id_departement[$d] .")"); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_departement);
}
?>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
}
else
{
/* Si on arrive là, c'est pas bon signe, il faut vérifier les
paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?> [<?php
$connexion = mysql_pconnect($serveur, $admin, $mdp);
echo '<p>====$connexion======</p>';
echo $connexion;
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
$sql1 = "SELECT `id_pays`, `nomPays`".
" FROM `PAYS`".
" ORDER BY `id_pays`";
// ICI C'EST LA PREMIERE REQUETE POUR SELECTIONNER UN PAYS DANS UNE FUTURE LISTE DEROULANTE
$rech_pays = mysql_query($sql1);
$id_pays = array();
$nomPays = array();
echo '<p>====$rech_pays======</p>';
echo $rech_pays;
echo '<p>-----$id_pays---</p>';
echo $id_pays;
echo '<p>-----$nomPays-----</p>';
echo $nomPays;
/* On active un compteur pour les régions */
$nb_pays = 0;
if($rech_pays != false)
{
while($ligne = mysql_fetch_assoc($rech_pays))
{
array_push($id_pays, $ligne['id_pays']);
array_push($nomPays, $ligne['nomPays']);
/* On incrémente de compteur */
$nb_pays++;
}
}
echo '<p>****avant form action ***</p>';
echo $nb_pays;
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdepartement">
<p>Sélectionnez un pays</p>
<select name="nomPays" id="nomPays" onchange="document.forms['chgdepartement'].submit();">
<option value="-1">- - - Choisissez un pays- - -</option>
<?php
echo '****avant boucle***<br />';
echo $nb_pays;
for($i = 0; $i < $nb_pays; $i++)
{
?>
<option value="<?php echo($id_pays[$i]); ?>"<?php echo((isset($idp) && $idp == $id_pays[$i])?" selected=\"selected\"":null); ?>><?php echo($nomPays[$i]); ?></option>
// ICI C'EST LA LISTE DEROULANTE, DANS VALUE ON A L'ID ET ENTRE LA BALISE OPTION ON A nomPays
<?php
}
?>
</select>
<?php
mysql_free_result($rech_pays);
/* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */
if(isset($idp) && $idp != -1)
{
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id_departement`, `nomDepartement`".
" FROM `DEPARTEMENT`".
" WHERE `id_pays` = ". $idp ."".
" ORDER BY `id_departement`;";
//ICI CEST LA DEUXIEME REQUETE POUR TROUVER UN DEPARTEMENT SUIVANT CE QUON A SELECTIONNER EN nomPays
// AVEC LA CLAUSE WHERE IDnomPays=$idr
if($connexion != false)
{
$rech_departement = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$id_departement = array();
$nomDepartement = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_departement = mysql_fetch_assoc($rech_departement))
{
array_push($id_departement, $ligne_departement['id_departement']);
array_push($nomDepartement, $ligne_departement['nomDepartement']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="nomDepartement" id="nomDepartement">
<?php
for($d = 0; $d<$nd; $d++) // BOUCLE POUR LA DEUXIEME LISTE DEROULANTE
{
?>
<option value="<?php echo($id_departement[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $id_departement[$d])?" selected=\"selected\"":null); ?><?php echo($nomDepartement[$d]." (". $id_departement[$d] .")"); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_departement);
}
?>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
}
else
{
/* Si on arrive là, c'est pas bon signe, il faut vérifier les
paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
Impossible de sortir de ce casse-tête depuis trop de jours.
Je souhaite créer dans un formulaire php un menu déroulant où on choisit un pays (dans une table d'une bdd) et en fonction de ce 1er choix s'affiche un second menu déroulant avec les départements concernés (aussi dans 1 table.
JuseN m'a aidé et transmis un code (je le remercie encore) que j'ai adapté à mon cas.
RIEN A FAIRE.
Si quelqu'un avait un peu de temps pour regarder mon code et voir ce qui ne va pas ça me sortirai d'un gros pétrin. Les "echo" sont des repères pour voir où ça ne va pas uniquement :
[code=php]<?php
$connexion = mysql_pconnect($serveur, $admin, $mdp);
echo '<p>====$connexion======</p>';
echo $connexion;
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
$sql1 = "SELECT `id_pays`, `nomPays`".
" FROM `PAYS`".
" ORDER BY `id_pays`";
// ICI C'EST LA PREMIERE REQUETE POUR SELECTIONNER UN PAYS DANS UNE FUTURE LISTE DEROULANTE
$rech_pays = mysql_query($sql1);
$id_pays = array();
$nomPays = array();
echo '<p>====$rech_pays======</p>';
echo $rech_pays;
echo '<p>-----$id_pays---</p>';
echo $id_pays;
echo '<p>-----$nomPays-----</p>';
echo $nomPays;
/* On active un compteur pour les régions */
$nb_pays = 0;
if($rech_pays != false)
{
while($ligne = mysql_fetch_assoc($rech_pays))
{
array_push($id_pays, $ligne['id_pays']);
array_push($nomPays, $ligne['nomPays']);
/* On incrémente de compteur */
$nb_pays++;
}
}
echo '<p>****avant form action ***</p>';
echo $nb_pays;
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdepartement">
<p>Sélectionnez un pays</p>
<select name="nomPays" id="nomPays" onchange="document.forms['chgdepartement'].submit();">
<option value="-1">- - - Choisissez un pays- - -</option>
<?php
echo '****avant boucle***<br />';
echo $nb_pays;
for($i = 0; $i < $nb_pays; $i++)
{
?>
<option value="<?php echo($id_pays[$i]); ?>"<?php echo((isset($idp) && $idp == $id_pays[$i])?" selected=\"selected\"":null); ?>><?php echo($nomPays[$i]); ?></option>
// ICI C'EST LA LISTE DEROULANTE, DANS VALUE ON A L'ID ET ENTRE LA BALISE OPTION ON A nomPays
<?php
}
?>
</select>
<?php
mysql_free_result($rech_pays);
/* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */
if(isset($idp) && $idp != -1)
{
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id_departement`, `nomDepartement`".
" FROM `DEPARTEMENT`".
" WHERE `id_pays` = ". $idp ."".
" ORDER BY `id_departement`;";
//ICI CEST LA DEUXIEME REQUETE POUR TROUVER UN DEPARTEMENT SUIVANT CE QUON A SELECTIONNER EN nomPays
// AVEC LA CLAUSE WHERE IDnomPays=$idr
if($connexion != false)
{
$rech_departement = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$id_departement = array();
$nomDepartement = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_departement = mysql_fetch_assoc($rech_departement))
{
array_push($id_departement, $ligne_departement['id_departement']);
array_push($nomDepartement, $ligne_departement['nomDepartement']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="nomDepartement" id="nomDepartement">
<?php
for($d = 0; $d<$nd; $d++) // BOUCLE POUR LA DEUXIEME LISTE DEROULANTE
{
?>
<option value="<?php echo($id_departement[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $id_departement[$d])?" selected=\"selected\"":null); ?><?php echo($nomDepartement[$d]." (". $id_departement[$d] .")"); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_departement);
}
?>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
}
else
{
/* Si on arrive là, c'est pas bon signe, il faut vérifier les
paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?> [<?php
$connexion = mysql_pconnect($serveur, $admin, $mdp);
echo '<p>====$connexion======</p>';
echo $connexion;
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
$sql1 = "SELECT `id_pays`, `nomPays`".
" FROM `PAYS`".
" ORDER BY `id_pays`";
// ICI C'EST LA PREMIERE REQUETE POUR SELECTIONNER UN PAYS DANS UNE FUTURE LISTE DEROULANTE
$rech_pays = mysql_query($sql1);
$id_pays = array();
$nomPays = array();
echo '<p>====$rech_pays======</p>';
echo $rech_pays;
echo '<p>-----$id_pays---</p>';
echo $id_pays;
echo '<p>-----$nomPays-----</p>';
echo $nomPays;
/* On active un compteur pour les régions */
$nb_pays = 0;
if($rech_pays != false)
{
while($ligne = mysql_fetch_assoc($rech_pays))
{
array_push($id_pays, $ligne['id_pays']);
array_push($nomPays, $ligne['nomPays']);
/* On incrémente de compteur */
$nb_pays++;
}
}
echo '<p>****avant form action ***</p>';
echo $nb_pays;
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdepartement">
<p>Sélectionnez un pays</p>
<select name="nomPays" id="nomPays" onchange="document.forms['chgdepartement'].submit();">
<option value="-1">- - - Choisissez un pays- - -</option>
<?php
echo '****avant boucle***<br />';
echo $nb_pays;
for($i = 0; $i < $nb_pays; $i++)
{
?>
<option value="<?php echo($id_pays[$i]); ?>"<?php echo((isset($idp) && $idp == $id_pays[$i])?" selected=\"selected\"":null); ?>><?php echo($nomPays[$i]); ?></option>
// ICI C'EST LA LISTE DEROULANTE, DANS VALUE ON A L'ID ET ENTRE LA BALISE OPTION ON A nomPays
<?php
}
?>
</select>
<?php
mysql_free_result($rech_pays);
/* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */
if(isset($idp) && $idp != -1)
{
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id_departement`, `nomDepartement`".
" FROM `DEPARTEMENT`".
" WHERE `id_pays` = ". $idp ."".
" ORDER BY `id_departement`;";
//ICI CEST LA DEUXIEME REQUETE POUR TROUVER UN DEPARTEMENT SUIVANT CE QUON A SELECTIONNER EN nomPays
// AVEC LA CLAUSE WHERE IDnomPays=$idr
if($connexion != false)
{
$rech_departement = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$id_departement = array();
$nomDepartement = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_departement = mysql_fetch_assoc($rech_departement))
{
array_push($id_departement, $ligne_departement['id_departement']);
array_push($nomDepartement, $ligne_departement['nomDepartement']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="nomDepartement" id="nomDepartement">
<?php
for($d = 0; $d<$nd; $d++) // BOUCLE POUR LA DEUXIEME LISTE DEROULANTE
{
?>
<option value="<?php echo($id_departement[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $id_departement[$d])?" selected=\"selected\"":null); ?><?php echo($nomDepartement[$d]." (". $id_departement[$d] .")"); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_departement);
}
?>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
}
else
{
/* Si on arrive là, c'est pas bon signe, il faut vérifier les
paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
<?php
$connexion = mysql_pconnect($serveur, $admin, $mdp);
echo '<p>====$connexion======</p>';
echo $connexion;
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
$sql1 = "SELECT `id_pays`, `nomPays`".
" FROM `PAYS`".
" ORDER BY `id_pays`";
// ICI C'EST LA PREMIERE REQUETE POUR SELECTIONNER UN PAYS DANS UNE FUTURE LISTE DEROULANTE
$rech_pays = mysql_query($sql1);
$id_pays = array();
$nomPays = array();
echo '<p>====$rech_pays======</p>';
echo $rech_pays;
echo '<p>-----$id_pays---</p>';
echo $id_pays;
echo '<p>-----$nomPays-----</p>';
echo $nomPays;
/* On active un compteur pour les régions */
$nb_pays = 0;
if($rech_pays != false)
{
while($ligne = mysql_fetch_assoc($rech_pays))
{
array_push($id_pays, $ligne['id_pays']);
array_push($nomPays, $ligne['nomPays']);
/* On incrémente de compteur */
$nb_pays++;
}
}
echo '<p>****avant form action ***</p>';
echo $nb_pays;
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdepartement">
<p>Sélectionnez un pays</p>
<select name="nomPays" id="nomPays" onchange="document.forms['chgdepartement'].submit();">
<option value="-1">- - - Choisissez un pays- - -</option>
<?php
echo '****avant boucle***<br />';
echo $nb_pays;
for($i = 0; $i < $nb_pays; $i++)
{
?>
<option value="<?php echo($id_pays[$i]); ?>"<?php echo((isset($idp) && $idp == $id_pays[$i])?" selected=\"selected\"":null); ?>><?php echo($nomPays[$i]); ?></option>
// ICI C'EST LA LISTE DEROULANTE, DANS VALUE ON A L'ID ET ENTRE LA BALISE OPTION ON A nomPays
<?php
}
?>
</select>
<?php
mysql_free_result($rech_pays);
/* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */
if(isset($idp) && $idp != -1)
{
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id_departement`, `nomDepartement`".
" FROM `DEPARTEMENT`".
" WHERE `id_pays` = ". $idp ."".
" ORDER BY `id_departement`;";
//ICI CEST LA DEUXIEME REQUETE POUR TROUVER UN DEPARTEMENT SUIVANT CE QUON A SELECTIONNER EN nomPays
// AVEC LA CLAUSE WHERE IDnomPays=$idr
if($connexion != false)
{
$rech_departement = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$id_departement = array();
$nomDepartement = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_departement = mysql_fetch_assoc($rech_departement))
{
array_push($id_departement, $ligne_departement['id_departement']);
array_push($nomDepartement, $ligne_departement['nomDepartement']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="nomDepartement" id="nomDepartement">
<?php
for($d = 0; $d<$nd; $d++) // BOUCLE POUR LA DEUXIEME LISTE DEROULANTE
{
?>
<option value="<?php echo($id_departement[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $id_departement[$d])?" selected=\"selected\"":null); ?><?php echo($nomDepartement[$d]." (". $id_departement[$d] .")"); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_departement);
}
?>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
}
else
{
/* Si on arrive là, c'est pas bon signe, il faut vérifier les
paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>