Bonjour à tous ,
Je viens de mettre le script suivant dans ma page PHP afin d'avoir 2 listes liées.
J'ai mis ceci avant <!DOCTYPE html PUBLIC...
<?php
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "centphzuone";
$idr = isset($_POST['libelle'])?$_POST['libelle']:null;
?>
et ceci dans le <Body >
<?php
if(isset($_POST['ok']) && isset($_POST['libel']) && $_POST['libel'] != "")
{
$region_selectionnee = $_POST['libelle'];
$dept_selectionne = $_POST['libel'];
?>
<p>Vous avez sélectionné le département <?php echo($dept_selectionne); ?> dans la région <?php echo($region_selectionnee); ?></p>
<?php
}
?>
<h3>Trouver un département</h3>
<?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`, `libelle`".
" FROM `shop_categories`".
" ORDER BY `id`";
$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']);
array_push($region, $ligne['libelle']);
/* 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="libelle" id="libelle" 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 `shop_s_categorie.id`, `shop_s_categorie.libel`".
" FROM `shop_s_categorie`".
" WHERE `shop_s_categorie.grandpere` = ". $idr ."".
" ORDER BY `shop_s_categorie.id`;";
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['id']);
array_push($nom_dept, $ligne_dept['libel']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="libel" id="libel">
<?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
}
?>
L'affichage est "normal" , mais quand je sélectionne un nom dans la première liste , j'ai ce message :
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\1cent\Templates\vente7005.php on line 870
Call Stack
#
Time
Memory
Function
Location
1
0.0049
588768
{main}( )
..\vente7005.php:0
2
0.0875
682712
mysql_fetch_assoc ( )
..\vente7005.php:870
( ! ) Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\wamp\www\1cent\Templates\vente7005.php on line 912
Call Stack
#
Time
Memory
Function
Location
1
0.0049
588768
{main}( )
..\vente7005.php:0
2
0.0879
683048
mysql_free_result ( )
..\vente7005.php:912
où la ligne 870 est :
while($ligne_dept = mysql_fetch_assoc($rech_dept))
et la ligne 912 est :
mysql_free_result($rech_dept);
Merci d'avance pour vos réponses .
HAbroc
Partager