Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ma requete me renvoie toujours 1

4 réponses
Avatar
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

4 réponses

Avatar
Bobe
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

Avatar
Bruno Baguette
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 -

Avatar
slambert
$data = mysql_num_rows($query);


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

Stef

Avatar
Auden
"Bobe" a écrit dans le message de news:
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 !