IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Ajouter un enregistrement via une liste déroulante. [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Points : 13
    Points
    13
    Par défaut Ajouter un enregistrement via une liste déroulante.
    Bonjour à tous,
    Ceci est mon premier post ici, et comme bien souvent le premier post est motivé par un problème épineux auquel je n'ai trouvé la réponse nulle part. Je tiens à m'excuser d'avance si je fais des erreurs par rapport aux "best practice" en cours ici.
    Alors voilà, je développe une application qui sera publié sur le Web, en PHP / MySQL / Javascript, etc...
    J'ai des listes déroulantes alimentées par des enregistrements se trouvant dans des tables de la BDD, mais je voudrais que l'utilisateur puisse, s'il ne trouve pas dans la liste ce qu'il cherche, taper une autre valeur et que cette valeur s'enregistre à la validation dans la table de la BDD pour pouvoir la réafficher à la prochaine visite.
    Un exemple de code qui alimente une de ces liste :

    1) la requête qui récupère les infos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Liste des aliments
    $req_RST_aliments = sprintf("SELECT ALI_Id, ALI_Libelle
    										FROM aliments
    										WHERE ALI_Special = 0 
    										ORDER BY ALI_Libelle");
    $RST_aliments = mysql_query($req_RST_aliments, $mabase) or die(mysql_error());
    2) le code qui alimente la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    					<tr>
    						<td id="entete_filtre" colspan="5">
    							<div align="right">Aliment :</div>
    						</td>
    						<td id="entete_filtre" colspan="8">
    						<?php 
    								echo '<select name="ALI_Id" tabindex="1" onChange="VerifFiltre(filtre_rations)">';
    								echo '<option value="0">-- Liste complète --</option>';
    								while ($row_RST_aliments = mysql_fetch_assoc($RST_aliments)) { 
    									echo '<option value="'.$row_RST_aliments['ALI_Id'].'" ';
    									if ($row_RST_aliments['ALI_Id'] == $idaliment) echo "selected ";
    									echo '>'.$row_RST_aliments['ALI_Libelle'].'</option>'; 
    								}
    								echo '</select>';
    							?>
    						</td>
    					</tr>
    Désolé pour la mise en page un peu pourrie, je n'ose pas arranger ne sachant pas comment vont réagir les balises de code.

    Voilà, j'espère avoir été clair dans ma demande et pas trop long dans les explications !

    Merci pour votre aide et bonne journée à tous.

    JC

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux simplement ajouter un controle "text" qui servira à taper un autre Au traitement, on prend "autre" s'il est rempli, sinon la valeur de la liste déroulante
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    Merci pour la réponse ultra rapide. J'avais effectivement déjà pensé à un input text supplémentaire, et à certains endroits je l'utilise déjà. Mais j'ai un tableau en particulier qui me pose un problème d'espace car j'ai 5 listes côte-à-côte (donc pas possible d'avoir 5 zones text en plus sur la même ligne), et comme j'ai beaucoup d'enregistrements j'aurais aimé ne pas devoir passer à 2 lignes par enregistrement en superposant text et select.
    Bon si c'est impossible je vais essayer de m'arranger, mais comme il me semble qu'on peut taper des informations dans certaines zones select, j'ai du mal à comprendre qu'on ne puisse pas récupérer cette valeur pour l'enregistrer. Un rêve de débutant probablement !
    Merci encore et bonne journée.

    JC

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 294
    Points : 333
    Points
    333
    Par défaut
    Et pourquoi tu ne met pas une ligne autre dans ta liste déroulante et lorsque l'utilisateur sélectionne autre, tu changes ton select en zone de texte avec Javascript.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Un petit bout de code avec l'idée de Sebastien14
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <html>
    <head>
    <script type="text/javascript">
    function affichage(obj,id)
    {
        if(obj.selectedIndex==(obj.length-1))
           {
                  document.getElementById(id).style.display="block";
           }
         else
           {
                  document.getElementById(id).style.display="none";
           }
     
    }
    </script>
    </head>
    <body>
    <select onchange="affichage(this,'text1')">
        <option>text</option>
        <option>text</option>
        <option>Autre</option>
    </select>
    <input type="text" id="text1" style="display:none"/>
    </body>
    </html>

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Points : 13
    Points
    13
    Par défaut [Résolu]
    Merci Sebastien14, et merci andry.aime,

    Pas mal du tout, et merci pour le code ! J'utiliserai l'astuce sur d'autres zones, mais comme je viens de trouver exactement ce qu'il me fallait je voulais en faire profiter la communauté !

    Donc un lien bien sympa :

    http://webdeveloper.earthweb.com/rep..._dropdown.html

    Encore merci à tous et bonne prog !

    JCl

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/08/2009, 14h30
  2. [Requête] Tri via une liste déroulante
    Par Burnout dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/01/2006, 18h16
  3. récupération des données via une liste déroulante
    Par rahan_dave dans le forum Access
    Réponses: 1
    Dernier message: 13/10/2005, 12h27
  4. Enregistrement dans une liste déroulante & Msgbox
    Par tintinmarre dans le forum Access
    Réponses: 6
    Dernier message: 29/09/2005, 13h27
  5. Réponses: 2
    Dernier message: 16/10/2004, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo