Ajouter un enregistrement via une liste déroulante

Messages postés
7
Date d'inscription
mercredi 11 janvier 2006
Statut
Membre
Dernière intervention
8 décembre 2009
- - Dernière réponse : baltha7
Messages postés
7
Date d'inscription
mercredi 11 janvier 2006
Statut
Membre
Dernière intervention
8 décembre 2009
- 8 déc. 2009 à 00:01
Bonjour à tous,

Voilà mon problème : j'utilise des listes déroulantes dans des pages en PHP pour afficher des données stockées dans une base MySQL, mais j'aimerai savoir si l'inverse est possible, c'est-à-dire que je voudrais pouvoir rajouter un enregistrement en le tapant directement dans cette liste déroulante.
Je suis disposé à utiliser n'importe quelle autre technique qui me permettrait de faire ça simplement. Le but étant de fournir à l'utilisateur les enregistrements de base pour l'application que je suis en train de développer, mais qu'il pourrait personnaliser en rentrant ses propres informations sans avoir besoin d'entrer dans les tables ou de passer par une page de création différente.

Merci pour votre aide en espérant voir été clair dans ma demande.
Afficher la suite 

12 réponses

Messages postés
114
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
4 décembre 2009
0
Merci
Salut,

je suis pas sûr d'avoir bien compris mais en gros tu veux nourrir une liste sans passer par une base de données ?
Si c'est le cas, sache que quand l'utilisateur raffraichira sa page, la liste sera réinitialisé !
Cependant, tant qu'il n'actualise pas ... la liste ne change pas!
Donc tu dois utiliser du javascript pour faire ça.
Tu creer un champs texte et un bouton, en dessus une list.
Au clique sur le bouton, le texte est ajouté a la liste.
En gros, tu peux faire un truc de ce genre :

document.getElementById('IdList').innerHTML += '<option value="document.getElementById('IdChampText').value">'+document.getElementById('IdChampText').value+'</option>';

Voila, ceci est juste un exemple, il n'est pas optimisé ni rien, c'est juste un exemple pour te montrer comment faire !

Voila !
A+

gaerebut
Commenter la réponse de robapt
Messages postés
7
Date d'inscription
mercredi 11 janvier 2006
Statut
Membre
Dernière intervention
8 décembre 2009
0
Merci
Salut, et merci pour la réponse rapide.

En fait c'est exactement le contraire que je voudrais faire. Ma liste déroulante est alimentée par une table MySQL, mais je voudrais donner la possibilité à l'utilisateur de taper un nouvel enregistrement s'il ne trouve pas ce qu'il a besoin dans la liste, et enregistrer ce nouvel enregistrement dans la table.
Il me semble de mémoire qu'en VB c'était possible via les combo, mais je n'ai plus touché à ça depuis au moins 10 ans et je me disais que peut-être en PHP / Javascript ou autre il y avait un moyen...

Merci encore,

JC
Commenter la réponse de baltha7
Messages postés
88
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
23 mars 2011
0
Merci
bonsoir
moi aussi j'ai la meme problem Quelqu'un presenter l'aider
Commenter la réponse de ensto28
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
13
0
Merci
Slt,

[quote=baltha7]Ma liste déroulante est alimentée par une table MySQL, mais je voudrais donner la possibilité à l'utilisateur de taper un nouvel enregistrement s'il ne trouve pas ce qu'il a besoin dans la liste, et enregistrer ce nouvel enregistrement dans la table. /quoteBen pourquoi ce compliqué quand on peut faire simple ?
Tu peux mettre un champs texte en complément de la liste déroulante !

______________________________________________________________________
Commenter la réponse de phpAnonyme
Messages postés
7
Date d'inscription
mercredi 11 janvier 2006
Statut
Membre
Dernière intervention
8 décembre 2009
0
Merci
Oui ça je sais que ça marche. Mais parfois les solutions simples ne suffisent pas pour un besoin précis... En l'occurence, je fais un tableau d'alimentation pour animaux. Sur une même ligne j'ai trois listes, aliment de base, type de fourrage et complément spécial. Rajouté à ça les quantité et la périodicité de la ration alimentaire, je me retrouve avec une ligne à 8 champs de saisie sur une même ligne. Comme je bosse sur une élevage d'une centaine d'animaux, je ne voudrais pas me retrouver avec 2 lignes par animal en rajoutant un champ texte, c'est pour ça que j'aurais aimé utiliser à fond la liste déroulante.
Maintenant si c'est impossible je m'adapterai, mais je suis sûr d'avoir déjà vu des listes où on pouvait introduire une nouvelle valeur, partant de là pourquoi ne pourrait-on pas récupérer et travailler cette nouvelle valeur (contrôle de doublon, enregistrement dans la table) ?

Merci en tous cas pour l'attention apportée à mon problème.

Bonne journée,

JC
Commenter la réponse de baltha7
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
0
Merci
bonjour,

pourquoi ne pas passer simplement par un formulaire de saisie de 8 champs ?
les liste déroulantes ne servant qu'à afficher le contenu de la base mise à jour
(ou éventuellement à sélectionner un enregistrement et afficher les données dans le form pour mise à jour)
Commenter la réponse de sidf
Messages postés
7
Date d'inscription
mercredi 11 janvier 2006
Statut
Membre
Dernière intervention
8 décembre 2009
0
Merci
Bonjour,

Avant tout je tiens sincèrement à remercier tous ceux qui font vivre ce forum en apportant leur contribution, et je ne veux en aucun cas être arrogant ni me fâcher avec qui que ce soit. Mais je pensais avoir été clair dans mon explication, et je trouve décevant qu'on ne me propose que de contourner le problème par un biais ou un autre.
Mon but est de faire un tableau permettant de suivre l'alimentation quotidienne de chevaux dans un élevage de 100 animaux. Dans ce tableau j'ai un nombre d'enregistrements affichés réglable, xx lignes par page à la demande de l'utilisateur. Chaque ligne reprend le nom du cheval, sa ration de fourrage, sa ration de grain, sa ration de complément alimentaire, une périodicité en jour/semaine/mois, bref tout ce qui fait la ration quotidienne d'un cheval. Si sur la même page je peux mettre à jours les ration pour 10, 15, 20, xx chevaux à l'aide de listes déroulantes, ça me parait moins fastidieux que d'aller ouvrir un formulaire pour chaque cheval.
Encore une fois je ne veux offenser personne, j'essaie juste de trouver une solution à un problème particulier et si ça n'est vraiment pas possible comme ça, je m'adapterai.
Merci donc de ne pas me proposer autre chose, et encore merci également d'avoir prêté attention à mon post.
Cordialement,

JC
Commenter la réponse de baltha7
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Salut Baltha,

et je trouve décevant qu'on ne me propose que de contourner le problème par un biais ou un autre.

Tu peux trouver ça décevant, mais tu peux également considérer que les avis fournis ne sont pas illégitimes.
Par ailleurs garde à l'esprit que, malgré la bonne description que tu fais, il est très difficile de se faire une idée de ton projet. Exemples : la fréquence des mises à jour, le "niveau" des utilisateurs, leur nombre, l'étendue des choix possibles, ... il y a des dizaines de critères qui sont primordiaux pour parvenir à une structure viable.
Pour se faire une idée et qu'ainsi tu puisses être moins déçu, une petite page en ligne serait une bonne idée.
C'est à mon avis sur cette structure qu'il faudrait que tu réfléchisses, en trouvant un point d'équilibre entre complexité des traitements / efficacité / simplicité d'utilisation (...)
Déjà laisser à l'utilisateur le soin d'entrer de nouvelles données qui feront par la suite partie intégrante des choix (ou non) est dans 95% des cas une très mauvaise idée. Tu parles de "saisie fastidieuse"; j'espère que tu es bien conscient que tu vas galérer grandement pour conserver une base de données saine, parce qu'entre les fautes d'orthographe, de frappe, les divergences de désignation tu aura du fil à retordre.

[etc ...]

Il est impératif de définir des constantes et de modéliser au maximum.

chaque ligne reprend le nom du cheval, sa ration de fourrage, sa ration de grain, sa ration de complément alimentaire, une périodicité en jour/semaine/mois,

sur une même ligne j'ai trois listes, aliment de base, type de fourrage et complément spécial

En lisant ça je me demande bien ce qui nécessiterai des listes déroulantes couplées à l'ajout possible d'un choix.
nom du cheval => select
sa ration de fourrage => text
sa ration de grain => text
sa ration de complément alimentaire => text
une périodicité en jour/semaine/mois => text et select
aliment de base => select
type de fourrage => select
complément spécial => select

Je n'ai aucune connaissance là dedans hein, mais je relève le pari qu'aucun des select ne mérite l'ajout de données utilisateur.

Bref, l'objet de ce message est d'attirer ton attention sur la construction de ta page (et par là même la base, ...) La solution est sans doute là (me répète, je ne connais pas suffisamment le contexte)

Maintenant, si tu souhaites rester sur ton idée, et afin de respecter tes ordres, tout est possible.
Oublie le simple select.
Tu pourrai faire ça avec un combo div / JS / css. Le but serait d'"imiter" un select via un div.
En le cliquant / survolant, un second div contenant les choix de la DB s'afficherait, avec en plus un champ de saisie. Tout ce beau monde étant contenu dans un form et identifié via leurs attributs name dont tu te servirai ensuite pour mettre à jour la base.

Même si ça reste une mauvaise idée, c'est assez facile à réaliser.
Ce ne sont bien sur que les grandes lignes, à toi de voir maintenant.


Cordialement,

Kohntark -
Commenter la réponse de kohntark
Messages postés
7
Date d'inscription
mercredi 11 janvier 2006
Statut
Membre
Dernière intervention
8 décembre 2009
0
Merci
Salut Kohntark,

Merci de ta réponse, et encore une fois j'ai l'habitude d'être direct et maladroit c'est pourquoi je m'excusais d'avance si je pouvais offenser qui que ce soit. Tu as raison sur la plupart des points que tu soulèves, et je te remercie pour ton approche finale qui est une solution effectivement (le combo DIV / CSS / JS), et je suis en train d'en tester une autre qui consiste à rajouter un champ hors table dans les options du select, avec un js qui transforme le select en zone text lorsque l'on sélectionne cette option hors table.
La complexité pour moi de mettre une page en ligne est que c'est une application et pas un site web que je développe, et je n'ai pour l'instant pas de serveur d'hébergement je ne travaille qu'en local avec un serveur virtuel et quelquesPC dans mon réseau pour faire des tests.
Le seul point où je ne te rejoins pas, c'est quand tu dis
En lisant ça je me demande bien ce qui nécessiterai des listes déroulantes couplées à l'ajout possible d'un choix.
nom du cheval => select
sa ration de fourrage => text
sa ration de grain => text
sa ration de complément alimentaire => text
une périodicité en jour/semaine/mois => text et select
aliment de base => select
type de fourrage => select
complément spécial => select

en fait la ration de fourrage ça va être de la paille d'avoine, de la luzerne, de la paille de son, etc etc. Pareil pour les différents grains (orge, avoine, maïs), et les compléments avec toutes les vitamines, les minéraux, etc. Ces trois points là nécessitent des select parce que pour cent chevaux il faut imaginer que l'agriculteur / éleveur n'aura pas envie de tout taper dans du texte. Pourquoi l'ajout ? Parce que certains éleveurs font des mélanges, changent d'alimentation, essaient des trucs. Bref c'est une partie très complexe que j'ai discutée avec plusieurséleveurs qui en sont tous arrivés à me dire : "ce serait bien qu'on puisse constituer notre propre liste au fur et à mesure".
Donc je voulais éviter de passer par un formulaire de création et essayer de leur rendre le truc simple. Evidemment je galère derrière pour les controles de doublons, les fautes de frappe etc, mais c'est un choix.
Bon je ne vais pas faire plus long, étant sur un sujet qui me passionne je ne voudrais pas te "gaver" trop.
En tous cas merci encore, ainsi qu'à ceux qui ont répondu précédemment, et encore désolé si j'ai pu paraître blessant.

