8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai créé une requête afin d'obtenir des statistiques dans ma base MySQL. Elle fonctionne très bien :
a écrit :
SELECT RESA_HOTEL, COUNT(*) FROM `inscriptions` GROUP BY RESA_HOTEL


En clair, ça me donne le nombre de chambres réservées, triées par type de chambre (ex : Single, Double, Twin...). Ok.

Seulement voilà, j'aimerai, à l'aide d'une fonction PHP, afficher une ligne précise du résultat, genre afficher uniquement le nombre de chambre correspondant au type 'single' dans le résultat de ma requête...
a écrit :
<?php if ($row_RShotel['RESA_HOTEL']='Single') {echo $row_RShotel['COUNT(*)']; }?>


Mais ça ne marche pas. Ca m'affiche systématiquement la première ligne de résultat de ma requête (qui ne correspond pas au type 'Single').

Quelqu'un a-t'il une solution ou une piste ?

Merci pour votre aide.
Salut,

C'est une erreur fréquente : = représente une affectation dans les langages dont la syntaxe est basée sur celle de C. Pour l'égalité, l'opérateur à utiliser est ==.
Bonjour Julien,

Merci pour cette précision.

Cependant, cela ne fait pas fonctionner pour autant ma fonction PHP
a écrit :
<?php if ($row_RShotel['RESA_HOTEL']=='Single') {echo $row_RShotel['COUNT(*)']; }?>


Plus rien n'est affiché. Je pensais plutôt que mon problème venait de la ligne
a écrit :
{echo $row_RShotel['COUNT(*)']; }


Aurais tu une autre piste qui pourrait m'aider ?

Merci Smiley smile
Ma premiere idée c'est ce count(*) bof bof de l'ecrire comme ça.

j'ai toujours vu les gens nommer le count dans la requete.

SELECT RESA_HOTEL, COUNT(*) as somme FROM `inscriptions` GROUP BY RESA_HOTEL

et appeler $row_RShotel['somme'];

d'un.

mais quand je lis ça

a écrit :
Mais ça ne marche pas. Ca m'affiche systématiquement la première ligne de résultat de ma requête (qui ne correspond pas au type 'Single').


c'est inquietant....
impossible que le echo donne un resultat si l'égalité ( qui est bien == ) ne vaut pas true.

et si tu nous montrais tout le passage avec ta requete, comment tu parcours le resultat de cette requete et ton test.

normalement tu devrais avoir quelquechose comme:

<?php
 $query = "SELECT RESA_HOTEL, COUNT(*) as somme FROM `inscriptions` GROUP BY RESA_HOTEL";
 $res=mysql_query($query);
while ( $row_RShotel=mysql_fetch_assoc($res)) { 
....
?>
...
<?php if ($row_RShotel['RESA_HOTEL']=='Single') {echo $row_RShotel['somme']; }?>
...
<?php 
.....
} ?>

Modifié par CPascal (03 Apr 2008 - 21:13)
bonjour,

je connais pas les champs de ta base de données , mais est-ce qu'il ne serait pas plus facile d'effectuer le tri dans ta requete Sql , du genre :

select ......... where type='single' ......


?
ps : ici c'est bien un '=' !
Modifié par kzone (05 Apr 2008 - 10:52)
Salut,

volonia75 a écrit :

En clair, ça me donne le nombre de chambres réservées, triées par type de chambre...

kzone a écrit :

je connais pas les champs de ta base de données , mais est-ce qu'il ne serait pas plus facile d'effectuer le tri dans ta requete Sql...

Je pense que volonia75 voulait dire regroupées par type de chambre et pas triées Smiley cligne !
Salut,

Au plus je relis les posts au moins je comprends ce que tu veux. Tu veux la liste de quoi ? Groupé par quoi ? Trié par quoi ? Dans ton post initial, tu parles de tri et tu fais un groupement.

Si je comprends ce que tu veux, je ferai quelques chose comme
SELECT RESA_HOTEL, COUNT(RESA_HOTEL) as count FROM `inscription` WHERE RESA_HOTEL='single' ORDER BY count


Aussi, il est mieux de restreindre le nombre de résultat dans la requete SQL si c'est pour afficher un fragment dans la page.