Partage
  • Partager sur Facebook
  • Partager sur Twitter

Elément Datalist

Sujet résolu
21 mars 2016 à 11:09:41

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 :

<input list="produits" type="text" id="choix_bieres">
    <datalist id="produits"> 
        <option value=$id1>$nomproduit1</option> 
        <option value=$id2>$nomproduit2</option> 
        ... 
    </datalist>

 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 :)

-
Edité par Lyrenza 21 mars 2016 à 11:10:56

  • Partager sur Facebook
  • Partager sur Twitter
21 mars 2016 à 11:44:55

Salut,

tu es sûr d'être dans le bon forum ?

  • Partager sur Facebook
  • Partager sur Twitter
Vous cherchez à faire un menu déroulant ? Visitez www.frogweb.fr ! frogweb le site qu'il vous faut !
21 mars 2016 à 11:46:53

Oui, car Datalist est un élément HTML. C'est juste une histoire d'affichage par rapport aux value/label et autres.
  • Partager sur Facebook
  • Partager sur Twitter
21 mars 2016 à 11:50:05

Oui bien sûr, mais le traitement des données c'est pas du html.

"si vous avez le moyen de faire en sorte que la value ne s'affiche jamais mais reste en mémoire".

Non, pas en html/css.

  • Partager sur Facebook
  • Partager sur Twitter
Vous cherchez à faire un menu déroulant ? Visitez www.frogweb.fr ! frogweb le site qu'il vous faut !
21 mars 2016 à 13:36:30

Bonjour,

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-*.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)

21 mars 2016 à 17:02:05

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 :)

  • Partager sur Facebook
  • Partager sur Twitter
8 février 2020 à 18:45:25

Essaie <option value='valeur' label='nom'>
  • Partager sur Facebook
  • Partager sur Twitter

Zelatan

9 février 2020 à 22:19:57

Bonjour,

Déterrage

Citation des règles générales du forum :

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

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter