fonction COUNT(*) - PHP - Programmation
Marsh Posté le 26-05-2004 à 23:27:16
je ferais
Code :
|
Marsh Posté le 26-05-2004 à 23:41:31
Sincèrement, ta première requête devrait déjà fonctionner très bien sans la faute de syntaxe de la condition
Marsh Posté le 26-05-2004 à 23:49:37
En fait j'ai deux tables :
une table "produit", et une "famille de produit" et je veux qu'apres avoir sélectionné une famille de produit (en cliquant sur un href) n'apparaissent que les produits de la famille sélectionnée. Mais bon sans aller jusque là, c vrai ke je peux faire la condition sur la table Produit et ca ne marche pas... Comprends pas
Marsh Posté le 26-05-2004 à 23:54:25
Ben déjà, remplace les " par des ' dans la condition.
Ensuite, quel est le message d'erreur retourné s'il y en a un ?
Marsh Posté le 27-05-2004 à 00:00:26
ouais en fait ca marche mais c plus compliqué que cela car je demande que les resultats s'affichent sur plusieurs pages avec un systeme de liens et là dur dur : voici le code :
<?php
require('navig.php');
$host = "localhost";
$user = "root";
$pass = "";
$bdd = "basetest";
mysql_connect($host,$user,$pass) or die("Can't connect to server" );
mysql_select_db($bdd) or die ("Can't connect to database" );
?>
<table width="100%" border=0>
<tr vAlign=top>
<td>
<table>
<?php
// La variable "limite" fixe le nombre maximum d'éléments affichés par page
$limite = 5;
// La variable "debut" permet de déterminer le point de départ de l'affichage des enregistrements
if (empty($debut)) $debut=0;
// Recuperation nombre de lignes
$query = 'SELECT Count(*) FROM tabletest';
$numresultat = mysql_query($query);
$numrow = mysql_fetch_row($numresultat);
$nblignes = $numrow[0];
if ($nblignes > 0) {
// Recuperation liste des enregistrements
$query = "SELECT * FROM tabletest where email='lskywalker@toto.com' group by email";
$query .= " ORDER BY nom";
$query .= " LIMIT $debut,$limite";
$resultats = mysql_query($query);
// Boucle sur les enregistrements pour leur affichage
while($row = mysql_fetch_array($resultats)) {
?>
<tr>
<td><font face=Arial color=#000080 size=2>
<?php print "$row[nom]"; ?>
</font></td>
<td><font face=Arial color=#000080 size=2>
<?php print "$row[email]"; ?>
</font></td>
</tr>
<?php
echo "\n";
}
?>
</table>
</td>
</tr>
<?php
// Affichage du navigateur
navigateur($nblignes,$debut,$limite);
mysql_free_result($resultats);
?>
</table>
<?php
} else print("Aucun enregistrement, désolé !\n" );
?>
Et là par exemple j'ai 14 enregistrement dans la table, il me sort le bon enregistrement mais par contre il me rajoute 2 autres pages dans lesquelles il n'y a rien....
Marsh Posté le 27-05-2004 à 00:09:15
Ben à première vue, la requête qui compte le nombre d'enregistrement total et celle qui les affiche n'étant pas la même c'est un peu normal qu'il y ait un os
Marsh Posté le 27-05-2004 à 09:37:35
Je suis embêté aussi sur un COUNT, et je n'arrive pas à identifier le problème, c'est assez fou.
En fait je génère ma requête sans problème, je la teste dans phpmyadmin et j'ai le résultat que je veux.
Seulement à l'éxecution dans ma page php, ça plante sans message d'erreur (interrompt l'éxecution de la page quoi)
Vlà le code
Code :
|
en plus dans cette page j'ai déjà fait plusieurs requêtes avant sans problème, le code est similaire...
Si ça se trouve c'est un truc gros comme le nez au milieu de la figure. moi je comprends plus ce qui se passe, pas de message d'erreur par dessus le marché
Marsh Posté le 27-05-2004 à 10:03:16
je me réponds à moi même :
Si je remplace COUNT(*) par * simplement,
et que je fais un mysql_num_rows j'obtiens le résultat que je souhaite.
Donc je comprends pas pourquoi le COUNT marche pas avec php...
Marsh Posté le 27-05-2004 à 11:00:01
peus tu me donner un coup de main par rapport a mon code car comme tu l'as vu il y a deux requetes, une qui compte le nbre de lignes et une qui affiche les resultats???
Et zi arrive pas.... beuuu
Marsh Posté le 27-05-2004 à 11:05:33
Code :
|
remplace par :
Code :
|
et remplace la suite :
Code :
|
La solution COUNT en SQL j'ai laissé tombé, je te propose la méthode que j'ai utilisé et qui marche chez moi...
Marsh Posté le 27-05-2004 à 11:23:03
marche pas c embetant
Fatal error: Call to undefined function: mysql_num_row() in c:\program files\easyphp\www\basetest\exemple.php on line 23
Marsh Posté le 27-05-2004 à 11:55:39
marche pas, il n'arrive pas a compter le nombre de lignes et me sortir en conséquence le nombre d'enregistrements, sais plus koi faire
Marsh Posté le 27-05-2004 à 11:57:55
Remet voir ton code modifié, et à quel endroit le code cesse de marcher
Marsh Posté le 27-05-2004 à 12:06:14
CA C'EST LECODE QUI RECHERCHE LES ENREGISTREMENTS
<?php |
ET CA C'EST LE CODE DES FONCTIONS (navig.php) :
<?php |
Marsh Posté le 27-05-2004 à 12:08:30
T'as mal lu mes modifs, je te remets le bloc entier...
Code :
|
doit Devenir :
Code :
|
(pour ce qui est de la suite j'ai pas regardé, y aura peut être d'autres erreurs)
Marsh Posté le 27-05-2004 à 12:52:42
PunkRod a écrit : |
Y a pas de count fonctionne ou pas en php, php n'a rien a voir la dedans, il ne traite pas le sql, il envoie la requête telle quelle au serveur. Dans ton cas, ama, ça vient de l'espace entre le count et la ( qui est supposé le suivre
Marsh Posté le 27-05-2004 à 12:59:17
tiens je vais essayer ça... pas pensé une seule seconde à cet espace.
Marsh Posté le 27-05-2004 à 12:59:44
c'est ce que je me demandais aussi, mais j'ai qu'Oracle de dispo, et sous Oracle la requête passe ...
Marsh Posté le 27-05-2004 à 13:02:52
ben phpmyadmin a pas bronché quand je lui ai copié/collé la requête.. j'ai eu le bon résultat... pour ça que j'ai pas remis en question la requête en fait.
Marsh Posté le 27-05-2004 à 13:07:28
En fait ton code ne s'applique pas pour mon appli qui affiche les resultats page par page, la requete se doit de compter le nombre de ligne en tant que tel et rien d'autre pour apres permettre la navig entre les differentes pages...
En plus apres je dois conditionner le comptage des lignes avec la clause WHERE...
Marsh Posté le 27-05-2004 à 13:09:37
PunkRod a écrit : tiens je vais essayer ça... pas pensé une seule seconde à cet espace. |
enfin, j'ai fait le test ici, avec espace y a une erreur, sans ça passe
Marsh Posté le 27-05-2004 à 13:12:18
PunkRod, peut-on voir la suite de ton code ? Notamment pour voir comment tu te sers du count après avoir récupéré la valeur.
Marsh Posté le 27-05-2004 à 13:26:26
j'ai pas refait le code avec le COUNT dans la requête encore...
sinon pour contourner j'ai fait ça :
Code :
|
Marsh Posté le 27-05-2004 à 13:33:35
Ouais mais y'a aucune raison que le count plante. -_-
Marsh Posté le 27-05-2004 à 13:34:47
ben je viens de tester, avec l'espace en moins ça passe nickel...
Je saurais pour la prochaine fois !
Marsh Posté le 27-05-2004 à 13:35:49
ouais mes les gars on y est plus du tout là : comment faites vous pour conditionner une fonction COUNT dans une requete??? c'est celà mon gros probleme a la base
Marsh Posté le 27-05-2004 à 13:37:57
zetmuta a écrit : ouais mes les gars on y est plus du tout là : comment faites vous pour conditionner une fonction COUNT dans une requete??? c'est celà mon gros probleme a la base |
Inspire toi librement de mon code si tu veux, car ça marche maintenant...
et y a des conditions dedans
Code :
|
Marsh Posté le 27-05-2004 à 13:49:35
Alors par exemple je veux simplement l'email = toto@toto.fr (champ email)
Ma requete était :
$query = "SELECT * FROM tabletest";
$numresultat = mysql_query($query);
$numrow = mysql_num_rows($numresultat);
$nblignes = $numrow[0];
ALORS comment je l'ecris car le WHERE il ne comprend pas???
Marsh Posté le 27-05-2004 à 13:50:20
pardon c'était $query = "SELECT count(*) FROM tabletest";
Marsh Posté le 26-05-2004 à 23:18:48
Bonsoir,
Comment faire pour conditionner la fonction COUNT(*) dans une requete SQL.
En fait je veux compter les lignes d'une table mais simplement les lignes qui ont par exemple telle couleur.
Ce qui suit ne marche pas et je ne comprends pas pkoi???
$query = 'SELECT Count(*) FROM tableproduit WHERE couleur="bleu"';
Merci