Liste déroulante

PiOUPiOU_38 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
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

A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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   Statut Membre Dernière intervention  
 

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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > PiOUPiOU_38 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 

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   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 

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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > PiOUPiOU_38 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 

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

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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   Statut Membre Dernière intervention  
 

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

0