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

Requêtes MySQL Discussion :

pbl requête et mysql_fetch_array


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut pbl requête et mysql_fetch_array
    bonjour,

    j'ai une requête qui me donne un résultat 0 alors qu'il y a bien des lignes qui correspondent dans la BDD, je ne comprends pas où est le problème. Merci à ceux qui auront l'esprit plus clair que moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT count(*) FROM guide, aide_st WHERE guide.structure=aide_st.s_clef AND (rythme!="" OR (mois1="'.$mois.'" AND annee1="'.$annee.'")  OR (mois2="'.$mois.'" AND annee2="'.$annee.'")  OR (mois3="'.$mois.'" AND annee3="'.$annee.'")  OR (mois4="'.$mois.'" AND annee4="'.$annee.'")  OR (mois5="'.$mois.'" AND annee5="'.$annee.'"))';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $nb_total= mysql_fetch_array($resultat);
     
    // on teste si ce nombre de vaut pas 0
     
    if (($nb_total = $nb_total[0]) == 0) 
     
    {
     $error="erreur";
    }

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    ça dit quoi comme erreur?
    suis pas sur de la syntaxe de ton différent(!=).ça serait pas <> par hasard??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT count(*) FROM guide, aide_st WHERE guide.structure=aide_st.s_clef AND (rythme!="" OR (mois1="'.$mois.'" AND annee1="'.$annee.'")  OR (mois2="'.$mois.'" AND annee2="'.$annee.'")  OR (mois3="'.$mois.'" AND annee3="'.$annee.'")  OR (mois4="'.$mois.'" AND annee4="'.$annee.'")  OR (mois5="'.$mois.'" AND annee5="'.$annee.'"))';

  3. #3
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    en fait je n'ai pas d'erreur, il considère qu'il n'y a pas de réponse, qu'il y a 0 ligne. j'ai fait un écho de la requête qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) FROM guide, aide_st WHERE guide.structure=aide_st.s_clef AND (rythme!="" OR (mois1="11" AND annee1="2006") OR (mois2="11" AND annee2="2006") OR (mois3="11" AND annee3="2006") OR (mois4="11" AND annee4="2006") OR (mois5="11" AND annee5="2006"))
    et j'ai bien une ligne avec 11 dans mois2 et 2006 dans annee2.

    pour le !="", je l'ai déjà essayé ailleurs sans que ca pose problème, je vais voir si il n'y a pas qq chose de mieux quand même.

  4. #4
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Citation Envoyé par carelha
    en fait je n'ai pas d'erreur, il considère qu'il n'y a pas de réponse, qu'il y a 0 ligne. j'ai fait un écho de la requête qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) FROM guide, aide_st WHERE guide.structure=aide_st.s_clef AND (rythme!="" OR (mois1="11" AND annee1="2006") OR (mois2="11" AND annee2="2006") OR (mois3="11" AND annee3="2006") OR (mois4="11" AND annee4="2006") OR (mois5="11" AND annee5="2006"))
    et j'ai bien une ligne avec 11 dans mois2 et 2006 dans annee2.

    pour le !="", je l'ai déjà essayé ailleurs sans que ca pose problème, je vais voir si il n'y a pas qq chose de mieux quand même.
    Ta requête fonctionne si tu la passes dans phpmyadmin ?
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  5. #5
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    oui, merci, ma requête fonctionne sous php my admin qui trouve des résultats avec ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) FROM guide, aide_st WHERE guide.structure=aide_st.s_clef AND (rythme!="" OR (mois1="11" AND annee1="2006")  OR (mois2="11" AND annee2="2006")  OR (mois3="11" AND annee3="2006")  OR (mois4="11" AND annee4="2006")  OR (mois5="11" AND annee5="2006"))
    c'est peut-être mon if qui pose problème ensuite, mais la syntaxe me semblait correcte

  6. #6
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Et si tu essaies avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT count(*) AS nb_res FROM guide, aide_st WHERE guide.structure=aide_st.s_clef AND (rythme!="" OR (mois1="11" AND annee1="2006")  OR (mois2="11" AND annee2="2006")  OR (mois3="11" AND annee3="2006")  OR (mois4="11" AND annee4="2006")  OR (mois5="11" AND annee5="2006"))
    
    $resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $nb_total= mysql_fetch_array($resultat);
    
    // on teste si ce nombre de vaut pas 0
    var_dump($nb_total); // pour vérifier la bonne structure du tableau
    if ($nb_total[0]['nb_res'] == 0) 
    
    {
     $error="erreur";
    }
    PS: en effet ton if précédent n'est pas des plus conventionnels
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  7. #7
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    Merci Guitou, jai essayé cette méthode, et le if qui est pris en compte est encore celui où il y a 0 résultats.
    le code m'indique
    array(2) { [0]=> string(2) "66" ["nb_res"]=> string(2) "66" }

  8. #8
    Membre éprouvé Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Par défaut
    Donc utilise ça :

  9. #9
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    quand tu as une seule ligne et un seul resultat pour une requete SQL (cas classique du count(*) from table)

    il est beaucoup plus simple et rapide de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $res = mysql_query(...) or die(...);
    $nb = <a href="http://fr.php.net/Fr/mysql_result" target="_blank">mysql_result</a>($res, 0, 0);
    au lieu d'utiliser mysql_fetch_array()

  10. #10
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    Fladnag, je n'ai pas une seule ligne et un seul résultat, il faut donc sûrement au passage que je change le début de la requête.

  11. #11
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    ca fonctionne avec la méthod de cyberbob, merci

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

Discussions similaires

  1. [MySQL] Requête mysql_fetch_array erreur
    Par asvin dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/10/2008, 21h25
  2. [MySQL] Problème avec mysql_fetch_array et une requête qui ordonne(ASC)
    Par Jim_Nastiq dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/03/2007, 11h46
  3. [MySQL] mysql_fetch_array et longues requêtes
    Par Hayabusa dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 02/01/2007, 13h01
  4. mysql_fetch_array mais ça vient peut être de la requête
    Par JackBeauregard dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/06/2006, 04h46
  5. pbl avec mysql_fetch_array()
    Par reedbedroom dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/03/2006, 20h14

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