Se connecter / S'enregistrer
Votre question

Charger liste deroulante

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
4 Mai 2011 16:01:41

Bonjour,

SVP je veux charger une liste deroulante depuis ma BD mysql en utilisant le php5.

Merci :) 

Autres pages sur : charger liste deroulante

a c 232 L Programmation
4 Mai 2011 17:06:34

Salut,

Il faut utiliser le <select> en HTML.
Et tu fais une boucle sur tous tes éléments pour ajouter des <option>
m
0
l
4 Mai 2011 20:08:10

j'ai deja fait un code mais ça marche pas !! :??: 
m
0
l
Contenus similaires
a c 145 L Programmation
4 Mai 2011 21:39:12

Montre nous ce que tu as fait, ma boule de cristal est en révision.
m
0
l
4 Mai 2011 22:19:24

  1. <?php
  2.  
  3. $link = mysql_connect('127.0.0.1', 'root', '') or die (mysql_error());
  4.  
  5. mysql_select_db('site', $link) or die (mysql_error());
  6.  
  7. $req = 'SELECT activite FROM membres';
  8. $res = mysql_query($req,$link) or die (mysql_error());
  9.  
  10. echo "<select name='activite' id='activite'>";
  11. while ($ligne=mysql_fetch_array($res)){
  12. $valeur=$ligne['activite'];
  13. $libelle=$ligne['activite'];
  14. echo "<option value='$valeur'>$libelle</option>";
  15. }
  16. echo "</select>";
  17. ?>




  1. CREATE TABLE membres (
  2.  
  3. id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  4. civilite varchar(32) NOT NULL,
  5. nom varchar(32) NOT NULL,
  6. prenom varchar(32) NOT NULL,
  7. activite ENUM('Informatique', 'Marketing') NOT NULL,
  8. tel int(32) NOT NULL,
  9. noment varchar(32) NOT NULL,
  10. adresse varchar(32) NOT NULL,
  11. CP int(32) NOT NULL,
  12. ville varchar(32) NOT NULL,
  13. pays varchar(32) NOT NULL,
  14. email varchar(128) NOT NULL,
  15.  
  16. PRIMARY KEY (id),
  17. KEY pw (pw)
  18.  
  19. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
m
0
l
a c 232 L Programmation
4 Mai 2011 22:33:34

Et qu'est ce que ça te retourne ? Tu as un message d'erreur ?

Et tu es consciente que si tu as 0 membres, ça va te retourner rien; et que si tu as 10 membres qui ont l'activité "Informatique", ça va te retourner 10 fois "Informatique" ?
m
0
l
4 Mai 2011 22:43:22

je veux charger mon select du champs activite càd informatique,marketing,..

bah mon problème c'est que ma liste toujours vide ..
m
0
l
a c 232 L Programmation
4 Mai 2011 23:52:32

Et tu as des membres dans ta table ?
Tu as essayé d'activer le error_reporting au cas où ?
m
0
l
a c 145 L Programmation
5 Mai 2011 09:17:40

Ok, donc tu essayes de prendre la définition du champ activité comme source de données ? Ca ne marchera pas.

Il faut que tu fasses une table activite:
* id_activite INT(11)
* label_activite VARCHAR(32)

Et dans ta table membre, ton champ activite sera aussi un INT(11) qui prendra la valeur de l'id sélectionné dans la table précédemment créée.

  1. <?php
  2. $link = mysql_connect('127.0.0.1', 'root', '') or die (mysql_error());
  3. mysql_select_db('site', $link) or die (mysql_error());
  4. $req = 'SELECT * FROM activite';
  5. $res = mysql_query($req,$link) or die (mysql_error());
  6. echo '<select name="activite" id="activite">', chr(13), chr(10);
  7. while ($ligne=mysql_fetch_array($res)){
  8. echo '<option value="', $ligne['id_activite'], '">', $ligne['label_activite'], '</option>', chr(13), chr(10);
  9. }
  10. echo '</select>', chr(13), chr(10);
  11. ?>
m
0
l
5 Mai 2011 09:51:31

merci c'est une bonne idee mais dans l'insertion j'aurai un probleme ,c'est pour ça je pense de faire une structure mais je sais pas comment ??
m
0
l
a c 145 L Programmation
5 Mai 2011 10:00:05

Pourquoi aurais-tu un problème ?
m
0
l
5 Mai 2011 10:29:33

comment je vais faire l'insertion dans ma table membres : insert into membres (id,nom,prenom,.....) values('$id','$nom','$prenom,...') et en arrivant au champs activite comment je vais faire alors ?? :??: 
m
0
l
a c 145 L Programmation
5 Mai 2011 10:53:33

Tu mettras la valeur (numérique) du champ activité.
C'est plutôt pour récupérer la valeur littérale lors d'un affichage que c'est légèrement plus complexe, ta requête deviendra:
  1. SELECT m.*, a.label_activite
  2. FROM membres m
  3. JOIN activite a ON (a.id_activite = m.activite)
m
0
l
5 Mai 2011 11:03:35

je parle plutôt de l'insertion dans la BD ,pas de la jointure ..
m
0
l
a c 145 L Programmation
5 Mai 2011 11:36:07

Et bien je ne vois vraiment pas le problème de l'insertion.
Ton formulaire va envoyer $_POST['activite'] qui contiendra l'id de l'activité, il suffit de mettre cette valeur dans le champ activite de la table membres.

Il faut bien sûr que tu modifies ce champ, ce n'est plus un ENUM mais un INT(11).
m
0
l
5 Mai 2011 12:51:07

voila ce que j'ai fais :



<?php
$PARAM_hote='127.0.0.1'; // le chemin vers le serveur
$PARAM_nom_bd='site'; // le nom de votre base de données
$PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
$PARAM_mot_pwe=''; // mot de pwe de l'utilisateur pour se connecter
try
{
$connexion = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_pwe);
$req = $connexion->query('SELECT * FROM activite');

$res = mysql_query($req,$connexion);

echo "<select name='activite' id='activite'>";
while ($ligne=fetch($res)){
$valeur=$ligne['id_activite'];
$libelle=$ligne['label_activite'];
echo "<option value='$valeur'>$libelle</option>";
}
echo "</select>";
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
m
0
l
a c 145 L Programmation
5 Mai 2011 15:14:15

Outre le fait que l'utilisation des balises "code" et "/code" est pratique, j'aimerai bien voir ton formulaire complet et la page de traitement.
m
0
l
5 Mai 2011 15:42:57

desoler .. bah j'ai réglé le probleme de la liste deroulante mais maintenant je veux inserer dans ma BD

la page du formulaire
  1. <FORM action="../modules/traiter-inscription.php" method="post">
  2.  
  3. <table align="left" id="tableau" cellspacing="0" >
  4.  
  5. <!-- LES INFORMATIONS PERSONNELLES -->
  6. <tr><td colspan="4" class="gras"><div id="InsText"> <b >Vos informations</b><BR/><BR/></div></td></tr>
  7.  
  8. <tr><td>Civilité </td>
  9. <td colspan="3"><SELECT NAME="civilite" style="width:210px">
  10. <OPTION SELECTED VALUE="Me">Mlle
  11. <OPTION VALUE="Mm">Mme
  12. <OPTION VALUE="Mr">Mr</SELECT></td>
  13. </tr>
  14. <tr>
  15. <td class="top ">Nom </td>
  16. <td > <INPUT TYPE="text" NAME="nom" VALUE="" class="username" SIZE="30" MAXLENGTH="40"></td>
  17. <td class="top">Prénom </td>
  18. <td><INPUT TYPE="text" NAME="prenom" VALUE="" SIZE="30" MAXLENGTH="40"></td>
  19. </tr>
  20. <tr>
  21. <td class="top bas">Activité </td>
  22. <td ><select name='activite' style="width:210px">
  23. <option value='-1'>Choisir votre activité....</option>
  24.  
  25. <?php
  26.  
  27. $reponse = $bdd->query('SELECT * FROM activite');
  28. while ($donnees = $reponse->fetch())
  29. {
  30.  
  31. echo "<option value='".$donnees['id_activite']."'>".$donnees['label_activite']."</option>";
  32. }
  33. ?>
  34.  
  35. </select>
  36.  
  37. </td>
  38. <td class="top bas">Tél. </td>
  39. <td ><INPUT TYPE="text" NAME="tel" VALUE="" SIZE="30" MAXLENGTH="40"></td>
  40. </tr>
  41.  
  42.  
  43.  
  44. <!-- LES INFORMATIONS SUR L'ENTREPRISE -->
  45. <tr><td> </td></tr>
  46. <tr><td colspan="4" class="gras"><div id="InsText"> <b >Votre entreprise</b><BR/></div></td></tr>
  47. <tr> <td class="bas"> Nom </td>
  48. <td><INPUT TYPE="text" NAME="nomEnt" VALUE="" SIZE="30" MAXLENGTH="40"></td>
  49. </tr>
  50. <tr>
  51. <td >Adresse </td>
  52. <td colspan="3"><INPUT TYPE="text" NAME="adresse" VALUE="" SIZE="95" MAXLENGTH="40"></td>
  53. </tr>
  54. <tr>
  55. <td class="top bas">Code Postal</td>
  56. <td><input type="text" name="CP" value="" size="30" maxlength="40"></td>
  57. <td class="bas">Ville</td>
  58. <td><select name='ville' style="width:210px">
  59. <option value='-1'>Choisir votre ville....</option>
  60.  
  61. <?php
  62.  
  63. $reponse = $bdd->query('SELECT * FROM ville');
  64. while ($donnees = $reponse->fetch())
  65. {
  66.  
  67. echo "<option value='".$donnees['id_ville']."'>".$donnees['label_ville']."</option>";
  68. }
  69. ?>
  70.  
  71. </select></td>
  72. </tr>
  73.  
  74. <!-- LES INFORMATIONS PERSONNELLES -->
  75.  
  76. <tr><td>  </td></tr>
  77. <tr><td colspan="4" class="gras"><div id="InsText"> <b >Vos identifiants</b><BR/></div></td></tr>
  78. <tr>
  79. <td class="bas"> Email </td>
  80. <td><INPUT TYPE="text" NAME="email" VALUE="" SIZE="30" MAXLENGTH="40"></td>
  81. <td class="bas">Conf. email</td>
  82. <td><INPUT TYPE="text" NAME="confemail" VALUE="" SIZE="30" MAXLENGTH="40"></td>
  83. </tr>
  84. <tr>
  85. <td class="bas">Mot de passe </td>
  86. <td><INPUT TYPE="text" NAME="pw" VALUE="" SIZE="30" MAXLENGTH="40"></td>
  87. <td class="bas">Conf. mot de passe</td>
  88. <td><INPUT TYPE="text" NAME="confpw" VALUE="" SIZE="30" MAXLENGTH="40"></td>
  89. </tr>
  90. <tr>
  91. <td> <input type="image" name="envoyer" value="Envoyer" src="../images/envoyer.jpg"/></td>
  92. </tr>
  93. </table>
  94. </form>









la page de traitement : traiter-inscription.php


  1. <?php
  2. include ('../modeles/pdo.php');
  3.  
  4.  
  5. @session_start();
  6. echo "civilite = ".$_GET["civilite"]."<br>";
  7. echo "nom = ".$_GET["nom"]."<br>";
  8. echo "prenom = ".$_GET["prenom"]."<br>";
  9. echo "activite = ".$_GET["activite"]."<br>";
  10. echo "tel = ".$_GET["tel"]."<br>";
  11. echo "noment = ".$_GET["noment"]."<br>";
  12. echo "adresse = ".$_GET["adresse"]."<br>";
  13. echo "CP = ".$_GET["CP"]."<br>";
  14. echo "ville = ".$_GET["ville"]."<br>";
  15. echo "pays = ".$_GET["pays"]."<br>";
  16. echo "email = ".$_GET["email"]."<br>";
  17. echo "pw = ".$_POST["pays"]."<br>";
  18. echo "confemail = ".$_GET["confemail"]."<br>";
  19. echo "confpw = "$_POST["confpw"]."<br>";
  20.  
  21.  
  22.  
  23. // Affichage du formulaire
  24. include ('../vues/formulaire_inscription.php');
  25.  
  26. // Création d'un tableau des erreurs
  27. $erreurs_inscription = array();
  28.  
  29. // Validation des champs suivant les règles en utilisant les données du tableau $_POST
  30.  
  31.  
  32. // On vérifie si les 2 mots de pwe correspondent
  33. if ($_POST['pw'] != $_POST['confpw']) {
  34.  
  35. $erreurs_inscription[] = "Les deux mots de passe entrés sont différents !";
  36. }
  37.  
  38. // Si d'autres erreurs ne sont pas survenues
  39. if (empty($erreurs_inscription)) {
  40.  
  41. // Traitement du formulaire à faire ici
  42.  
  43. } else {
  44.  
  45. // On affiche à nouveau le formulaire d'inscription
  46. include '../vues/formulaire_inscription.php';
  47. }
  48.  
  49.  
  50.  
  51. $hash_validation = md5(uniqid(rand(), true));
  52.  
  53.  
  54. // On veut utiliser le modele de l'inscription (~/modeles/inscription.php)
  55. include '../modeles/modeleInscription.php';
  56.  
  57. // ajouter_membre_dans_bdd() est défini dans ~/modeles/inscription.php
  58. $id = ajouter_membre_dans_bdd($civilite,$nom,$prenom,$activite,$tel,$noment,$adresse,$CP,$ville,$pays,
  59. $email, sha1($pw),$hash_validation);
  60.  
  61. // Si la base de données a bien voulu ajouter l'utliisateur (pas de doublons)
  62. if (ctype_digit($id)) {
  63.  
  64. // On transforme la chaine en entier
  65. $id = (int) $id;
  66.  
  67. // Preparation du mail
  68.  
  69.  
  70.  
  71. // Affichage de la confirmation de l'inscription
  72. include 'inscription_effectuee.php';
  73.  
  74. // Gestion des doublons
  75. } else {
  76.  
  77. // Changement de nom de variable (plus lisible)
  78. $erreur =& $id;
  79.  
  80. // On vérifie que l'erreur concerne bien un doublon
  81. if (23000 == $erreur[0]) { // Le code d'erreur 23000 siginife "doublon" dans le standard ANSI SQL
  82.  
  83. preg_match("`Duplicate entry '(.+)' for key \d+`is", $erreur[2], $valeur_probleme);
  84. $valeur_probleme = $valeur_probleme[1];
  85.  
  86. if ($email == $valeur_probleme) {
  87.  
  88. $erreurs_inscription[] = "Cette adresse e-mail est déjà utilisée.";
  89.  
  90. } else {
  91.  
  92. $erreurs_inscription[] = "Erreur ajout SQL : doublon non identifié présent dans la base de données.";
  93. }
  94.  
  95. } else {
  96.  
  97. $erreurs_inscription[] = sprintf("Erreur ajout SQL : cas non traité (SQLSTATE = %d).", $erreur[0]);
  98. }
  99.  
  100. // On reaffiche le formulaire d'inscription
  101. include '../vues/inscription.php';
  102. }
  103. */
  104.  
  105.  
  106. ?>



la page modele_inscripton




  1. <?php
  2. include ('../modeles/pdo.php');
  3.  
  4. function ajouter_membre_dans_bdd($civilite,$nom, $prenom,$activite,$tel,$noment,$adresse,$CP,$ville,$pays,$email,$pw) {
  5.  
  6.  
  7.  
  8. $requete = ("INSERT INTO membres SET
  9. civilite = :civilite,
  10. nom = :nom,
  11. prenom = :prenom,
  12. activite = :activite,
  13. tel = :tel,
  14. noment = :noment,
  15. adresse = :adresse,
  16. CP = :CP,
  17. ville = :ville,
  18. pays = :pays,
  19. email = :email,
  20. pw = :pw,
  21. date_inscription = NOW()");
  22.  
  23. $requete->bindValue(':civilite', $civilite);
  24. $requete->bindValue(':nom', $nom);
  25. $requete->bindValue(':prenom', $prenom);
  26. $requete->bindValue(':activite', $activite);
  27. $requete->bindValue(':tel', $tel);
  28. $requete->bindValue(':noment', $noment);
  29. $requete->bindValue(':adresse', $adresse);
  30. $requete->bindValue(':CP', $CP);
  31. $requete->bindValue(':ville', $ville);
  32. $requete->bindValue(':pays', $pays);
  33. $requete->bindValue(':email', $email);
  34. $requete->bindValue(':pw', $pw);
  35.  
  36. if ($requete->execute()) {
  37.  
  38. return $pdo->lastInsertId();
  39. }
  40. return $requete->errorInfo();
  41. }
  42.  
  43.  
  44. ?>

m
0
l
a c 145 L Programmation
5 Mai 2011 16:02:12

Remplace tes $_GET par des $_POST et ça devrait marcher.
m
0
l
5 Mai 2011 20:27:20

je pense pas que ça va marcher :??:  puisque c'est pas ça le problème :sweat: 
m
0
l
a c 145 L Programmation
5 Mai 2011 21:23:06

Alors explique ton problème.
m
0
l
6 Mai 2011 09:52:53

mon probleme c'est que dans la validation du formulaire par l'user je vais inserer dans la BD et là j'ai trois table , membres(id,nom,prenom,...,id_activite,id_ville) ; activite(id_activite,label_activite) ; ville(id_ville,label_ville) ... comment je vais faire alors ??
insert into membres(???) values (??);
m
0
l
a c 145 L Programmation
6 Mai 2011 11:18:33

Tes tables ville et activite sont des tables de référence, le formulaire ne doit rien insérer dedans.
Tu ne dois insérer que dans la table membres.
m
0
l
6 Mai 2011 12:03:35

ok c'est bon .. j'essaye maintenant de régler d'autres erreurs ... merci
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS