par
Tximiti » 12 juin 2007, 22:27
Bonjour,
C'est la première fois que je poste dans un forum, étant novice en PHP, j'espère que vous serez indulgents vis-à-vis de mon code. Si j'effectue quelque chose en désaccord avec le forum merci de me le signaler.
J'ai voulu créer trois listes déroulantes dépendantes, dans un premier temps je me suis aidée du tutorial de Cyrano :
http://www.phpfrance.com/forums/voir_sujet-4562.php, qui est très bien fait avec l'explication des 3 possibilités, mais comme je n'arrivais pas à l'adapter j'ai pris le code de Kimble :
http://www.phpfrance.com/forums/viewtop ... 9roulantes.
Cependant les valeurs de ma 3ème liste n'apparaissent pas...Honte à moi cela fait près d'une semaine et demi que je suis dessus
Embarassed. J'ai fait le choix que tout soit en php car je risque d'avoir beaucoup de données et mon serveur semble ne pas supporter l'AJAX...
J'ai affiché mes requêtes, mais il n'y a aucune erreur, j'ai vérifié plusieurs fois le nom de mes tables et ce n'est pas cela non plus. Je ne comprends pas d'où cela peut venir, quelqu'un peut-il m'aguiller dans mes recherches, je ne sais plus par où chercher...Merci d'avance !
P.S : Si vous le désirez je peux vous donner ma base de données car pour le moment je fais encore des tests en local.
<?php
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "agi";
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
* car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = mysql_pconnect($serveur, $admin, $mdp);
$choixbase = mysql_select_db($base, $connexion);
// case 'modele_forma':
/* Rechercher les formations ainsi que leur date et lieu*/
?>
<fieldset>
<legend><strong>Rechercher les formations ainsi que leur date et lieu</strong></legend>
<br />
<table>
<tr>
<?php
/* On récupère si elle existe la valeur de la formation envoyée par le formulaire */
/* On récupère si elle existe la valeur de la date de formation envoyée par le formulaire */
/* On récupère si elle existe la valeur du lieu de formation envoyé par le formulaire */
$formation_choisie = isset($_POST['formations'])?$_POST['formations']:null;
$date_choisie = isset($_POST['date_formation'])?$_POST['date_formation']:null;
$lieu_choisi = isset($_POST['lieu_formation'])?$_POST['lieu_formation']:null;
if(isset($_POST['ok']) && isset($_POST['formations']) && $_POST['formations'] && isset($_POST['date_formation']) && $_POST['date_formation'] && isset($_POST['lieu_formation']) && $_POST['lieu_formation'] != "")
{
?>
<?php
}
/*Création de la requête pour afficher les formations*/
/*********************************************************************************/
{
$sql1 = "SELECT id_formations, nom_formations, ref_formations
FROM formation
ORDER BY id_formations";
$rech_formations = mysql_query($sql1);
/* test du chemin de la requete mise en silence */
echo $sql1;//
$code_formation = array();
$nom_formation = array();
/* On active un compteur pour les formations */
$nb_formations = 0;
if($rech_formations != false)
{
while($ligne = mysql_fetch_assoc($rech_formations))
{
array_push($code_formation, $ligne['id_formations']);
array_push($nom_formation, $ligne['nom_formations']);
/* On incrémente le compteur sur les formations */
$nb_formations++;
}
}
?>
<form action="<?php echo "#"; ?>" method="post" id="chgdept">
<?php
echo "<center>";
/*Liste déroulante des formations*/
?>
<td><select name="formations" id="forma" onChange="document.forms['chgdept'].submit();">
<option value="-1">- - - Choisissez une formation - - -</option>
<?php
for($i = 0; $i < $nb_formations; $i++)
{
?>
<option value="<?php echo($code_formation[$i]); ?>"<?php echo((isset($formation_choisie) && $formation_choisie == $code_formation[$i])?" selected=\"selected\"":null); ?>><?php echo($nom_formation[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_formations);
/*********************************************************************************/
/* On commence par vérifier si on a envoyé un numéro de date de formation et le cas échéant s'il est différent de -1 */
if(isset($formation_choisie) && $formation_choisie != -1)
{
/* Création de la requête pour avoir les dates de cette formation */
$sql2 = "SELECT date_date
FROM date_formations
WHERE id_formations = ". $formation_choisie ."
ORDER BY id_date";
{
$rech_date = mysql_query($sql2);
/*Test d'affichage du chemin de la requete*/
echo $sql2;//
/* Un petit compteur pour les formations */
$nb_date = 0;
/* On crée 1 tableau pour les formations */
// $code_date = array();
$nom_date = array();
/* On va mettre les numéros et formations dans les deux tableaux */
while($ligne_date = mysql_fetch_assoc($rech_date))
{
/* Ici j'ai dévalidé l'affichage de l'id_vente dans les formations*/
//array_push($code_date, $ligne_date['id_date']);
array_push($nom_date, $ligne_date['date_date']);
$nb_date++;
}
/* Maintenant on peut construire la liste déroulante des surfaces*/
?>
<select name="date_formation" id="date_forma" onChange="document.forms['chgdept'].submit();">
<option value="-1">---Choisissez la date---</option>
<?php
for($date = 0; $date<$nb_date; $date++)
{
?>
<option value="<?php echo($nom_date[$date]); ?>"<?php echo((isset($date_choisie) && $date_choisie == $nom_date[$date])?" selected=\"selected\"":null); ?>><?php echo($nom_date[$date]); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_date);
}
/*********************************************************************************/
/* On commence par vérifier si on a envoyé un numéro de date d'une formation et le cas échéant s'il est différent de -1 */
if(isset($date_choisie))
{
/* Création de la requête pour afficher les dates de la formation choisie */
$sql3 = "SELECT lieu_date
FROM date_formations
WHERE id_formations = ". $formation_choisie ."
AND date_date = ". $date_choisie ."
ORDER BY lieu_date ";
{
$rech_lieu = mysql_query($sql3);
/*Test d'affichage du chemin de la requete*/
echo $sql3;/**/
/* Un petit compteur pour les lieu_formations */
$nb_lieu = 0;
/* On crée un tableau pour les lieu_formations */
//$code_lieu = array();
$nom_lieu = array(); // nom du lieu
//J'ai dévalidé :$id_lieu = array();
/* On va mettre les lieux dans un tableau */
while($ligne_lieu = mysql_fetch_assoc($rech_lieu))
{
//J'ai dévalidé : array_push($code_lieu, $ligne_lieu['id_date']);
array_push($nom_lieu, $ligne_lieu['lieu_date']);
//J'ai dévalidé :array_push($id_lieu, $ligne_lieu['id_date']);
$nb_lieu++;
}
/* Maintenant on peut construire la liste déroulante des lieu_formations */
?>
<select name="lieu_formation" id="lieu_forma" onchange="document.forms['chgdept'].submit();">
<option value="-1">---Choisissez le lieu---</option>
<?php
for($lieu = 0; $lieu<$nb_lieu; $lieu++)
{
//mise en place de urldecode ?>
<option value="<?php echo urlencode($nom_lieu[$lieu]); ?>"<?php echo((isset($lieu_choisi) && $lieu_choisi == $nom_lieu[$lieu])?" selected=\"selected\"":null); ?>><?php echo urldecode($nom_lieu[$lieu]); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_lieu);
}
/*********************************************************************************/
if(isset($formation_choisie))
if(isset($date_choisie))
if(isset($lieu_choisi))
{
//mise en place de urlencode ?>
<input type="button" name="ok" class="bouton" value="Envoyer" onClick="window.navigate('index.php?liste=recherche_modele_forma_lieu_formation&choix=modele_forma&formations=<?php echo $formation_choisie; ?>&date_formation=<?php echo $date_choisie; ?>&lieu_formation=<?php echo urlencode($lieu_choisi);?>')" >
<? } ?> </td>
</form>
<?php
} ?>
</tr>
</table>
<br />
</fieldset>
<?php
//break; ?>

Bonjour,
C'est la première fois que je poste dans un forum, étant novice en PHP, j'espère que vous serez indulgents vis-à-vis de mon code. Si j'effectue quelque chose en désaccord avec le forum merci de me le signaler.
J'ai voulu créer trois listes déroulantes dépendantes, dans un premier temps je me suis aidée du tutorial de Cyrano : http://www.phpfrance.com/forums/voir_sujet-4562.php, qui est très bien fait avec l'explication des 3 possibilités, mais comme je n'arrivais pas à l'adapter j'ai pris le code de Kimble : http://www.phpfrance.com/forums/viewtopic.php?t=22880&highlight=listes+d%E9roulantes.
Cependant les valeurs de ma 3ème liste n'apparaissent pas...Honte à moi cela fait près d'une semaine et demi que je suis dessus
Embarassed. J'ai fait le choix que tout soit en php car je risque d'avoir beaucoup de données et mon serveur semble ne pas supporter l'AJAX...
J'ai affiché mes requêtes, mais il n'y a aucune erreur, j'ai vérifié plusieurs fois le nom de mes tables et ce n'est pas cela non plus. Je ne comprends pas d'où cela peut venir, quelqu'un peut-il m'aguiller dans mes recherches, je ne sais plus par où chercher...Merci d'avance !
P.S : Si vous le désirez je peux vous donner ma base de données car pour le moment je fais encore des tests en local.
[php]
<?php
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "agi";
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
* car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = mysql_pconnect($serveur, $admin, $mdp);
$choixbase = mysql_select_db($base, $connexion);
// case 'modele_forma':
/* Rechercher les formations ainsi que leur date et lieu*/
?>
<fieldset>
<legend><strong>Rechercher les formations ainsi que leur date et lieu</strong></legend>
<br />
<table>
<tr>
<?php
/* On récupère si elle existe la valeur de la formation envoyée par le formulaire */
/* On récupère si elle existe la valeur de la date de formation envoyée par le formulaire */
/* On récupère si elle existe la valeur du lieu de formation envoyé par le formulaire */
$formation_choisie = isset($_POST['formations'])?$_POST['formations']:null;
$date_choisie = isset($_POST['date_formation'])?$_POST['date_formation']:null;
$lieu_choisi = isset($_POST['lieu_formation'])?$_POST['lieu_formation']:null;
if(isset($_POST['ok']) && isset($_POST['formations']) && $_POST['formations'] && isset($_POST['date_formation']) && $_POST['date_formation'] && isset($_POST['lieu_formation']) && $_POST['lieu_formation'] != "")
{
?>
<?php
}
/*Création de la requête pour afficher les formations*/
/*********************************************************************************/
{
$sql1 = "SELECT id_formations, nom_formations, ref_formations
FROM formation
ORDER BY id_formations";
$rech_formations = mysql_query($sql1);
/* test du chemin de la requete mise en silence */
echo $sql1;//
$code_formation = array();
$nom_formation = array();
/* On active un compteur pour les formations */
$nb_formations = 0;
if($rech_formations != false)
{
while($ligne = mysql_fetch_assoc($rech_formations))
{
array_push($code_formation, $ligne['id_formations']);
array_push($nom_formation, $ligne['nom_formations']);
/* On incrémente le compteur sur les formations */
$nb_formations++;
}
}
?>
<form action="<?php echo "#"; ?>" method="post" id="chgdept">
<?php
echo "<center>";
/*Liste déroulante des formations*/
?>
<td><select name="formations" id="forma" onChange="document.forms['chgdept'].submit();">
<option value="-1">- - - Choisissez une formation - - -</option>
<?php
for($i = 0; $i < $nb_formations; $i++)
{
?>
<option value="<?php echo($code_formation[$i]); ?>"<?php echo((isset($formation_choisie) && $formation_choisie == $code_formation[$i])?" selected=\"selected\"":null); ?>><?php echo($nom_formation[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_formations);
/*********************************************************************************/
/* On commence par vérifier si on a envoyé un numéro de date de formation et le cas échéant s'il est différent de -1 */
if(isset($formation_choisie) && $formation_choisie != -1)
{
/* Création de la requête pour avoir les dates de cette formation */
$sql2 = "SELECT date_date
FROM date_formations
WHERE id_formations = ". $formation_choisie ."
ORDER BY id_date";
{
$rech_date = mysql_query($sql2);
/*Test d'affichage du chemin de la requete*/
echo $sql2;//
/* Un petit compteur pour les formations */
$nb_date = 0;
/* On crée 1 tableau pour les formations */
// $code_date = array();
$nom_date = array();
/* On va mettre les numéros et formations dans les deux tableaux */
while($ligne_date = mysql_fetch_assoc($rech_date))
{
/* Ici j'ai dévalidé l'affichage de l'id_vente dans les formations*/
//array_push($code_date, $ligne_date['id_date']);
array_push($nom_date, $ligne_date['date_date']);
$nb_date++;
}
/* Maintenant on peut construire la liste déroulante des surfaces*/
?>
<select name="date_formation" id="date_forma" onChange="document.forms['chgdept'].submit();">
<option value="-1">---Choisissez la date---</option>
<?php
for($date = 0; $date<$nb_date; $date++)
{
?>
<option value="<?php echo($nom_date[$date]); ?>"<?php echo((isset($date_choisie) && $date_choisie == $nom_date[$date])?" selected=\"selected\"":null); ?>><?php echo($nom_date[$date]); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_date);
}
/*********************************************************************************/
/* On commence par vérifier si on a envoyé un numéro de date d'une formation et le cas échéant s'il est différent de -1 */
if(isset($date_choisie))
{
/* Création de la requête pour afficher les dates de la formation choisie */
$sql3 = "SELECT lieu_date
FROM date_formations
WHERE id_formations = ". $formation_choisie ."
AND date_date = ". $date_choisie ."
ORDER BY lieu_date ";
{
$rech_lieu = mysql_query($sql3);
/*Test d'affichage du chemin de la requete*/
echo $sql3;/**/
/* Un petit compteur pour les lieu_formations */
$nb_lieu = 0;
/* On crée un tableau pour les lieu_formations */
//$code_lieu = array();
$nom_lieu = array(); // nom du lieu
//J'ai dévalidé :$id_lieu = array();
/* On va mettre les lieux dans un tableau */
while($ligne_lieu = mysql_fetch_assoc($rech_lieu))
{
//J'ai dévalidé : array_push($code_lieu, $ligne_lieu['id_date']);
array_push($nom_lieu, $ligne_lieu['lieu_date']);
//J'ai dévalidé :array_push($id_lieu, $ligne_lieu['id_date']);
$nb_lieu++;
}
/* Maintenant on peut construire la liste déroulante des lieu_formations */
?>
<select name="lieu_formation" id="lieu_forma" onchange="document.forms['chgdept'].submit();">
<option value="-1">---Choisissez le lieu---</option>
<?php
for($lieu = 0; $lieu<$nb_lieu; $lieu++)
{
//mise en place de urldecode ?>
<option value="<?php echo urlencode($nom_lieu[$lieu]); ?>"<?php echo((isset($lieu_choisi) && $lieu_choisi == $nom_lieu[$lieu])?" selected=\"selected\"":null); ?>><?php echo urldecode($nom_lieu[$lieu]); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_lieu);
}
/*********************************************************************************/
if(isset($formation_choisie))
if(isset($date_choisie))
if(isset($lieu_choisi))
{
//mise en place de urlencode ?>
<input type="button" name="ok" class="bouton" value="Envoyer" onClick="window.navigate('index.php?liste=recherche_modele_forma_lieu_formation&choix=modele_forma&formations=<?php echo $formation_choisie; ?>&date_formation=<?php echo $date_choisie; ?>&lieu_formation=<?php echo urlencode($lieu_choisi);?>')" >
<? } ?> </td>
</form>
<?php
} ?>
</tr>
</table>
<br />
</fieldset>
<?php
//break; ?>
[/php] :oops: