Mysql num rows, avec un UNION ?
Résolu
ZeGroumf
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
ZeGroumf Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
ZeGroumf Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Mysql num rows, avec un UNION ?
- Touche verr num - Guide
- Trait d'union insécable word - Guide
- Mysql community server - Télécharger - Bases de données
- Mysql error in file: /engine/classes/mysql.php at line 53 ✓ - Forum Réseaux sociaux
- French union avis - Forum Consommation & Internet
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'];
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
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).
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 ;)