Liste déroulante : désire récupérer l'id
Résolu
Thorim
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
Thorim Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
Thorim Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
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 :
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
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
A voir également:
- Liste déroulante : désire récupérer l'id
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Liste code ascii - Guide
- Site dangereux liste - Guide
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
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 ?
<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 ?
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;
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;