Boite SELECT dynamique

Résolu
Bonjour,

voila mon petit problème:

Besoin d'avoir une boite SELECT dynamique dont voici le code:

mysql_connect($host, $user, $passwd) or die('Erreur de connexion');
mysql_select_db($bdd) or die('Base inexistante');
$sql = 'SELECT ville FROM T_evenement;';
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( !$nb[0] ) {
echo '<option>Aucune ville disponible</option>';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
echo "<option value='".$list['ville']."'>".$list['ville']."</option>"; }
}
mysql_close();
?>
</select>
</form>


La connexion ce fait, mais la boite est vide, je n'ai aucun choix hors dans ma table il y a bien des entrés.

Merci pour votre aide.

3 réponses

Résumé de la discussion

Une boîte SELECT dynamique doit afficher les villes issues d'une requête MySQL sur T_evenement, mais aucun élément ne s'affiche malgré la présence d'entrées dans la table. Le problème vient d'une vérification du nombre de résultats: mysql_num_rows($query) renvoie un entier, et la condition utilise !$nb[0] au lieu de $nb == 0. L'approche recommandée est d'utiliser if ($nb == 0) pour gérer l'absence de résultats et d'utiliser une boucle while ( $list = mysql_fetch_array($query) ) pour générer les options. D'autres ajustements utiles incluent l'utilisation de l'extension mysqli ou PDO et l'échappement des valeurs récupérées pour éviter les failles XSS.

Bobot (l’IA à votre service)
  1. Salut,

    Remplace if ( !$nb[0] ) { par if ($nb != 0) {
    1. Salut,

      ça ne change rien :/
    2. Essaie :
      $sql = 'SELECT ville FROM T_evenement';
      $query = mysql_query($sql) or die( 'Erreur' );
      $nb = mysql_num_rows($query);
      if ($nb != 0) {
    3. toujours pas :(
    4. Oh, pardon, quel idiot je fais ! C'est if ($nb == 0)
    5. ca marche, merci beaucoup/

      Par contre j'ai encore une question :) désolé je débute :/

      je n'arrive pas afficher le résultat de cette boite en sélectionnant la ville.

      Voici mon code qui est dans le même tableau:

      <td width="191" height="2" bgcolor="#7DB85A"></td>
      <td width="20"> </td>
      </tr>
      <tr>
      <td height="623"> </td>
      <td align="left" valign="top" bgcolor="#FFFFFF"><?php
      mysql_connect($host, $user, $passwd) or die('Erreur de connexion');
      mysql_select_db($bdd) or die('Base inexistante');
      $sql = "SELECT DATE_FORMAT(date, '%d-%m-%Y') as datefr,jour,nom_event,descriptif,adresse,code_postal,ville,heure,contact FROM T_evenement WHERE ville = '".$_POST['ville']."';";
      $query = mysql_query($sql) or die( 'Erreur' );
      $result = mysql_query($query);

      // Recuperation des resultats
      while ( $list = mysql_fetch_array( $query ) ) {

      $Datefr = $row[0];

      $Jour = $row[1];

      $Nom_event = $row[2];

      $Descriptif = $row[3];

      $Adresse = $row[4];

      $Code_postal = $row[5];

      $Ville = $row[6];

      $Heure = $row[7];

      $Contact = $row[8];

      echo "<tr>\n
      <td>$Datefr</td>\n
      <td>$Jour</td>\n
      <td>$Nom_event</a></td>\n
      <td>$Descriptif</td>\n
      <td>$Adresse</a></td>\n
      <td>$Code_postal</td>\n
      <td>$Ville</td>\n
      <td>$Heure</td>\n
      <td>$Contact</td>\n
      </tr>\n";

      }

      // Deconnexion de la base de donnees
      mysql_close();
      ?>
      <p> </p></td>
  2. Contributeur
    Salut!
    Essaye ça:
    mysql_connect($host, $user, $passwd) or die('Erreur de connexion'); 
    mysql_select_db($bdd) or die('Base inexistante'); 
    $sql = 'SELECT ville FROM T_evenement'; 
    $query = mysql_query($sql) or die( 'Erreur' ); 
    $nb = mysql_num_rows($query); 
    if ( !$nb[0] ) { 
    echo '<option>Aucune ville disponible</option>'; 
    } else { 
    while ( $list = mysql_fetch_array( $query ) ) { 
    echo "<option value='".$list['ville']."'>".$list['ville']."</option>"; } 
    } 
    mysql_close(); 
    ?> 
    </select> 
    </form> 
    

    Cdt
    1. Bonjour,

      La boite reste vide avec ton code :/

      Le code du dessus rempli bien la boite avec les données (multipliées par le nombres d'entrées :/ ) mais le résultat ne s'affiche pas.
    2. Contributeur
      le résultat ne s'affiche pas?je ne comprends pas ce que tu veux dire par là
    3. lorsque je clic sur lune ville dans la boite, je devrais avoir des données (d'une table) qui s'affiche, et la rien .
  3. Re bonjour,

    Ne faudrait il pas qu'il y est un bouton pour valider le choix dans le menu déroulant afin qu'un fonction l'appel la sélection?
    1. c'est ça la solution. le bouton valider submit.

      Comment mettre RESOLU?