Bonne soirée et bonne prog !

JC
Commenter la réponse de baltha7
Messages postés
7
Date d'inscription
mercredi 11 janvier 2006
Statut
Membre
Dernière intervention
8 décembre 2009
0
Merci
Re-bonsoir,

Pour ceux que ça pourrait intéresser, j'ai trouvé quelque chose qui répond à mes besoins et au cas où je vous en fais profiter :

http://webdeveloper.earthweb.com/repository/javascripts/2004/10/609371/pp_editable_dropdown.html

Merci et bonne prog !

JC
Commenter la réponse de baltha7
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Merci pour ta réponse précise,

Voilà comment j'avais vu, à tort visiblement, les choses :
aliment de base => select => orge, avoine, maïs
type de fourrage => select => paille d'avoine, de la luzerne, de la paille de son, etc etc
complément spécial => select => les vitamines, les minéraux, etc

sa ration de fourrage => text => une quantité (kg, litres, ...)
sa ration de grain => text => une quantité (kg, litres, ...)
sa ration de complément alimentaire => text => une quantité (kg, litres, ...)

Du coup je ne comprends plus bien à quoi correspondent les 3 premiers et la différence avec les suivants.


parce que certains éleveurs font des mélanges, changent d'alimentation, essaient des trucs. Bref c'est une partie très complexe que j'ai discutée avec plusieurs éleveurs qui en sont tous arrivés à me dire : "ce serait bien qu'on puisse constituer notre propre liste au fur et à mesure".


Tu décris là un point essentiel qui me fait penser que tu ne t'en sortira jamais avec une page telle que tu la conçois.
C'est souvent intéressant d'avoir une vision extérieure, même d'une personne n'y connaissant rien. Je me permets donc quelques interrogations :
[les éleveurs]:
- comment vont ils renseignés leurs mélanges ? Par une nouvelle entrée saisie manuellement ? => bad
- ne seraient il pas intéressés par un historique des alimentations prodiguées ? ex : connaitre le(s) type(s) d'alimentation et la/les quantité(s) donnée(s) entre le 01/03 et le 15/04
- etc ... etc ...

Je ne donne là que 2 interrogations, mais il pourrait y en avoir des dizaines. Le but, une nouvelle fois, est d'attirer (j'te force pas hein ) ton attention sur la nécessité de prendre le temps nécessaire à la construction de la structure.
Même si tu n'implémentes pas tout de suite toutes les possibilités et les demandes il est indispensable que tu prévois cette flexibilité. Ca ce joue essentiellement au niveau de la base de données et de l'approche que tu auras côté scripts php (hors affichage)

A vu de nez je vois bien une "fiche cheval" pour chacun d'entre eux, qui permettrait de définir les mélanges à partir de select. Chaque changement de type de nourriture ou de ration (j'entends un volume) serait consigné dans la DB (historique) etc ....
Pour préciser un peu ma pensée sur les mélanges (dans la fiche du cheval) :
- 1 select "grains" (orge, avoine, maïs, ...)
- 1 text permettant la saisie du volume donné
- autres (fabriquant, provenance, etc ...)
- un "lien" "ajouter un produit mélangé" qui, une fois cliqué, ajouterai les mêmes champs que ceux sus cités (avec id / name différents of course)
Ce "lien" permettant l'ajout successifs de différents grains.

Lors de l'update tu mets à jour la DB en horodatant. Tu as ainsi l'historique de l'alimentation de chaque cheval.
Le schéma restant applicable au fourrage / complément, etc ...

C'est certes un peu plus complexe à mettre en place, mais en décomposant ainsi tu es certain de conserver une flexibilité qui te permettra facilement d'étendre par la suite à d'autres critères.

chui peut être maladroit dans le fond, mais c'est ici la forme qui compte.

N'hésite pas à nous tenir au courant.

Bonne soirée,

Kohntark -
Commenter la réponse de kohntark
Messages postés
7
Date d'inscription
mercredi 11 janvier 2006
Statut
Membre
Dernière intervention
8 décembre 2009
0
Merci
Et merci à toi pour ton intérêt et la vue extérieure toujours intéressante je suis 100 % d'accord !
Première chose je crois que le lien que j'ai mis précédemment ne fonctionne plus, c'est plutôt ça qu'il faut prendre :Le lien sympa
Maintenant pour le fond : on sent bien que tu es un analyste, et pas un débutant, non ? Donc j'étais parti aussi sur l'idée de l'historique, du mélange-type, tout bien propre comme on nous l'apprend à l'école. Seulement voilà, quand j'ai voulu expliquer la première mouture à mon frère (qui est éleveur de pur-sangs arabes), il m'a expliqué deux ou trois petites choses. Par exemple une ration quotidienne type c'est 2 fourrages, 3 grains et 1 complément.
- Exemple de fourrages :
Mil (fléole)
Franc-foin
Pâturin
Fétuque
Foins de céréales
Foins de légumineuses
Foins de graminées
Trèfle
Luzerne
...
- Exemple de grains :
Avoine
Orge
Maïs
Blé
Seigle
Son
Germes de malt
Tourteau de lin
Tourteaux de coton
Tourteaux de soja
Graines oléagineuses
Pois
Fèverolles
Fèves
...
- Exemple de compléments :
Farine de gluten
Drèches
Chlorure de sodium
Sulfate de soude
Nitrate de potasse
Iodure de potassium
Mélasse
Vitamine C
Vitamine B1
Vitamine B2
Vitamine B3
Vitamine P
Vitamine A
Vitamine D
...

Mais parfois on peut pour un régime particulier donner 3 fourrages plutôt que 2, ou 3 compléments pour une carrence grave, bref c'est une alchimie un peu compliquée. En plus pour les quantités c'est à la louche, à la gamelle, au kilo, au pif quoi...
Donc le frangin me disait que dans la pratique, il préférait avoir une zone où il pourrait taper ce qu'il veut, mais retrouver ça dans une liste pour pouvoir le réutiliser, d'où mon obstination à vouloir une liste déroulante éditable. Avec mon principe, qui je te l'accorde est loin d'être ce qu'il y a de plus propre que ce soit côté analyse ou côté programmation, il aura une zone pour chaque catégorie d'aliment (fourrage / grains / compléments) et il pourra taper paille + luzerne, orge + maïs + son, etc... et réutiliser ça à volonté.
Quand à l'historique, inutile, on est dans un monde très "terre-à-terre" chez les éleveurs et ils connaissent mieux leurs chevaux que leurs enfants, donc ils savent ce qu'ils ont donné à manger et le tracer ne les intéresse pas. Tout ce qui les intéresse, et ça je le gère dans une autre partie de l'application, c'est la gestion des stocks de nourriture.
Bon je t'avoue que si ce n'était que pour mon frangin je ne ma casseraispasla tête comme ça, mais comme il fait partie d'un petit groupe d'éleveurs (un vingtaine en tout), j'essaie de leur faire une petite application de gestion sympa (chaque éleveur aura sa propre base mais travaillera avec la même application) et pas trop compliquée à manipuler.
Voilà, merci encore pour ta collaboration très sympa, et vu l'heure je te souhaite une bonne nuit !

JC
Commenter la réponse de baltha7