Ma requete me renvoie toujours 1

Le
Auden
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bobe
Le #50218
Auden nous a dit le 31.05.2007 20:30:

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 :-(



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

Bruno Baguette
Le #50219
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 -

slambert
Le #50220
$data = mysql_num_rows($query);


Juste comme ca, pour savoir, elle retourne combien de lignes, ta requete ?

Stef

Auden
Le #49828
"Bobe" 465f1730$0$25936$
Auden nous a dit le 31.05.2007 20:30:

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 :-(



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 !


Publicité
Poster une réponse
Anonyme