Probléme de COUNT

Eléphant du PHP | 96 Messages

14 oct. 2006, 01:09

Bonjour,

J'affiche un tableau d'informations sur la disponibilité de terrains à bâtir.
Sur mon lien, par exemple Toulouse s'affiche une info-bulle (attribut "title")
qui devrait donner la quantité des terrains disponibles (13). Le probléme est que ma requéte ne prend en compte que la valeur la plus haute c'est à dire quantité=10 et ne fais pas l'addition !

1er tableau.
--------------------------------------
| 13/10/06 | Toulouse | 180 000 Euro |
--------------------------------------

2éme tableau aprés avoir cliqué.
-----------------------------------------------------------------
Date | Commune | Quantité | Observations | Prix |
-----------------------------------------------------------------|
13/10/06 | Toulouse | 3 | Blabla | 180 000 Euro |
------------------------------------------------------------------
13/10/06 | Toulouse | 10 | Blabla | 180 000 Euro |
------------------------------------------------------------------
La requéte :
<?php
//récupère tous les enregistrements en dessous de 180 000 euro
			$select = 'SELECT commune, euro, quantite, date, count(quantite) 
			FROM terrains 
			WHERE euro < 180000 
			GROUP BY quantite 
			LIMIT 0,10';
			$result = mysql_query($select,$connecte) or die ('Oops ! Erreur : '.mysql_error() );
			$total = mysql_num_rows($result);
// si on a récupéré un résultat on l'affiche.
			if($total) 
	{
			while($row = mysql_fetch_array($result)) 
	{
?>		  <td bgcolor=<?php echo $couleur; ?> width="250" valign='middle'>
			<?php echo $row['date']; ?></td>
			<td bgcolor=<?php echo $couleur; ?> width="450" >
			<?php echo '<a href=Resultat onclick="return apercu(\' search_communes.php?commune&mot='.$row['commune'].'\')" title=" Il y a '.$row['quantite'].' terrain(s) "</a>';?>
			<?php echo $row['commune']; ?></td>			
			<td bgcolor=<? echo $couleur; ?> width="250" valign='middle'>
			<?php echo $row['euro']; ?>&nbsp;&nbsp;Euro</td>			
<?php		
	}
	}
?>
Pourquoi il ne fait pas l'addition ? Une idée ? merci
Kimble

Mammouth du PHP | 19672 Messages

14 oct. 2006, 08:09

J'ai du mal à comprendre ton cheminement. Aussi en réfléchissant un peu, je me suis demandé ce qui serait le plus utile à ton internaute à la recherche d'un bien. Mon raisonnement me conduit à séparer en deux phases :
- Une première phase pour cibler un endroit
- Une seconde phase pour avoir les détails sur l'endroit choisi.

Ça donne donc deux tableaux successifs qui ressembleront à ceci :
-1- D'abord cibler la région :

Code : Tout sélectionner

+-----------+----------+---------------+---------------+ | Commune | Quantité | Prix minimum | Prix maximum | +-----------+----------+---------------+---------------+ | Albi | 2 | 101 000 Euros | 144 000 Euros | | Montauban | 6 | 97 000 Euros | 170 000 Euros | | Toulouse | 15 | 112 000 Euros | 185 000 Euros | +-----------+----------+---------------+---------------+
-2- Ensuite voir des détails :

Code : Tout sélectionner

+----------+----------+--------------+--------------+ | Date | Commune | Observations | Prix | +----------+----------+--------------+--------------+ | 5/10/06 | Toulouse | Blabla | 112 000 Euro | | 10/10/06 | Toulouse | Blabla | 124 000 Euro | | 12/10/06 | Toulouse | Blabla | 118 000 Euro | | 13/10/06 | Toulouse | Blabla | 180 000 Euro | +----------+----------+--------------+--------------+
De cette manière ton internaute trouvera beaucoup plus rapidement ce qu'il cherche, ne crois-tu pas ?

Et dans ce cas, tu auras une première requête avec trois agrégats : un COUNT(), un MIN() et un MAX() avec un GROUP BY sur la commune. La seconde requête sera quant à elle beaucoup plus simple, pas d'agrégat et juste une LIMIT.

Que t'en semble ? :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 96 Messages

14 oct. 2006, 10:44

Salut Cyrano, ça va ?
Pour les 2 tableaux, c'est comme ça que je fait, sauf que dans le 1er pour des raisons de place (pop-up) je n'affiche pas les quantités.
Le probléme est que j'ai aussi des cartes avec des noms de communes qui elles, ne sont pas forcément équipées en terrains à bâtir. Au passage de la souris sur l'une des commune avec l'attribut "title", j'aimerais afficher le nombre total de terrains dispo dans cette commune, pour éviter d'ouvrir inutilement une fenêtre qui ne contient aucun terrain à bâtir. Et en partant de ma requéte. il ne s'affiche que la valeur la plus haute, ce qui n'est pas juste...

Mammouth du PHP | 19672 Messages

14 oct. 2006, 10:51

Même si tu ne l'affiches pas dans le premier, tu peux tout de même récupérer les nombres par commune et dans ce cas faire suivre la variable au fil de la navigation. Tu en auras d'autant plus besoin qu'en affichant avec un nombre limite par page, il te faudra savoir combien de pages tu as. Regarde donc dans la FAQ, il y a un tuto sur l'affichage page par page où tu pourras peut-être mieux visualiser l'idée générale.

Et dans cette optique, tu n'as pas besoin de récupérer le nombre total pour construire le second tableau. Si tu tiens toutefois à le récupérer quand même malgré son inutilité puisque tu l'as déjà, alors il va falloir ajouter une jointure externe dans ta requête.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: