Liste déroulante
PiOUPiOU_38 Messages postés 6 Statut Membre -
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
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
-
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 :
<form method="post" action="index.php"> <select name="liste"> <?php $reqCat=$bd->prepare('SELECT nom,surnom FROM heros WHERE cote_obscur=0 and secondaire=0 ORDER BY premiere_apparition'); $reqCat->execute(); $reqCat->setFetchMode (PDO::FETCH_OBJ); while ($result=$reqCat->FETCH() ) { echo '<p>',$result->nom,$result->surnom; } $reqCat->closeCursor(); ?> </select> </form>je suis bien connecté à la bd mais ça ne fonctionne toujours pas
<?php date_default_timezone_set('Europe/Brussels'); $hote = 'localhost'; $nomBD = 'jedis'; $user = 'root'; $password = ''; try { $bd = new PDO('mysql:host='.$hote.';port=3307;dbname='.$nomBD, $user, $password); $bd->exec("SET NAMES 'utf8'"); } catch (Exception $e) { echo 'ça marche pas'; } ?> <form method="GET" action="index.php"> <select name="liste"> <?php $reqCat=$bd->prepare('SELECT nom,surnom FROM heros WHERE cote_obscur=0 and secondaire=0 ORDER BY premiere_apparition'); $reqCat->execute(); $reqCat->setFetchMode (PDO::FETCH_OBJ); while ($result=$reqCat->FETCH() ) { echo '<p>',$result->nom,$result->surnom; } $reqCat->closeCursor(); ?> </select> </form>
-
-
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...