Bonjour, j'essaye d'utiliser pour mon site l'élément de formulaire Datalist, comme présenté ici http://www.alsacreations.com/article/lire/1334-html5-element-datalist.html afin de pouvoir récupérer un élément de la base de données sans avoir à se rappeler forcément de l'intitulé exact, ni à taper l'id du produit.
Donc, dans l'idée, j'aurai fait quelque chose comme ça :
Le soucis, c'est que dans la liste déroulante apparaît bien le $nomproduit désiré, mais quand je le sélectionne, c'est l'$id qui s'affiche. J'avais déjà eu affaire à ce soucis avant pour un autre projet où, par flemme de chercher une solution, j'avais laissé la donnée brute que j'avais post-traitée en faisant un explode de la chaîne et en faisant un select, bref un sacré bazar. Là, j'aimerai bien éviter d'avoir à faire toute cette manipulation pas très jolie.
Avant qu'on ne me dise d'éviter de faire cet input très particulier qui ne fonctionne pas sur tous les navigateurs, je précise que cet input ne sera que dans la partie administrateur, et tous les administrateurs utilisent un navigateur compatible (j'ai vérifié avant).
En bref, si vous avez le moyen de faire en sorte que la value ne s'affiche jamais mais reste en mémoire, je suis preneuse
dans l'absolu, ce comportement est tout à fait normal : ce que fait datalist c'est un transfert de valeurs (value). As-tu besoin de ces id dans ton traitement après coup ? Si non, pourquoi les conserver ? Enlève simplement l'attribut value des options, puisque ce que tu vas envoyer au serveur c'est le contenu de l'input, donc du texte et non un id. Et si tu as besoin de l'id, par exemple pour du JS, ajoute-le via un data-*.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
J'ai besoin de l'id pour pouvoir l'intégrer directement dans ma table (qui contient une clef étrangère id). Si je n'ai que le nom du produit, je serai obligée de faire une requête intermédiaire pour récupérer l'id du produit pour ensuite ajouter cet id dans la table, et je voulais éviter cette étape intermédiaire. C'était pour cela que je posais la question Le traitement se fait uniquement en PHP, donc je peux faire la requête intermédiaire sans soucis.
Apparemment, ce que je cherche à faire n'est donc pas possible aujourd'hui, mais je voulais m'en assurer. Merci de m'avoir répondu
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Zelatan