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 :

champ de formulaire en input avec liste deroulante en mysqli [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut champ de formulaire en input avec liste deroulante en mysqli
    Bonjour,
    Je développe une gestion de personnes en HTML / PHP / MYSQL. Je suis sous W10/64bits et j’utilise wampserveur 3.0.6. 64 bits avec apache2.4.23, PHP7.0.10, MySql5.7.14.
    Je souhaite n’utiliser que les fonctions mysqli et non le PDO.
    Je voudrais modifier certains des champs du formulaire de création, en les alimentant par un choix des données, en liste déroulante, provenant d’une table existante dans ma base de données Mysql. Je n’arrive pas à faire apparaitre la liste déroulante dans un champ input (par ex. civilites)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td>id_civilite	</td>  	<td><select name="inid_civilite"><option value="-1"></option><?php affiche_liste_civilites(""); ?></select></td>
    Je n’arrive pas à programmer le module ‘affiche_liste_civilites’ pour qu’il me propose les civilites présentes dans ma table.
    Merci pour votre aide …. Ou un petit exemple.
    Cordialement
    Michel

  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
    Montre nous ce que tu as déjà écrit comme code.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai Avatar de Lagriffe6K
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Je n’arrive pas à programmer "le module" affiche_liste_civilites... module ?

    Attention avec les termes que tu emplois. C'est plutôt une fonction que tu veux écrire, un module c'est un peu plus que ça. Cela dit pour t'aider, c'est simple en fait.
    Tu fais un select de tes données que tu récupères dans un tableau et à l'aide d'un foreach, tu affiches les options. Ça devrait ressembler à un truc comme ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    $array = $db->query('SELECT no, titre FROM table');
    foreach($array as $value){ ?>
        <option value="<?php echo $value['no']; ?>"> <?php echo $value['titre']; ?> </option>
        <option value="<?php echo $value['no']; ?>"> <?php echo $value['titre']; ?> </option>
        <option value="<?php echo $value['no']; ?>"> <?php echo $value['titre']; ?> </option>
    <?php
    }
    ?>

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 7
    Points : 13
    Points
    13
    Par défaut
    Bonjour, je ne comprends pas pourquoi LaGriffe6K met 3 echo dans son foreach : il en faut un seul, et c'est la boucle foreach qui fait le reste. Voici donc une réécriture (qui de plus utilise mysqli, ce qui n'est pas forcément mieux mais c'est ce qu'a demandé maub85) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
      ...
      $rs_trucs = mysqli_query($CONNEXION, "SELECT no, titre FROM truc order by titre");
      echo "<select name=liste_de_trucs><option value=0>Choisissez un truc :";
      while ($truc = mysqli_fetch_assoc($rs_trucs))
        echo "<option value={$truc["no"]}>{$truc["titre"]}\n";
      echo "</select>";
    ?>
    Remarques :
    - en général, on met un order by dans un select (on veut quasiment tout le temps que ce soit trié par date, ou par ordre alphabétique, ou par quantité...)
    - oublier le </option> n'empêche pas de passer le validateur du W3C (comme /p, /li, /tr, /td...)

  5. #5
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut Merci de vos reponses
    Bonjour Messieurs spastore et lagridde6k,

    Le code de la function selon Lagriffe6k fonctionne parfaitement, la liste déroulante est ok :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    function liste_civilite_3() {      //  selon lagriff6k     OK
        $my_connexion = mysqli_connect("localhost","root","","annu_paroisse");
        $array = $my_connexion->query('SELECT id_civilite, civilite FROM civilites');
        foreach($array as $value){ ?>
             <option value="<?php echo $value['id_civilite']; ?>"> <?php echo $value['civilite']; ?> </option>
                        <?php
             }
             }




    Celui de Mr spastore affiche tous les choix dans le champ où la liste déroulante devrait apparaître :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    function liste_civilite_2(){       //  selon   spastore       ??? problème affichage dans champ
    		$my_connexion = mysqli_connect("localhost","root","","annu_paroisse");
    		$rs_trucs = mysqli_query($my_connexion, "SELECT * FROM `civilites`");
      	echo "<select name=liste_de_trucs><option value=0>";
      	while ($truc = mysqli_fetch_assoc($rs_trucs))      		echo "<option value={$truc["id_civilite"]}>{$truc["civilite"]}\n";
      			echo "</select>";
                }

    Merci à tous les deux, mais j'aimerais bien debugger le code de Mr pastore.
    Cordialement
    Maub85

  6. #6
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonjour,

    Je vous sollicite à nouveau pour m'aider à positionner et à rendre fonctionnel le champ 'Année de Naiss.'.

    Je vous joins le code de mon formulaire et sa capture d'écran où vous verrez que la zone 'Annee_Naiss.' se trouve à coté de mon champ input et je n'arrive pas à n'avoir que celui qui me permettrait de sélectionner la fameuse année de naiss et de la gérer dans le traitement du formulaire.
    .
    Je joins aussi le code de la fonction "choix_annee" que j'appelle dans mon formulaire.




    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Les donnees vous concernant restent dans le cadre de l'Hospitalite Vendéenne et ne sont utilisées que pour faciliter le 'service'.. <br>
    Vous disposez d'un droit de consultation, de modification ou de radiation, selon la loi 'Informatique et Libertés' du 06/01/1978.
    <br>
    <br>
     
    			<tr> 
    		      <td>code_civilite 	</td>  	<td><select name="code_civilite"><option value="-1"></option><?php liste_civilites_3(""); ?></select></td> 
    					<td>NOM        	    </td>  	<td><input name="nom"            	type="text"></td>
    					<td>Prenom        	</td>  	<td><input name="prenom"         	type="text"></td>
    			</tr>
     
    			<tr> 
    					<td>Adresse    	</td>  	<td><input name="adresse"        	type="text"></td>
    					<td>Conjoint   	</td>  	<td><input name="conjoint"       	type="text"></td>
    					<td>                                                                 </td>                                                           
    			</tr>
     
    			</tr>		
    	    		<td> C.P.      	</td>  	<td><input name="codepostal"   value='85200' 	type="text"></td>    
    	    		<td>C.Commune   </td>  	<td><select name="code_commune"><option value="-1"></option><?php liste_communes(""); ?></select></td> 
              <td>C. Relais   </td>  	<td><select name="code_relais"><option value="-1"></option><?php liste_relais(""); ?></select></td> 
    			</tr>
     
    			</tr>		
    					<td>E_mail     	</td>  	<td><input name="e_mail"         	type="text"></td>
    					<td>Tel Fixe   	</td>  	<td><input name="tel_fixe"       	type="text"></td>
    					<td>Tel Port.  	</td>  	<td><input name="tel_portable"   	type="text"></td>
    			</tr>
     
    			<tr>		
    			   <td>Annee_Naiss.</td>  	<td><input name="annee_naissance"	<option value="-1"></option><?php liste_annee(""); ?></select></td>
    			</tr>
     
    			<tr> 
    					<td>Notes       </td> 	<td><input name="notes"             type="notes"></td>
    			</tr>
     
          <tr>
          		<td> ----- </td>    <td> ------------         </td>
    			</tr>
    Nom : 2017-03-27 13_11_11-add_2.php - Internet Explorer.jpg
