Probleme message sélection zone de liste deroulante
aureliemerlin
Messages postés82Date d'inscriptionjeudi 24 juin 2010StatutMembreDernière intervention17 avril 2013
-
18 juil. 2012 à 17:04
Lyle56
Messages postés240Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention19 juillet 2012
-
19 juil. 2012 à 11:06
Bonjour
Dans un formulaire, j'ai une zone de liste qui me permet d'afficher les régions et quand je sélectionne une région dans ma deuxiéme zone de liste les départements de la région s'affichent mais j'ai un message d'erreur et je ne sais pas pourquoi :
voici le code utilisé :
...
<?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 */
$sql1 = "SELECT `id_region`, `region`".
" FROM `region`".
" ORDER BY `id_region`";
$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_region']);
array_push($region, $ligne['region']);
/* 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="region" id="region" 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 `id_departement`, `departement`".
" FROM `departement`".
" WHERE `id_region` = ". $idr ."".
" ORDER BY `id_departement`;";
$rech_dept = mysql_query($sql2);
/* 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['id_departement']);
array_push($nom_dept, $ligne_dept['departement']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="departement" id="departement">
<?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);
?>
</fieldset>
</form>
...
le message est le suivant :
Notice: Undefined variable: rech_dept in C:\Program Files\EasyPHP-5.3.3\www\SITE\ADMIN\VERSIONT\crea\creadistributeurpays.php on line 265
Warning: mysql_free_result() expects parameter 1 to be resource, null given in C:\Program Files\EasyPHP-5.3.3\www\SITE\ADMIN\VERSIONT\crea\creadistributeurpays.php on line 265
dans le code ligne en rouge
je ne comprend pas pourquoi
quelqu'un à t il une idée ???
merci d'avance
Bonne journée
Aurélie
A voir également:
Probleme message sélection zone de liste deroulante
Lyle56
Messages postés240Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention19 juillet 20122 19 juil. 2012 à 10:27
Bonjour,
Je dirais que cela vient du fait que la libération de ton résultat ne se fait pas dans le même bloc que l'instanciation de ta variable...
essaye comme ceci :
<?php
/* Un petit coup de balai */
mysql_free_result($rech_dept);
}
?>
En passant : mélanger HTML et PHP c'est franchement pas propre...
Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
aureliemerlin
Messages postés82Date d'inscriptionjeudi 24 juin 2010StatutMembreDernière intervention17 avril 2013 19 juil. 2012 à 10:57
bonjour
merci pour votre réponse
j'ai essayé je n'ai plus le message d'erreur mais une fois ma région sélectionné il ne me propose pas ma deuxième liste pour afficher le choix du département
Lyle56
Messages postés240Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention19 juillet 20122 19 juil. 2012 à 11:06
Bonjour,
C'est tout à fait normal.
Il faut bien comprendre le fonctionnement de tout cela.
L'utilisateur va sur ta page Index.php, ton navigateur envoi une requête à ton serveur
Ton serveur génère un résultat avec les informations à sa disposition. Et envoi le résultat au navigateur.
Le navigateur affiche la page.
Si l'utilisateur modifie la page (Sélectionne une autre région de ta liste déroulante) le serveur ne le sais pas si personne ne lui donne les infos.
Pour qu'il remplisse la seconde liste, il faut qu'as un moment le navigateur dise au serveur "j'ai cette information dans la première liste, donne moi les résultats qui vont dans la seconde liste". Donc il faut passer par une méthode AJAX.
Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.