Probleme message sélection zone de liste deroulante

Signaler
Messages postés
86
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
17 avril 2013
-
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
-
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

3 réponses

Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
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.
Messages postés
86
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
17 avril 2013

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


Aurélie
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
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.