Liste déroulante

PiOUPiOU_38 Messages postés 6 Statut Membre -  
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

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    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
    1. PiOUPiOU_38 Messages postés 6 Statut Membre
       

      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
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > PiOUPiOU_38 Messages postés 6 Statut Membre
         

        Tu as oublié la connexion à la bdd 

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

        0
      2. PiOUPiOU_38 Messages postés 6 Statut Membre > jordane45 Messages postés 30426 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
      3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > PiOUPiOU_38 Messages postés 6 Statut Membre
         

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

        0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    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
    1. PiOUPiOU_38 Messages postés 6 Statut Membre
       

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

      0