Liste déroulante
PiOUPiOU_38 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dois réaliser une liste déroulante contenant les données d'une table de ma base de données.
J'ai essayé de me débrouiller seul et en regardant sur le forum mais je n'y arrive pas, voici mon code :
<form method="post" action="index.php"> <select name="liste"> <?php sql = 'SELECT nom,surnom FROM heros WHERE cote_obscur=0 and secondaire=0 ORDER BY premiere_apparition'; $list = mysql_query($sql); while ($data = mysql_fetch_array($list)) {echo'<option value="'.$data['nom'].'">'.$data['surnom'].'</option>';} ?> </select> </form>
Windows / Chrome 104.0.0.0
- Liste déroulante
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Liste code ascii - Guide
- Site dangereux liste - Guide
2 réponses
Bonjour,
Pour commencer... quelle version de PHP utilises tu ?
Car les instructions mysql_* sont obsolètes (et même supprimées) sur les versions récentes de php.
Si tu ne le sais pas quelle version tu as, fais un fichier contenant un phpinfo()
https://www.php.net/manual/fr/function.phpinfo.php .
Si la version de php est > 7, il te faudra utiliser PDO ou mysqli
Voici à quoi pourrait ressembler ton code
<?php //------------------------------------------------------------- //Affichage des erreurs PHP //------------------------------------------------------------- error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); date_default_timezone_set('Europe/Brussels'); $hote = 'localhost'; $nomBD = 'jedis'; $user = 'root'; $password = ''; $port = 3306; //------------------------------------------------------------- // connexion à la bdd //------------------------------------------------------------- try { $bd = new PDO('mysql:host='.$hote.';port='.$port.';dbname='.$nomBD.'; charset=utf8', $user, $password); // Activation des erreurs PDO $bd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //------------------------------------------------------------- //récupération de la liste des catégories //------------------------------------------------------------- //préparation de la requête et des variables $sql = 'SELECT nom,surnom FROM heros WHERE cote_obscur= :cote_obscur and secondaire= :secondaire ORDER BY premiere_apparition'; $datas = array(':cote_obscur'=>0, ':secondaire'=>0); //Execution de la requete try{ $requete = $bd -> prepare($sql) ; $requete->execute($datas) ; $categories = $requete->fetchAll(); // on stocke le résultat de la requête dans un array }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } ?> <form method="GET" action="index.php"> <select name="liste"> <?php if(!empty($categories)){ foreach($categories as $cat ){ echo '<option value="'.$cat->nom.'">'. $cat->nom . $cat->surnom . '</option>'; } } ?> </select> <input type="submit" name="valider" value="go" /> </form>
A noter que le port par défaut c'est le 3306 .. mais si toi c'est 3307, je te laisse modifier cette valeur...
J'ai une version php >7, je débute en php donc je ne sais pas trop comment utiliser PDO pour que les éléments de ma table s'affichent dans la liste déroulante.
J'ai essayé ceci mais rien ne s'affiche dans la liste :
Tu as oublié la connexion à la bdd
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
je suis bien connecté à la bd mais ça ne fonctionne toujours pas
Tu n'as pas appliqué ce qui est indiqué dans le lien que je t'ai donné...