[php/Mysql] Problème avec SELECT COUNT(*)

Problème avec SELECT COUNT(*) [php/Mysql] - PHP - Programmation

Marsh Posté le 07-10-2002 à 21:02:01    

Salut à tous,
 
Dans une base de données de petites annonces, je veux voir le nombre d'annonces par encore vlidées par l'administrateur, en php, j'ai donc fait :

Code :
  1. $db = mysql_connect("sql.free.fr", "login", "password" );
  2. mysql_select_db("mabase",$db);
  3. $req = mysql_query("SELECT COUNT(*) FROM `annonces` WHERE valide='0'" );
  4. echo '<center>Il y a '.$req.' annonce(s) en attente de validation</center>';
  5. mysql_close();


 
Le problème, c'est que ça m'affiche "2" alors qu'il n'y en a pas...
Quand je lance la même requéte dans phpMyAdmin, là le résultat est bon (0)
 
J'ai merdé où?
 
merci,
vw


Message édité par Combi_A_Vendre le 07-10-2002 à 21:02:52

---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le 07-10-2002 à 21:02:01   

Reply

Marsh Posté le 08-10-2002 à 01:23:58    

 $req = mysql_query("SELECT COUNT(*) FROM `annonces` WHERE valide='0'" );
  echo '<center>Il y a '.$req.' annonce(s) en attente de validation</center>';  
 
Tu affiches $req qui est le résultat de ta requête... pas glop ca.
 
je verrais plutôt un truc du genre (c pas la seule solution)
 
 

Code :
  1. $req = mysql_query("SELECT COUNT(*) as Count FROM `annonces` WHERE valide='0'" );
  2.   if ($req)
  3.   {
  4.      $res = mysql_fetch_array($req);
  5.   echo '<center>Il y a '.$res["Count"].' annonce(s) en attente de validation</center>';
  6.   }


 
Ca devrait marcher mieux :sol:  
 
(Y a mieux, mais j'aime bien le fetch_array et le fait de tout nommer, enfin chacun ses manies)


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 08-10-2002 à 19:33:34    

Ca marche très bien,
 
Merci,
vw.


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le 08-10-2002 à 23:36:24    

zion a écrit a écrit :

  $req = mysql_query("SELECT COUNT(*) FROM `annonces` WHERE valide='0'" );
  echo '<center>Il y a '.$req.' annonce(s) en attente de validation</center>';  
 
Tu affiches $req qui est le résultat de ta requête... pas glop ca.
 
je verrais plutôt un truc du genre (c pas la seule solution)
 
 

Code :
  1. $req = mysql_query("SELECT COUNT(*) as Count FROM `annonces` WHERE valide='0'" );
  2.   if ($req)
  3.   {
  4.      $res = mysql_fetch_array($req);
  5.   echo '<center>Il y a '.$res["Count"].' annonce(s) en attente de validation</center>';
  6.   }


 
Ca devrait marcher mieux :sol:  
 
(Y a mieux, mais j'aime bien le fetch_array et le fait de tout nommer, enfin chacun ses manies)




 
MOuais, pour ce genre de choses non rattachées a un champ spécifique, autant faire un mysql_num_rows($reg); :D

Reply

Marsh Posté le 08-10-2002 à 23:49:06    

skylight a écrit a écrit :

 
 
MOuais, pour ce genre de choses non rattachées a un champ spécifique, autant faire un mysql_num_rows($reg); :D




 
J'aime bien nomer les champs quand même  :kaola:


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 08-10-2002 à 23:49:51    

Au fait, t'as pas besoin de faire de fetch après avoir fait un drop database  [:ddr555]


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 08-10-2002 à 23:58:47    

skylight a écrit a écrit :

 
MOuais, pour ce genre de choses non rattachées a un champ spécifique, autant faire un mysql_num_rows($reg); :D




Niveau perfs, un count est incomparablement plus rapide que compter les lignes de résultat d'une requête.
 
En effet, dans le cas où tu comptes, tu doit charger de la base la totalité des lignes concernées, ce qui est non seulement gourmand en mémoire, mais en plus en temps d'accès disque/mémoire.
 
Avec un count sur un champ indexé (ou sur *), tu ne fait que lire dans ton index, ce qui est quelque peu plus rapide ;)

Reply

Marsh Posté le 09-10-2002 à 00:07:50    

'Tain, j'avais même pas réagit qu'il m'avait parlé du num_rows, j'aurais juré qu'il voulait plutot utiliser un fetch_row.
[:totoz]


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed