1 seule requête pour afficher le "count" de tous l

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : 1 seule requête pour afficher le "count" de tous l

par Invité » 20 avr. 2006, 11:31

J'ai trouvé... :oops:

Une ancienne ligne de code ($data = mysql_fetch_array($req); ) que j'ai oublié d'enlever.

Ca marche nickel chrome Ryle ;) Merci beaucoup !

[Résolu] !

par Invité » 20 avr. 2006, 11:22

J'ai fait un autre test :
while ($row=mysql_fetch_assoc($req))
{
 $tabReg[$row['region']] = $row['nb'];
 echo $row['region'];
}
Et je n'ai que "ile+de+france" d'affiché alors que je devrais avoir "ile+de+francehaute+normandie". J'ai l'impression qu'il ne parcourt pas tous les enregistrements :?

par Invité » 20 avr. 2006, 11:07

Je ne comprends pas...y a quelque chose qui cloche. ça avance mais ce n'est pas encore au point :p

J'ai mis par région et non plus par département mais la logique reste la même et pourtant...
<?php
$base = mysql_connect ('localhost', 'root', ''); 
mysql_select_db ('***', $base);
		
$sql = 'SELECT region, count(id_membre) as nb FROM membre_carte GROUP BY region';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
		
$region = array(); 
while ($row=mysql_fetch_assoc($req))
{
	$tabReg[$row['region']] = $row['nb'];
}

echo "idf : ".$tabReg['ile+de+france'];
echo " - ";
echo "haut nor : ".$tabReg['haute+normandie'];
?>
J'ai bien dans ma base 2 enregistrements, un qui a "ile+de+france" et l'autre "haute+normandie". Quand je lance la requête dans phpMyAdmin, j'ai le bon résultat mais à l'affichage avec ce code j'ai idf : 1 - haut nor :. Donc pas de résultat pour haute+normandie.

J'ai essayé de mettre les 2 enregristrements à "ile+de+france". Et résultat : plus aucun enregistrement ni pour l'un ni pour l'autre alors que je devrais avoir idf : 2 :?

Une tite idée ?

Merci !

par Invité » 20 avr. 2006, 10:33

Merci beaucoup Ryle !

Je teste tout ça et je reviendrais pour te donner les résultats ;)

par Ryle » 20 avr. 2006, 10:30

Ben tout dépend comment tu gère l'affichage sur ta carte (php, javascripts, autre ?). Dans ce cas, l'idéal est de passer par un tableau associatif :
$departement = array();
while ($row=mysql_fetch_assoc($req)) { 
  $tabDdept[$row['dpt']] = $row['nb'];
}
Tu peux ainsi interoger $tabDdept en lui donnant le numéro du département, il te retournera le nombre de membres associés :
echo $tabDdept[75]; // affiche le nb associés à l'index 75 du tableau

// si l'index n'est pas défini c'est qu'il n'y a pas de valeur en base, pour ne pas avoir d'erreur et éventuellement afficher un 0, tu peux donc faire un truc du genre :
echo (isSet($tabDdept[75])) ? $tabDdept[75] : 0;
Pour l'affichage ensuite, tout dépend de comment tu le gère, donc à toi de voir comment l'utiliser au mieux :)

par Invité » 20 avr. 2006, 10:24

Oki merci Ryle ;)

Je vois très bien ce que ça va donner avec ton code. Mais j'ai un souci et de taille. Je ne peux pas réellement l'appliquer, voici pourquoi :

En fait c'est sur une carte de France que je voudrais afficher le nombre de membre par département, donc à des endroits bien précis sur la carte.

Donc si je fais une boucle comme ça je n'aurais aucun moyen de récupérer le nombre d'enregistrements d'un département donné puis l'afficher où il faut...c'est là mon gros problème.

Je ne sais pas si j'ai été assez clair. J'espère que tu pourras m'aider ;)

Merci !

par Ryle » 20 avr. 2006, 10:20

Déjà une petite modif dans la requête parce que j'aime bien donner des noms aux choses, vu que les numéros c'est traitre, suffit qu'on rajoute une colonne au début et hop, tout saute :)

Code : Tout sélectionner

SELECT dpt, count(id) AS nb FROM liens GROUP BY dpt
while ($row=mysql_fetch_assoc($req)) { // si tu stockes les lignes dans $row, faut pas utiliser $row1 ensuite ;)
  echo "Dépt. ".$row['dpt']." : ".$row['nb']." membre(s)<br>"; // affiche "Dépt xx : yy membre(s)<br>"
} 
A placer où tu veux, éventuellement agrémenter pour faire un tableau html ou autre... :)

par iclo » 20 avr. 2006, 10:16

Montre nous un embryon de code php pour qu'on puisse t'aider.
Si tu ne sais pas comment réaliser l'affichage d'un select sur une base de donnée, tu trouveras un tutorial complêt sur le site.

par Invité » 20 avr. 2006, 10:12

Quelqu'un peut-il m'aider...? :?

Je suis totalement bloqué pour l'affichage...

Code : Tout sélectionner

while ($row=mysql_fetch_row($req)) { echo $row1[1]; }
Cette requête me sort tous les résultats à la suite. Mais comme faire justement pour que je puisse les sortir un par un et les afficher où je veux ?

Je me ménage complètement dans les tableaux...

merci !

par Invité » 19 avr. 2006, 20:05

Par exemple pour mettre
dpt 75 : X membres
dpt 77 : Y membres
etc...?

par Invité » 19 avr. 2006, 19:36

oki doki :) La requête devrait fonctionner. Maintenant comment puis-je afficher les différents résultats à partir de cette requête ?

merci ;)

par Ryle » 19 avr. 2006, 17:17

Argh ! bien vu :)

'fin ça marche aussi, mais c'est nettement moins interessant ;)

Bon faut pas m'en vouloir, y a une heure à partir de laquelle je ne réflechit plus et je ne dis que des bétises....

... et généralement c'est 8-9h du matin ;)

par albat » 19 avr. 2006, 17:13

À condition d'enlever le WHERE dpt=75 , non ? ;)

par Ryle » 19 avr. 2006, 17:11

Un regroupement par département avec le fonction "group by" devrait faire ton affaire :)

Code : Tout sélectionner

SELECT dpt, count(id) FROM liens WHERE dpt=75 GROUP BY dpt

1 seule requête pour afficher le "count" de tous l

par Invité » 19 avr. 2006, 17:06

Bonjour !

J'ai cette requête :
$sql = 'SELECT count(id) FROM liens WHERE dpt=75';
Le souci auquel je me heurte c'est que j'ai tous les départements de France, donc X requêtes à faire pour afficher le nombre de membres (grâce aux id) par département.

Savez-vous s'il y a un moyen de faire avec des tableaux pour transformer ces X requêtes et ne plus faire qu'une requête ?

Ensuite comment puis-je afficher le nombre pour chaque département ?

Merci de votre aide ;)