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

PHP & Base de données Discussion :

Undefined variable: query [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant communication & réseaux
    Inscrit en
    Novembre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant communication & réseaux

    Informations forums :
    Inscription : Novembre 2014
    Messages : 57
    Par défaut Undefined variable: query
    Bonjour,

    J'essaye en vain de venir à bout d'une erreur pourtant assez documentée sur le net mais malgré tout je ne vois pas où est mon erreur.

    J'aimerai afficher dans une page html un résultat par défaut au chargement de la page. Lorsque je charge ma page j'ai l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined variable: query in G:\Dropbox\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\htdocs\bugzilla_stats\index.php on line 206
    Voila le bout de code qui pose probleme:

    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
     
    <?php
    if ($query){
            while ($row = mysqli_fetch_array($query)){		
    			echo '<tr>
    					<td>'.$row['bug_id'].'</td>
    					<td>'.$row['client'].'</td>
                        <td>'.$row['product_id'].'</td>
                        <td>'.$row['plateforme'].'</td>
              <!--      <td>'.$row['severity_id'].'</td> -->
                        <td>'.$row['severité'].'</td>
                        <td>'.$row['bug_when'].'</td>
                        <td>'.$row['count'].'</td>
    				</tr>';
    		}
    }else{
        return NULL;
    }
    ?>
    Ci dessous le code où je poste mes variables:

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
     
    //*************************
    //filtre sur la date
    //*************************
     
    // calcul des dates de debut et de fin par rapport à la date du jour par défaut
     
     
    //si la date debut n'est pas vide
    if(!empty($_POST['startdate'])){
     
        $startdate=date('Y-m-d',strtotime($_POST['startdate']));
     
    }else{
     
        //date par défaut : date du jour -7 jours
        $startdate=date('Y-m-d', strtotime("-7 days"));
    }
     
    //si la date de fin de période n'est pas vide
    if(!empty($_POST['enddate'])){
     
        $enddate=date('Y-m-d',strtotime($_POST['enddate']));
     
    }else{
     
        //date par défaut : date du jour +7 jours
        $enddate=date('Y-m-d', strtotime("+7 days"));
    }
    $sql .=" AND `bugs_activity`.`bug_when` between '$startdate' and '$enddate'";
     
     
    //*************************
    // filtre par client
    //*************************
     
    if(!empty($_POST['cbclient'])){
     
        $clt = $_POST['cbclient'];
        $sql .=" AND `bugs`.`product_id` = '$clt'";
     
    }
     
    //*************************
    // filtre sur la severite
    //*************************
     
    if(!empty($_POST['cbsev'])){
     
        $severite = $_POST['cbsev'];
        $sql .=" AND `bug_severity`.`id` = '$severite'";
     
    }
    //*************************
     
     
    //fin de requete
    $sql .= " GROUP BY `bugs_activity`.`bug_id`";
    $sql .= " ORDER BY BUG_ID ASC";
     
     
    //a enlever: Affichage de la requete debug
    //echo $sql;
     
    $query = mysqli_query($conn, $sql);
    if(!$query){
            die ('SQL Error: ' . mysqli_error($conn));
        }    
    echo "</table>";
     
    mysqli_close($conn);
    }
    ?>
    merci pour votre aide,

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($query)){
     
    }
    Vérifie qu'une variable existe

    if($query){} signifie que tu POSES que $query existe et que tu veux juste vérifier si sa valeur n'est pas équivalente à false... C'est très différent donc.
    Donc le warning te dit "mouarf ! même pas vrai !"

    Autre exemple plus loin dans ton code :
    Toi (ou quelqu'un d'autre a fait cette ligne)
    Cette fois c'est bon : mysqli_query retournant soit ton résultat de requête, soit FALSE...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query = mysqli_query($conn, $sql);
    if(!$query){
        die ('SQL Error: ' . mysqli_error($conn));
    }
    Mais je trouve ceci encore plus clair à la compréhension

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query = mysqli_query($conn, $sql);
    //si $query est exactement false, puisqu'il existe de toute façon
    if($query===false){
        die ('SQL Error: ' . mysqli_error($conn));
    }
    ATTENTION erreur fréquente :
    On sait qu'un booléen est soit vrai soit faux, OK !
    Mais les valeurs retournées par une fonction ne sont pas soit vraies soit fausses.
    Plein de fonctions natives PHP ont ainsi ce comportement : si tout se passe bien, retourne les valeurs attendues, sinon, retourne false, juste pour signaler une erreur.
    alors dans ce cas précis, !==false signifiera "tout s'est bien passé". Mais ===true lui ne voudra rien dire.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Non :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if( !empty($query) ){
     ...
    }

    @Dendrite
    if( $variable ) vaut true si $variable n'est pas équivalent à false.
    PAS que $variable est équivalent à true (ni que c'est un booléen).
    La nuance est importante.

    Ex. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $variable = 'coucou';
    if( $variable )
    { echo $variable . ' est vrai !'; }
    else { echo $variable . ' est faux !'; }
    Affiche : "coucou est vrai !"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $variable = 0;
    if( $variable )
    { echo $variable . ' est vrai !'; }
    else { echo $variable . ' est faux !'; }
    Affiche : "0 est faux !"

    Alors que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $variable = 0;
    if( isset($variable) )
    { echo $variable . ' est vrai (existe) !'; }
    else { echo $variable . ' est faux !'; }
    Affiche : "0 est vrai (existe) !"


    [Édit] tu as dû modifier ton message après le mien, car je n'avais pas vu ton encart "gros piège classique..."

    Petite précision :
    • Une condition qui n'est pas false est forcément true ! (c'est... la logique même !)
    • Par contre, ça ne veut pas dire que la variable est équivalente à true.

    Quant à ($var===true) : on attend que la variable égale le booléen true, et rien d'autre.
    Sinon c'est false.
    Dernière modification par Invité ; 02/05/2018 à 13h09.

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    OKI Jreaux, je corrige.

    edit : done ! merci.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant communication & réseaux
    Inscrit en
    Novembre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant communication & réseaux

    Informations forums :
    Inscription : Novembre 2014
    Messages : 57
    Par défaut
    merci tout le monde pour vos réponses. Je n'ai plus l'erreur maintenant.

    j'ai un autre souci mais je vais cloturer ce sujet

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

Discussions similaires

  1. [PDO] Undefined variable + Call to a member function query() on a non-object + MVC
    Par blopjerem dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/10/2009, 20h35
  2. Notice: Undefined variable
    Par oranoutan dans le forum Langage
    Réponses: 19
    Dernier message: 21/12/2005, 22h28
  3. undefined variable
    Par ept35 dans le forum Langage
    Réponses: 3
    Dernier message: 30/11/2005, 15h48
  4. Notice: Undefined variable
    Par kayn dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2005, 20h44
  5. Réponses: 3
    Dernier message: 22/09/2005, 11h24

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