IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comment éviter d'afficher une erreur quand table vide


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 121
    Points : 73
    Points
    73
    Par défaut Comment éviter d'afficher une erreur quand table vide
    J'ai une page qui affiche les resultats d'une requete.
    Le probleme, c'est que parfois, il n'y a rien dans la table donc dans ce cas, il affiche une erreur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $reponse = mysql_query($sql) or die (mysql_error());
     
    while ($donnees = mysql_fetch_assoc($reponse))
    {
    $ligne[] = $donnees;
     
    echo '$donnees['ST1']';
     
    .....
     
    }
    Et apres:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach($ligne as $donnees)
    {
     
    echo '$donnees['Nom']'
     
    ....
     
    }
    Comment éviter cela (l'erreur du foreach quand pas de nom)?

  2. #2
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut
    tu peux faire un test du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (count($ligne)){
    foreach($ligne as $donnees)
    {
     
    echo '$donnees['Nom']'
     
    ....
     
    }
    }
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach($ligne as $donnees)
    {
    if (isset($donnees['Nom']) echo $donnees['Nom'];
     
    ....
     
    }
    à noter que n'affichera rien.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 121
    Points : 73
    Points
    73
    Par défaut
    J'ai essayer les deux méthodes mais la premiere affiche toujours une erreur
    et la deuxieme n'affiche rien meme quand il y a quelque chose dans la table...

    Notice: Undefined variable: ligne in C:\Users\Jean-Pierre\Desktop\Webmaster\Serveur local\EasyPHP 2.0b1\www\test\2008-2009\classement.php on line 90

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <?php
     
    if (count($ligne)){
     
    foreach($ligne as $donnees)
    {
     
    static $d=1 ;
    ?>
     
     
    <tr>
    <td><?php echo $d++ ; ?>.</td>
    <td><?php echo htmlentities($donnees['Nom']); ?></td>
    <td><?php echo htmlentities($donnees['Prenom']); ?></td>
    <td><?php echo $donnees['Total']; ?></td>
    </tr>
     
     
    <?php
    }
     
    }
    else
    {
    echo 'Vide';
    }
     
    mysql_close();
    ?>

    Je me suis trompé quelque part ?

  4. #4
    Membre éprouvé Avatar de Alvaten
    Homme Profil pro
    Développeur Java / Grails
    Inscrit en
    Novembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java / Grails
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 324
    Points : 1 023
    Points
    1 023
    Par défaut
    Salut,

    Apparament, ta variable ligne n'est pas renseigné. Il y a plusieurs posibilités:

    Soit tu fais un if(isset()), soit tu l'initialise au début de ta page.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?php
     
    if (isset($ligne))
    {
       foreach($ligne as $donnees)
       {
           static $d=1 ;
       }
    {
     
    // ou (à mettre au début de la page)
     
    $ligne = array();
     
    ?>

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut
    bonjour,

    essaye

  6. #6
    Membre éprouvé Avatar de Alvaten
    Homme Profil pro
    Développeur Java / Grails
    Inscrit en
    Novembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java / Grails
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 324
    Points : 1 023
    Points
    1 023
    Par défaut
    A mon avis le count ne changera rien, si $table est vide le foreach ne plantera pas, il va simplement ne pas s'exectuer.

    L'erreur viens uniquement si la variable n'est pas définie.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 121
    Points : 73
    Points
    73
    Par défaut
    Nickel, j'ai fais avec if (isset($ligne)).
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Comment afficher une erreur après un remove ->flush ?
    Par keokaz dans le forum Symfony
    Réponses: 4
    Dernier message: 01/09/2012, 13h28
  2. Réponses: 7
    Dernier message: 25/08/2006, 14h15
  3. Réponses: 8
    Dernier message: 11/08/2006, 14h13
  4. Comment faire pour afficher une image ds une dbgrid
    Par totomaze dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/10/2004, 15h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo