liste deroulante dynamique

Eléphanteau du PHP | 14 Messages

07 janv. 2007, 00:42

Bonjour, voici le code que j'utilise et j'ais 2 erreurs:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home.10.5/armedass/www/edition/rr.php on line 97

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home.10.5/armedass/www/edition/rr.php on line 118
while($ligne_dept = mysql_fetch_assoc($rech_dept))
mysql_free_result($rech_dept);
Avez vous une solution pour les erreurs svp ?
Je c'est quand vrai le code utilise la vérification par id entre les 2 tables, mais moi c'est entre les noms de catégorie, alors je c'est pas si c'est à cause de ceci, merci de votre aide.
<?php
if(isset($_POST['ok']) && isset($_POST['departement']) && $_POST['departement'] != "")
{
    $region_selectionnee = $_POST['region'];
    $dept_selectionne = $_POST['departement'];
?>
<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($host, $username, $password);
if($connexion != false)
{
    $choixbase = mysql_select_db($bdd_name, $connexion);
    $sql1 = "SELECT `id`, `nom`".
    " FROM `arma_categorie`".
    " 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['nom']);
            array_push($region, $ligne['nom']);
            /* 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`, `nom`".
        " FROM `arma_souscategorie`".
        " WHERE `categorie` = ". $idr ."".
        " ORDER BY `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['nom']);
                $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);
    }
?>
<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
}
?>  

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 janv. 2007, 00:57

supplied argument is not a valid MySQL result resource
Cela signifie que l'argument passé à ta fonction n'est pas une resource mysql valide. Il est très probable que tu ais une erreur sql dans ta requête..

Essayes de l'afficher avant de l'exécuter, joues la dans mysql ou phpmyadmin, vérifies que les noms des tables sont correctes, que les champs existent, que les chaines de caractères sont bien entourés d'apostrophes, etc. :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 janv. 2007, 04:32


/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

07 janv. 2007, 12:05

ok, j'ais testé, sa me met que le message:
Unknown column '.......' in 'where
Et quand j'affiche mes requettes pour vir, il n'y à aucune erreur (avec cho sql1;

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 janv. 2007, 14:35

Ben oui mais le message d'erreur en entier est généralement bien plus parlant :wink:

Montre nous aussi ce que donne l'affichage des requêtes.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute