Liste déroulante : désire récupérer l'id

Résolu/Fermé
Thorim Messages postés 32 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 20 août 2007 - 26 juil. 2007 à 12:28
Thorim Messages postés 32 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 20 août 2007 - 26 juil. 2007 à 16:47
Bonjour,

Tout d'abord, je voulais dire que je débute en PHP! Donc pardonner moi d'avance pour la question!
J'ai créé une base de données en MySQL qui comporte notamment la table qui nous interressera : "ITEM" et "TYPE".

La table "ITEM" est composé des champs suivant : "id_item", "libelle_item" et "type_item".
La table "TYPE" est composé des champs suivant : "id_type", "libelle_type".

J'ai créé ensuite un formulaire de création d'un nouvel "item" composé d'une liste déroulante qui récupère le libéllé de la table "TYPE" de ma base. (soit "libelle_type").

Donc, à l'aide d'une requête, je récupère sans problème les différents "libelle_type" de ma table possible pour la création d'un nouvel item.
Une fois que l'utilisateur remplis l'ensemble des champs et séléctionne un des type de ma liste déroulante, il valide à l'aide d'un bouton.

Mon problème, c'est que je récupère sans problème ma valeur de ma liste déroulante (soit "libelle_type") mais je désire avoir "id_type" à la place.

J'exécute donc une nouvelle requete afin de récupérer l'id :

$item_type_libelle =$_POST["Item_type"]; 
 
$item_type_id = mysql_query("SELECT id_type FROM type WHERE libelle_type = '$item_type_libelle'");


A ce moment là, lorsque je désire insérer dans ma table le nouvel item avec ces informations, j'obtiens une erreur qui me dis que le format de "type_item" n'est pas correct!

En fait, "$item_type_id" récupère la valeur de type "Resource id #X"

Pourriez vous m'aider??

Merci d'avance
Thorim

3 réponses

Si tu veux récuperer l'id depuis la selection faite dans ta liste déroulante mets value="id" dans les options de ta liste, exemple

<option  value="<?php echo $row['id_type']; ?>" > <?php echo $row['item_type'] ; ?></option>

si $row=mysql_fetch_array(........)


Ainsi ce sera la valeur de l'id_type qui sera postée et pas la valeur de l'Itel_type.

Ca te vas ?
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
26 juil. 2007 à 13:56
Bonjour

je te conseille de procéder différemment.
En fait, quand tu crées ta liste déroulante, tu dois placer dans une boucle quelque chose du genre

echo "<option value='$Libelle_Type'>$Libelle_Type</option>"

Eh bien si dans le champ "value", tu places l'Id et non le libellé, l'utilisateur verra toujours le libellé (car c'est lui qui est placé dans le texte avant </option>), mais toi, en retour, tu auras récupéré l'id (car c'est le champ "value" qui est renvoyé par le formulaire).

Du coup, tu n'as même pas besoin de refaire une requête SQL derrière. Sans compter que les id en base de données, ça sert justement à ce genre de chose !

Xavier

PS : sinon, pour le problème que tu donnes, le problème vient de ton utilisation de mysql_query : elle ne renvoit pas une valeur, mais une ressource qui contient une sorte de tableau. Pour avoir la valeur que tu cherches, il faut faire :
$item_type_id = mysql_fetch_object($result)->id_type;
0
Thorim Messages postés 32 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 20 août 2007 13
26 juil. 2007 à 16:47
Salut tout les deux!!

Merci pour avoir répondu si vite!^^

Grâce à vous, ca marche parfaitement! Merci beaucoup!

J'ai fait, si on veut un "mix" de vos deux méthode.

Voila le code dans une boucle:

echo "<option value=".$row['id_type'].">".$row['libelle_type']."</option>\n";


Encore merci!!

Thorim
0