Page 1 sur 1

Liste déroulante dynamique du FAQ

Posté : 13 août 2005, 14:03
par pingoo
Je viens d'utiliser le script php pour liste déroulante dynamique du FAQ, mais après l'avoir ajusté vulgèrement je n'arrive pas à afficher la deuxieme liste?
Voici le code :
					   <?php
					   // Paramètres de la Connexion à la base MYSQL
					   include("connexauto.php");
					   /* 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);
					   if($connexion != false)
					   {
    				   $choixbase = mysql_select_db($base, $connexion);
    				   $sql1 = "SELECT `id_cat`, `marques`".
    				   " FROM `marque_auto`".
    				   " ORDER BY `id_cat`";
    				   $rech_regions = mysql_query($sql1);
    				   $code_region = array();
    				   $region = array();
    				   /* On active un compteur pour les régions */
    				   $nb_regions = 0;
    				   if($rech_regions != false)
    				   {
        			   while($ligne = mysql_fetch_assoc($rech_regions))
        			   {
           			   array_push($code_region, $ligne['id_cat']);
            		   array_push($region, $ligne['marques']);

            		   /* On incrémente de compteur */
            		   $nb_regions++;
        			   }
                       }
                  	   ?>
				  	   <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
					   <fieldset style="border: 3px double #333399">
					   <legend>Sélectionnez une région</legend>
					   <select name="marques" id="marques" onchange="document.forms['chgdept'].submit();">
 					   <option value="-1">- - - Choisissez une région - - -</option>
    				   <?php
    				   for($i = 0; $i < $nb_regions; $i++)
    				   {
					   ?>
  					   <option value="<?php echo($code_region[$i]); ?>"<?php echo((isset($idr) && $idr == $code_region[$i])?" selected=\"selected\"":null); ?>><?php echo($region[$i]); ?></option>
					   <?php
    				   }
    				   ?>
					   </select>
    				   <?php
    				   mysql_free_result($rech_regions);
    				   /* 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($idr) && $idr != -1)
    				   {
        			   /* Cération de la requête pour avoir les départements de cette région */
        			   $sql2 = "SELECT `idcat`, `types`".
        			   " FROM `type_auto`".
        			   " WHERE `idcat` = ". $idr ."".
        			   " ORDER BY `id_scat`;";
        			   if($connexion != false)
        			   {
            		   $rech_dept = 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 */
            		   $code_dept = array();
            		   $nom_dept = array();
            		   /* On va mettre les numéros et noms des départements dans les deux tableaux */
           			   while($ligne_dept = mysql_fetch_assoc($rech_dept))
            		   {
               		   array_push($code_dept, $ligne_dept['idcat']);
                	   array_push($nom_dept, $ligne_dept['type_auto']);
                	   $nd++;
            		   }
            		   /* Maintenant on peut construire la liste déroulante */
            		   ?>
					   <select name="idcat" id="type_auto">
            		   <?php
            		   for($d = 0; $d<$nd; $d++)
            		   {
                	   ?>
  					   <option value="<?php echo($code_dept[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $code_dept[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option>
                	   <?php
            		   }
					   ?>
					   </select>
					   <?php
        			   }
        			   /* Un petit coup de balai */
        			   mysql_free_result($rech_dept);
    				   }
					   ?>
					   <br /><input type="submit" name="ok" id="ok" value="Envoyer" />
					   </fieldset>
					   </form>
					   <?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
					   }
					   ?>
Je ne trouve pas l'erreur que j'ai pu faire.
Merci pour votre aide

Posté : 13 août 2005, 14:15
par Cyrano
Et tu as quoi à la place : un message d'erreur ? SI oui, lequel.

Vérifie aussi ta requête, enfin les techniques élémentaires de débuggage : vérification des valeurs de variables, etc...

Posté : 13 août 2005, 14:22
par pingoo
Non rien aucune erreur, la première liste s'affiche bien mais la deuxième n'apparait pas lorsque je fait un choix. J'ai vérifié ma requête mais aucune erreur...ca devrait fonctionner.. :?:

