Mysql num rows, avec un UNION ?
Résolu/Fermé
ZeGroumf
Messages postés
17
Date d'inscription
samedi 13 février 2010
Statut
Membre
Dernière intervention
2 avril 2010
-
3 mars 2010 à 12:22
ZeGroumf Messages postés 17 Date d'inscription samedi 13 février 2010 Statut Membre Dernière intervention 2 avril 2010 - 3 mars 2010 à 20:07
ZeGroumf Messages postés 17 Date d'inscription samedi 13 février 2010 Statut Membre Dernière intervention 2 avril 2010 - 3 mars 2010 à 20:07
A voir également:
- Mysql num rows, avec un UNION ?
- Touche verr num - Guide
- Mysql community server - Télécharger - Bases de données
- Trait d'union insécable word - Guide
- Sms western union ✓ - Forum Mobile
4 réponses
Bonjour
Ça m'étonnerait bien que mysql_num_rows marche mal...
Es-tu bien sûr de ce que tu comptes ? Chaque partie de ton UNION est un SELECT COUNT . Or, chaque select count renvoie UNE SEULE ligne. Donc tu récupères de 1 à 4 lignes au maximum selon tes variables $VOIRARRET, $VOIRDEVIS et $VOIRANNULE
Je pense que ce que tu cherches à faire, c'est plutôt (je n'ai pas trop cherché à comprendre les conditions, elles me semblent bizarres en première lecture) :
Ça m'étonnerait bien que mysql_num_rows marche mal...
Es-tu bien sûr de ce que tu comptes ? Chaque partie de ton UNION est un SELECT COUNT . Or, chaque select count renvoie UNE SEULE ligne. Donc tu récupères de 1 à 4 lignes au maximum selon tes variables $VOIRARRET, $VOIRDEVIS et $VOIRANNULE
Je pense que ce que tu cherches à faire, c'est plutôt (je n'ai pas trop cherché à comprendre les conditions, elles me semblent bizarres en première lecture) :
if ($MASTER==1) { $compt = "SELECT COUNT(id_dossier) as cnt FROM $t_dossier WHERE etude!=1 AND point_arret!=1 AND dossier_annule!=1 AND devis !=1"; } if ($MASTER==2) { $compt = "SELECT COUNT(id_dossier) as cnt FROM $t_dossier WHERE etude=1 AND point_arret!=1 AND dossier_annule!=1 AND devis !=1"; } if ($MASTER==3) { $compt = "SELECT COUNT(id_dossier) as cnt FROM $t_dossier WHERE point_arret!=1 AND dossier_annule!=1 AND devis !=1"; } if ($VOIRARRET==1) $compt .= " OR point_arret=1"; if ($VOIRANNULE==1) $compt .= " OR dossier_annule=1"; if ($VOIRDEVIS==1) $compt .= " OR devis=1"; $result = mysql_query("$compt", $connexion); $nbr = $result['cnt'];
nico7382
Messages postés
279
Date d'inscription
lundi 6 juin 2005
Statut
Membre
Dernière intervention
22 décembre 2010
50
3 mars 2010 à 12:33
3 mars 2010 à 12:33
Salut,
a mon avis, je ferai une étape intermédiaire pour débugguer ta requête :
avant d'exécuter la requête, je ferai un echo de la requête puis exit, pour n'avoir que la requête, ensuite tu exécute ta requête qui est afficher dans dans phpmyadmin, ou outre outil, et tu aura bien plus de précision sur l'erreur
a mon avis, je ferai une étape intermédiaire pour débugguer ta requête :
avant d'exécuter la requête, je ferai un echo de la requête puis exit, pour n'avoir que la requête, ensuite tu exécute ta requête qui est afficher dans dans phpmyadmin, ou outre outil, et tu aura bien plus de précision sur l'erreur
ZeGroumf
Messages postés
17
Date d'inscription
samedi 13 février 2010
Statut
Membre
Dernière intervention
2 avril 2010
3 mars 2010 à 12:45
3 mars 2010 à 12:45
bah le souci, c'est qu'elle marche très bien, je l'affiche et elle est correcte (php ne trouve aucune erreur)
c'est juste le mysql_num_rows qui ne marche pas (bien), et je demandais si il existait une autre commande pour compter les lignes affectées par la requete (la première).
c'est juste le mysql_num_rows qui ne marche pas (bien), et je demandais si il existait une autre commande pour compter les lignes affectées par la requete (la première).
ZeGroumf
Messages postés
17
Date d'inscription
samedi 13 février 2010
Statut
Membre
Dernière intervention
2 avril 2010
3 mars 2010 à 20:07
3 mars 2010 à 20:07
oui elles sont bizarre, en effet ^^
en fait, c'est une application qui gère des dossiers (mon entreprise), plusieurs groupes de personnes utilisent l'application de manière différente.
Il me fallait donc des affichages personnalisables pour tous... J'ai cogité pour sortir ca.
En fin de compte, oui j'ai pigé cet après midi au taf qu'effectivement, il y avait 4 COUNT et pas un seul
j'ai donc sorti ca :
$nbr0= mysql_result($result,0,"COUNT(id_dossier)");
$nbr1= @mysql_result($result,1,"COUNT(id_dossier)");
$nbr2= @mysql_result($result,2,"COUNT(id_dossier)");
$nbr3= @mysql_result($result,3,"COUNT(id_dossier)");
$nbr = $nbr0 + $nbr1 + $nbr2 + $nbr3;
C'est bourrin à souhait, je sais, mais bon :/
j'ai du mettre des @ à cause du fait des variables dans les cookies. Il y a maxi 4 compteurs. Le compteur 0 sera toujours utilisé et les autres, pas forcément. Et donc pas toujours avec la même variable. (ex: $VOIRDEVIS pour un coup être sur le compteutr 2 et la fois d'après sur le compteur 4 !)
Cette solution marche très bien ( et pas si lente que j'aurais pu le croire ! )
Si des gens ont mieux comme technique, et surtout plus 'propre', je prend !!
Merci de vos réponses de cet après midi ;)
en fait, c'est une application qui gère des dossiers (mon entreprise), plusieurs groupes de personnes utilisent l'application de manière différente.
Il me fallait donc des affichages personnalisables pour tous... J'ai cogité pour sortir ca.
En fin de compte, oui j'ai pigé cet après midi au taf qu'effectivement, il y avait 4 COUNT et pas un seul
j'ai donc sorti ca :
$nbr0= mysql_result($result,0,"COUNT(id_dossier)");
$nbr1= @mysql_result($result,1,"COUNT(id_dossier)");
$nbr2= @mysql_result($result,2,"COUNT(id_dossier)");
$nbr3= @mysql_result($result,3,"COUNT(id_dossier)");
$nbr = $nbr0 + $nbr1 + $nbr2 + $nbr3;
C'est bourrin à souhait, je sais, mais bon :/
j'ai du mettre des @ à cause du fait des variables dans les cookies. Il y a maxi 4 compteurs. Le compteur 0 sera toujours utilisé et les autres, pas forcément. Et donc pas toujours avec la même variable. (ex: $VOIRDEVIS pour un coup être sur le compteutr 2 et la fois d'après sur le compteur 4 !)
Cette solution marche très bien ( et pas si lente que j'aurais pu le croire ! )
Si des gens ont mieux comme technique, et surtout plus 'propre', je prend !!
Merci de vos réponses de cet après midi ;)