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 :

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
    Bonjour,

    J'ai un problème sur une page de suivi de commandes. Je m'explique. Je dois choisir une infrastructure et une date de début, une date de fin.
    J'ai 5 infrastructures, les 4 premières fonctionnent mais la dernière m'affiche une erreur (celle du titre).

    Je suis en FPDF et le but de mes lignes et d'afficher le suivi en PDF.

    Tout d'abord je ne comprends pas pourquoi pour les 4 premières cela fonctionne et pas pour la dernière alors que rien ne change, mais je comprends encore moins pour cela m'affiche cette erreur alors que ça exécute le code quand même et que mon PDF se remplit.

    Néanmoins, j'aimerais quand même virer cette erreur, qu'elle ne s'affiche plus sur ma page.

    Je ne vais vous mettre que le code PHP basique sans le code FPDF car le problème est sur mon mysqli_fetch_array et que le FPDF fonctionne très bien.

    Bien entendu les variables utilisées ont toutes été déclarées avant, inutile de les remettre ici.

    L'erreur s'affiche sur la ligne 11 du code ci-dessous.

    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
     
    $sql1 = "SELECT id_site, nom FROM SITE WHERE infrastructure='$infra'";
    $requete1 = mysqli_query($base,$sql1);
    while($ligne1 = mysqli_fetch_array($requete1)){
    	$nom = $ligne1['nom'];
    	$id = $ligne1['id_site'];
     
            $sql2 = "SELECT id_cmd, nomdest, datecommande, libelle, THT FROM BONCOMMANDE B, SITE S WHERE B.ville='$nom' AND S.id_site='$id' AND datecommande BETWEEN '$dateDebut' AND '$dateFin'";
    	$requete2 = mysqli_query($base,$sql2);
     
    	while($ligne2 = mysqli_fetch_array($requete2)){
    		$idCommande = isset($ligne2['id_cmd']) ? $ligne2['id_cmd'] : null;
    		$nomDestinataire = isset($ligne2['nomdest']) ? $ligne2['nomdest'] : null;
    		$dateCommande = isset($ligne2['datecommande']) ? $ligne2['datecommande'] : null;
    		$libelle = isset($ligne2['libelle']) ? $ligne2['libelle'] : null;
    		$tht = isset($ligne2['THT']) ? $ligne2['THT'] : null;
     
                    //Instructions d'ajout dans le tableau en FPDF.
            }
    }
    Cordialement.

  2. #2
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while($ligne2 = mysqli_fetch_array($requete2)){
    l'erreur est ici, soit tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($ligne2 = mysqli_fetch_row($requete2)){
    soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $tab= mysqli_fetch_array($requete2)
    foreach ($tab as $row)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Pour la première solution, cela n'affiche exactement la même erreur mais pour le mysqli_fetch_row.

    De plus comme cité plus haut je ne comprends pas pourquoi cela fonctionne sur 4 choix et pas sur celui-là.

    Pour la deuxième solution, comment fonctionne un foreach ? Je n'en ai jamais utilisé. Comme un for normal ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    ça te met la même erreur car il faut le faire pour les 2 boucles while bien entendu
    pour le foreach c'est pas la doc qui manque je te laisse faire une petite recherche google

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Cela signifie que ta requête n'a pas fonctionné.
    Contrôle tes erreurs mysqli.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par -Rpass- Voir le message
    ça te met la même erreur car il faut le faire pour les 2 boucles while bien entendu
    pour le foreach c'est pas la doc qui manque je te laisse faire une petite recherche google
    En utilisant le row et en l'adaptant à toutes mes lignes, cela me met toujours la même erreur.
    Idem pour le foreach, je commande à désespérer. ^^

    Citation Envoyé par sabotage Voir le message
    Cela signifie que ta requête n'a pas fonctionné.
    Contrôle tes erreurs mysqli.
    C'est à dire ? Parce que je pense que ma requête fonctionne car mon PDF se met à jour. Les instructions se font, je récupère les bonnes valeurs, mais cette erreur s'affiche tout de même et SEULEMENT pour cette option là. C'est ça que je trouve bizarre.

  7. #7
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    autant pour moi j'ai dis n'importe quoi fetch_array et fetch_row fonctionne pareil ^^ on dirait qu'il passe une fois de trop dans ta boucle d'ou peut être l'erreur qui est affiché à la fin du parcours ....

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Tu veux dire qu'en gros il s'arrêterait à 4 tours et que le 5ème serait de trop ?
    Possible mais bizarre.. et chiant. ^^

  9. #9
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requete2 = mysqli_query($base,$sql2);
     
    	while($ligne2 = mysqli_fetch_array($requete2)){
    mysqli_query peut renvoyer false ou un jeu de résultat. Dans ton cas ça a du te renvoyer faux à un moment ce qui entraine l'erreur avec "boolean given".
    Il faut toujours vérifier qu'il n'y ait pas d'erreur avant de traiter le résultat
    Pour enlever l'erreur tu peux mettre un test avant le while :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requete2 = mysqli_query($base,$sql2);
        if ( $requete2) {
    	while($ligne2 = mysqli_fetch_array($requete2)){
    ça devrait marcher ^^

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Oui enfin une requête n'est pas censé produire une erreur.
    L'intercepter c'est bien, la corriger c'est mieux.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Ah merci ça a fonctionné ! Cela ne m'affiche plus l'erreur !

    Sabotage je sais bien, mais je ne vois aucune solution, je ne comprends même pas l'erreur car les instructions se faisaient quand même, si tu as une solution je suis preneur.

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme je t'ai dit, il faut afficher les erreurs mysqli.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Et on fait ça à l'aide de quoi ?

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Premier résultat d'une recherche "mysqli erreur" :
    http://php.net/manual/fr/mysqli.error.php

    Tu as également le fichier de log mysql directement qui peut t'indiquer les erreurs dans les requêteS.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    J'ai essayé mais ça ne m'avance pas.
    Je place ce post en résolu, merci beaucoup !

  16. #16
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Oui enfin une requête n'est pas censé produire une erreur.
    L'intercepter c'est bien, la corriger c'est mieux.
    exact, la solution ne fait que cacher l'erreur ^^

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

Discussions similaires

  1. [MySQL] Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in
    Par Trebor_ dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/06/2015, 14h10
  2. [MySQL] Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in
    Par Sarah sh dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/12/2013, 18h12
  3. Réponses: 3
    Dernier message: 04/08/2012, 13h11
  4. [MySQL] Message : Warning: mysqli_free_result() expects parameter 1 to be mysqli_result
    Par Alexandrebox dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 18/02/2009, 15h03

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