Affichages : 1009
Taille : 42,5 Ko


    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
    18
    19
    20
    21
    22
     
     
    function choix_annee() {
      // Variable qui ajoutera l'attribut selected de la liste déroulante
      $selected = '';
     
      // Parcours du tableau
      echo '<select name="annee_naissance">',"\n";
      for($i=1930; $i<=2030; $i++)
      {
        // L'année est-elle l'année courante ?
        if($i == date('Y'))
        {
          $selected = ' selected="selected"';
        }
        // Affichage de la ligne
        echo "\t",'<option value="', $i ,'"', $selected ,'>', $i ,'</option>',"\n";
        // Remise à zéro de $selected
        $selected='';
      }
      echo '</select>',"\n";
    }

    Je vous remercie.
    Cordialement
    Maub85

  7. #7
    Membre à l'essai Avatar de Lagriffe6K
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par spastore Voir le message
    Bonjour, je ne comprends pas pourquoi LaGriffe6K met 3 echo dans son foreach : il en faut un seul, et c'est la boucle foreach qui fait le reste.
    Désolé, j'ai confondu rapidité et précipitation, effectivement, c'est un seul echo.

  8. #8
    Membre à l'essai Avatar de Lagriffe6K
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par maub85 Voir le message
    Bonjour,

    Je vous sollicite à nouveau pour m'aider à positionner et à rendre fonctionnel le champ 'Année de Naiss.'.

    Je vous joins le code de mon formulaire et sa capture d'écran où vous verrez que la zone 'Annee_Naiss.' se trouve à coté de mon champ input et je n'arrive pas à n'avoir que celui qui me permettrait de sélectionner la fameuse année de naiss et de la gérer dans le traitement du formulaire.
    .
    Je joins aussi le code de la fonction "choix_annee" que j'appelle dans mon formulaire.
    <td>Annee_Naiss.</td> <td><input name="annee_naissance" <option value="-1"></option><?php liste_annee(""); ?></select></td>

    Et cette ligne est censée faire quoi au juste ? Tu mets un <option> dans un <input> qui déjà est une balise fermante, mais en plus tu la fermes avec un </select>. Wooohh !!!
    Je pense qu'avant de partager ton code sur le forum, tu devrais faire une pause et venir le relire correctement. T'utilises quel éditeur ?

  9. #9
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut Suite et Fin
    Bonjour et Merci à tous ceux qui m'ont aidé.
    J'utilise ULTRA EDIT comme éditeur.

    Cordialement
    Maub

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

Discussions similaires

  1. [AC-2003] probleme formulaire avec liste deroulante
    Par makila64 dans le forum IHM
    Réponses: 4
    Dernier message: 27/03/2012, 13h45
  2. prob formulaire mail avec liste deroulante
    Par oukok dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2007, 13h20
  3. Réponses: 4
    Dernier message: 22/01/2007, 19h51
  4. [MySQL] Probleme avec liste deroulante et requete
    Par castelligreg dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/12/2006, 14h39
  5. Réponses: 7
    Dernier message: 31/08/2006, 14h11

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