Discussion:
Ma requete me renvoie toujours 1
(trop ancien pour répondre)
Auden <""@free.fr>
2007-05-31 18:30:52 UTC
Permalink
Bonjour,

J'ai un soucis avec une requête. La requête fonctionne bien dans phpmyAdmin
mais renvoie toujours 1 dans ma page web.

J'ai une base (boutiqueanimalissaintpriest) composée de deux colonnes :
Une colonne nommée "crit1" qui contient une note sur 10 et une autre nommée
"date" qui contient la date de l'enregistrement.

Je souhaite calculer et afficher le nombre d'enregistrements datant de moins
de 6 mois.

Voici le code complet qui est placé dans un tableau

---------------------------------------------------
<?php
// connexion à la base
$db = mysql_connect('mysql5-3', 'aaaaaa', 'bbbbbbb') or die('Erreur de
connexion '.mysql_error());

// sélection de la base
mysql_select_db('aaaaaa') or die('Erreur de selection '.mysql_error());

// Creation et envoi de la requete
$sql = "SELECT count(*) FROM boutiqueanimalissaintpriest WHERE date >
SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)";
$query = mysql_query($sql) or die($sql . ' : ' . mysql_error());
$data = mysql_num_rows($query);


echo "($data avis)" ;

mysql_close(); // on ferme la connexion

?>
------------------------------------------

Le probléme c'est que la valeur affichée dans le tableau est toujours 1.
Pourtant dans phpmyadmin la requête :

---------------
$sql = 'SELECT count(*) FROM boutiqueanimalissaintpriest WHERE date >
SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)';
--------------------
me donne le bon nombre....

Quelqu'un voit d'où vient le problème ??

3 heures que je sèche dessus :-(


Merci

Auden
Bobe
2007-05-31 21:00:11 UTC
Permalink
Post by Auden <""@free.fr>
Le probléme c'est que la valeur affichée dans le tableau est toujours 1.
---------------
$sql = 'SELECT count(*) FROM boutiqueanimalissaintpriest WHERE date >
SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)';
--------------------
me donne le bon nombre....
Quelqu'un voit d'où vient le problème ??
3 heures que je sèche dessus :-(
Ta requête retournera toujours une unique ligne car tu fais un select
count(*) ..., d'où le 1 retourné par mysql_num_rows().

Fais plutôt $data = mysql_result($query, 0, 0);
--
Aurélien Maille
Auden <""@free.fr>
2007-05-31 22:09:02 UTC
Permalink
Post by Bobe
Post by Auden <""@free.fr>
Le probléme c'est que la valeur affichée dans le tableau est toujours 1.
---------------
$sql = 'SELECT count(*) FROM boutiqueanimalissaintpriest WHERE date >
SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)';
--------------------
me donne le bon nombre....
Quelqu'un voit d'où vient le problème ??
3 heures que je sèche dessus :-(
Ta requête retournera toujours une unique ligne car tu fais un select
count(*) ..., d'où le 1 retourné par mysql_num_rows().
Fais plutôt $data = mysql_result($query, 0, 0);
--
Aurélien Maille
Merci à tous, vus avez résolu mon problème !

Bruno Baguette
2007-05-31 21:00:11 UTC
Permalink
Post by Auden <""@free.fr>
Bonjour,
J'ai un soucis avec une requête. La requête fonctionne bien dans phpmyAdmin
mais renvoie toujours 1 dans ma page web.
Quelqu'un voit d'où vient le problème ??
Oui, et il est flagrant ! :-)

Relisez à voix haute les 3 lignes ci dessous :

###
$query = mysql_query($sql) or die($sql . ' : ' . mysql_error());
$data = mysql_num_rows($query);
echo "($data avis)" ;
###

Ce que vous affichez, ce n'est pas le résultat de votre requête, mais
bien le nombre d'enregistrements retournés par votre requête. Ce qui
dans le cas de votre requête sera toujours 1.

Pour afficher le résultat du COUNT(), vous devez remplacer cette ligne

$data = mysql_num_rows($query);

par celle-ci :

$data = mysql_fetch_assoc($query);

et profitez en pour mettre un alias après votre COUNT(),
ce qui donnerait au final ceci :

###
$sql = "SELECT count(*) AS nbre_avis FROM boutiqueanimalissaintpriest
WHERE date >
SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)";
$query = mysql_query($sql) or die($sql . ' : ' . mysql_error());
$data = mysql_fetch_assoc($query);
echo($data['nbre_avis']." avis");
###

En espérant que ca aide :-)
--
Bruno Baguette - ***@alussinan.org
slambert
2007-05-31 21:00:11 UTC
Permalink
Post by Auden <""@free.fr>
$data = mysql_num_rows($query);
Juste comme ca, pour savoir, elle retourne combien de lignes, ta requete ?

Stef
Continuer la lecture sur narkive:
Loading...