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 :

if(mysql_num_rows($result) == 0) { me donne un resultat ! [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 277
    Par défaut if(mysql_num_rows($result) == 0) { me donne un resultat !
    Bonjour,

    Je comprends pas pourquoi ça marche

    Pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(mysql_num_rows($result) == 0) {
    me donne un résultat lorsque les champs sont vides dans la base et donc == 0

    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
     
    $result = $mysql->query("
    SELECT 
            B.champ1,champ2,
            C.champ3,champ4
     
    FROM 
            table1 B,
            table2 C 
    WHERE 
            B.champ1 = C.champ3
    ");
    if($result)
    {     
    list($champ1,$champ2,$champ3,$champ4)=mysql_fetch_row($result) ;
     
    if(mysql_num_rows($result) == 0) {
    //n'affiche rien (enfin normalement et c'est ça le problème !!!)
    $page->addhtml('');
    } //ferme si pas de resultat
    if(mysql_num_rows($result) > 0) {
    //si resultat alors affiche:
    $page->addhtml(' 
    affiche champ1 = '.$champ1.'
    affiche champ4 = '.$champ4.'
    ');
    }//ferme si resultat
    }//ferme la requete sql
    Cette requête fonctionne bien, même trop bien puisqu'elle affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $page->addhtml(' 
    affiche champ1 = '.$champ1.'
    affiche champ4 = '.$champ4.'
    ');
    même lorsque les champs sont vide et == 0

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(mysql_num_rows($result) == 0) {
    //n'affiche rien (enfin normalement et c'est ça le problème !!!)
    $page->addhtml('');
    } //ferme si pas de resultat
    ne fonctionne pas

    Pourquoi ?

    Merci d'avance

  2. #2
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    mysql_num_rows retourne false (qui est aussi equivalent à 0) si une erreur survient. Tu as donc une erreur qui est vérifiée dans ta condition.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 277
    Par défaut
    un petit bout de code pour la solution ?
    Merci

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Utilise l'opérateur === pour éviter le cast implicite.

  5. #5
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    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
     
    $result = $mysql->query("
    SELECT 
            B.champ1,champ2,
            C.champ3,champ4
     
    FROM 
            table1 B,
            table2 C 
    WHERE 
            B.champ1 = C.champ3
    ");
     
        if(mysql_num_rows($result)) 
        {
            echo 'Il y a des résultats';
        }
        else
        {
            echo 'Il n\'y a pas de résultat';
        }
    Ca devrait fonctionner

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Non, c'est pas vraiment ça car tu ne fais pas la différence entre une requête échouée et une requête réussie mais avec 0 lignes retournées.

    Je te recommande de vérifier tes requêtes:
    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
    // J'ai modifié la requête car un JOIN est plus approprié qu'une clause WHERE
    $query = <<< QUERY
    SELECT 
        B.champ1 AS champ1,
        champ2,
        C.champ3 AS champ3,
        champ4
     
    FROM 
        table1 B,
    JOIN
        table2 C ON (B.champ1 = C.champ3)
    QUERY;
     
    if (!$results = $mysql->query($query)) {
        // Erreur dans la requête
    }
    elseif (mysql_num_rows($results) === 0) {
        // Pas de résultats
    }
    else {
        // Extraire les résultats sous forme de variables
        extract(mysql_fetch_array($results));
     
        // on peut directement utilsier $champ1 à $champ4
        echo "$champ1 $champ2 $champ3 $champ4";
     
        // Continuer ici...
    }

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 277
    Par défaut
    Bonjour et merci pour les morceaux de code

    En fait c'est toujours pas bon

    C'est pas un problème de requête SQL mais purement PHP

    Ce que je cherche c'est
    si trouve un résultat dans la base = { un résultat qui s'affiche}

    si je trouve rien = affiche if {} (donc rien)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     if(mysql_num_rows($result) > 0) { 
    //si résultat venant de la base alors affiche: 
    $page->addhtml(' 
     Bonjour j'ai dans ma base = '.$champ1.' 
    //si pas de résultat dans '.$champ1.' venant de la base Mysql alors :
    Rien se s'affiche et surtout le texte html, donc Bonjour j'ai dans ma base = (ne dois pas s'afficher parce qu'il n'y a rien venant de la base Mysql)
     '); 
    }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/06/2015, 15h06
  2. Code php qui donne 2 resultats différents en local et en ligne
    Par gentil2005 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/05/2014, 09h52
  3. [MySQL] $_POST ne me donne aucun resultat
    Par sinifer dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 12/05/2009, 10h18
  4. Réponses: 7
    Dernier message: 24/02/2009, 18h19
  5. donnée resultat
    Par gealex dans le forum C
    Réponses: 2
    Dernier message: 14/04/2006, 12h06

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