Liste déroulante

Fermé
PiOUPiOU_38 Messages postés 6 Date d'inscription dimanche 22 août 2021 Statut Membre Dernière intervention 24 août 2022 - Modifié le 24 août 2022 à 11:53
PiOUPiOU_38 Messages postés 6 Date d'inscription dimanche 22 août 2021 Statut Membre Dernière intervention 24 août 2022 - 24 août 2022 à 15:46

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

jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 665
24 août 2022 à 12:01

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 


0
PiOUPiOU_38 Messages postés 6 Date d'inscription dimanche 22 août 2021 Statut Membre Dernière intervention 24 août 2022
24 août 2022 à 12:50

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>
0
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 665 > PiOUPiOU_38 Messages postés 6 Date d'inscription dimanche 22 août 2021 Statut Membre Dernière intervention 24 août 2022
24 août 2022 à 13:46

Tu as oublié la connexion à la bdd 

https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

0
PiOUPiOU_38 Messages postés 6 Date d'inscription dimanche 22 août 2021 Statut Membre Dernière intervention 24 août 2022 > jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024
24 août 2022 à 14:40

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>
0
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 665 > PiOUPiOU_38 Messages postés 6 Date d'inscription dimanche 22 août 2021 Statut Membre Dernière intervention 24 août 2022
Modifié le 24 août 2022 à 15:09

Tu n'as pas appliqué ce qui est indiqué dans le lien que je t'ai donné...

0
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 665
24 août 2022 à 15:41

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...


0
PiOUPiOU_38 Messages postés 6 Date d'inscription dimanche 22 août 2021 Statut Membre Dernière intervention 24 août 2022
24 août 2022 à 15:46

Merci bcp de m'avoir envoyé le code, je vais essayer de comprendre maintenant

0