Formulaire PHP Dynamique

Résolu/Fermé
baudogu Messages postés 12 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 22 novembre 2007 - 21 nov. 2007 à 19:21
baudogu Messages postés 12 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 22 novembre 2007 - 22 nov. 2007 à 11:42
Bonjour à tous,

Je rencontre un soucis pour construire un formulaire PHP dynamique.

Il s'agit de deux listes déroulantes qui se suivent.
La deuxième liste est construire par un select qui devrait dépende du choix fait dans la première liste.
J'ai épuisé toutes les combinaisons possibles d'après mes connaissances, et n'arrive pas à réaliser le select de la deuxième liste.

Merci d'avance à ceux qui pourront me mettre sur une piste. C'est un procédé que je pense ré-utiliser souvent et qui doit être un grand classique en PHP - Mysql

Voici l'extrait du code utilisé:

//recherche du fournisseur - liste 1
echo("<td align=\"center\">\n");
echo("<SELECT name=\"saisie[0][vendor]\" id=\"saisie.vendor\" size=\"1\">\n");
echo("<OPTION selected value=\"\">                          </OPTION>\n");
//recherche de tous les fournisseurs
$requete = "select vendor_id,name from vendors order by name";
$result = mysql_query($requete);
if($result)
{
while($ref_cde = mysql_fetch_assoc($result))
{
//echo($ref_cde['vendor_id']."<br/>\n");
echo("<OPTION value=\"".$ref_cde['vendor_id']."\">".$ref_cde['name']."</OPTION>\n");
}
}
echo("</SELECT>\n");
echo("</td>\n");

//récupération du choix fait dans la première liste
$lignes = $_REQUEST['saisie'];
foreach($lignes as $identifiant => $ligne)
{
$vl_vendor_id = $ligne['vendor'];
}

echo("<td align=\"center\">\n");
//recherche des commandes fournisseur - liste 2
echo("<SELECT name=\"saisie[0][cde]\" id=\"saisie.cde\" size=\"1\">\n");
echo("<OPTION selected value=\"\">           </OPTION>\n");
//recherche de toutes les commandes de ce fournisseur pour ce destinataire
$requete = "select distinct order_id from order_item where vendor_id = $vl_vendor_id and consignee_id = '$_SESSION[consignee_id]' order by order_id";
$result = mysql_query($requete);
if($result)
{
while($ref_cde = mysql_fetch_assoc($result))
{
echo("<OPTION value=\"".$ref_cde['order_id']."\">".$ref_cde['order_id']."</OPTION>\n");
}
}
echo("</SELECT>\n");
echo("</td>\n");
A voir également:

3 réponses

baudogu Messages postés 12 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 22 novembre 2007 1
22 nov. 2007 à 11:19
Merci d'avance pour ton aide.

Effectivement, mon script n'apprécie pas ce code :

//récupération du choix fait dans la première liste
$lignes = $_REQUEST['saisie'];
foreach($lignes as $identifiant => $ligne)
{
$vl_vendor_id = $ligne['vendor'];
}

Je tente depuis hier de trouver une solution avec le javascript du style

return(document.getElementById('saisie.vendor').value.trim());

à la place du code php.

Mon objectif est bien de construire le contenu de ma deuxième liste en fonction du choix de ma première liste, même si je fais
un select * tant que le choix dans la première liste n'est pas fait.
1
Bonjour,
Je peux me tromper mais j'ai l'impression d'après le bout de code de ton message que tu as un problème de fond avec le php.

au niveau de ton commentaire "//récupération du choix fait dans la première liste ", tu as juste envoyé une liste de choix à ton visiteur, il n'a encore rien choisi du tout et ton script continue de s'exécuter et affiche ta deuxième liste, sauf qu'il te jette probablement une erreur sur la ligne $lignes = $_REQUEST['saisie'];

Peux-tu préciser ce qui se passe quand tu lances le script
0
baudogu Messages postés 12 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 22 novembre 2007 1
22 nov. 2007 à 11:42
Bonjour,

Merci pour ta réponse,
J'ai continué la discussion sans prendre la peine de te répondre directement.

Désolé.
0
baudogu Messages postés 12 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 22 novembre 2007 1
22 nov. 2007 à 11:35
Je pense que sur ma première liste, je dois inserer dans la basile <Select > un evenement javascript onchange=liste2()

qui aura pour tache de modifier le contenu de ma deuxième liste.

Je ne vois pas comment, mais cela semble une piste à explorer
0