Posté : 13 août 2005, 14:32
par Cyrano
Alors il doit y avoir une erreur JavaScript: as-tu vérifié avec la console JavaScript ? Si tu utilises Firefox, : Outils > Console JavaScript
Et tu auras éventuellement la liste des erruers. Au besoin s'il y a de nombreuses lignes, efface tout et recharge la page pour avoir juste les erreurs de la page en cours.

Posté : 13 août 2005, 14:47
par pingoo
Aucune erreur dans la console Javascript.
J'ai verifier ma requête encore une fois mais rien...

Posté : 13 août 2005, 15:04
par Cyrano
Fais afficher à l'écran le requête générée par la sélection d'un élément de la première liste avec un echo(). Copies cette requête et teste la directement dans ta base avec phpMyAdmin. Tu seras fixé, s'il y a une erreur là, tu le sauras tout de suite soit avec un message d'erreur soit parce qu'il manque un élément et tu n'as aucun résultat.

De toutes les manières, il manque forcément quelque chose quelque part.

Posté : 13 août 2005, 15:13
par pingoo
Je crois que je commence à voir ou le problème ce situe.
Aucun numéro de région n'est envoyé donc la requête ne peut être faite.
Maintenant reste à trouver pourquoi?

Posté : 13 août 2005, 16:03
par pingoo
J'ai trouvé mon erreur, j'avais pas déclaré la valeur $idr tout au départ.
Par contre j'ai un petit problème avec les formulaire.

Je déclare mon formulaire qui intègre le script avec le formulaire des listes déroulantes.

Code : Tout sélectionner

<form action="autre_page.php" method="POST" name="auto"> ...... <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept" name="test"> ...... <input type="submit" name="test" id="ok" value="Envoyer" /> </form> <input type="submit" name="auto" id="ok" value="Envoyer" /> </form>
Comment peut on faire pour envoyer les données sur une autre page?
Merci beaucoup pour votre script

Posté : 13 août 2005, 16:06
par Cyrano
On ne peut pas imbriquer deux formulaires l'un dans l'autre, c'est complètement invalide. Ce que tu peux faire, c'est avoir un autre formulaire qui se limiterait à un bouton de confirmation, mais à part et qui lui pointerait vers l'autre page. Hormis le bouton lui-même, tu peux avoir les données dans des champs cachés dans ce second formulaire, champs caché dont tu alimentes les valeurs dynamiquement lorsque le choix des listes déroulantes est envoyé..

Posté : 13 août 2005, 19:45
par pingoo
OK merci pour ton aide :)

Posté : 13 août 2005, 19:48
par Cyrano
[Résolu] :?:

Posté : 13 août 2005, 20:28
par pingoo
Non pas tout à fait je n'arrive toujours pas à envoyer les données correctement.
Voila comment je les ai envoyé :
<?php
				   echo "<input type=\"hidden\" name=\"test\" value=\"test\">\n";
				   echo "<input type=\"hidden\" name=\"marques\" value="?><?php if (isset($_POST['marques'])){echo $_POST['marques'];}">\n";
				   echo "<input type=\"hidden\" name=\"modele\" value=" ?><?php if (isset($_POST['modele'])){echo $_POST['modele'];}">\n";
				   ?>
mais il me mais l'erreur suivante :

Code : Tout sélectionner

Notice: Undefined index: marques in ....
Comment les transmettres correctement?
Merci

Posté : 13 août 2005, 20:36
par Cyrano
joyeux mélanges :-k
<input type="hidden" name="test" value="test">
<input type="hidden" name="marques" value="<?php echo (isset($_POST['marques'])) ? $_POST['marques'] : null; ?>">
<input type="hidden" name="modele" value="<?php echo (isset($_POST['modele'])) ? $_POST['modele'] : null; ?>">

Posté : 13 août 2005, 20:44
par pingoo
Ok maintenant ca fonctionne sans problème merci pour ton aide.
Bonne soirée
[Résolu]