Page 1 sur 2

Calcul en PHP sur des enregistrements dans table

Posté : 16 mai 2005, 15:57
par Justone
Bonjour,

J'ai une table avec les enregistrements suivants:
type1 / temps=35
type2 / temps=40
type3 / temps=15
type1 / temps=20
type3 / temps=10
type1 / temps=30

Je voudrais savoir comment faire pour afficher le nombre de type1 (ici =3) de type2 (=1) et de type3 (=2)

Et aussi comment faire pour afficher le temps pour type1 (=85) pour type2 (=40) et pout type3 (=25)

Merci pour votre aide...

Posté : 16 mai 2005, 16:02
par zeus
Je pense que tu n'es pas dans la bonne catégorie mais avec une requete SQL, tu doit pouvoir tout avoir !!!

Code : Tout sélectionner

SELECT SUM(type), COUNT(type) FROM table GROUP BY type
Cette requete va grouper tes champs par valeur de type (type1, type2, ...) puis SUM() va ajouter les valeurs de chaque groupe et COUNT va compter combien d'occurence il y a dans chaque groupe !!!!

Posté : 16 mai 2005, 16:04
par rami
Je dirais:

Code : Tout sélectionner

SELECT SUM(temps), COUNT(type) FROM table GROUP BY type
:P

Posté : 16 mai 2005, 16:09
par zeus
Il nous faudrait la structure de ta table pour donner la bonne requete !!!

Car comme le dit rami, on peut se tromper sur les champs !!! :lol: Sutout moi :oops:

Posté : 16 mai 2005, 16:11
par Justone
Merci bcp pour vos réponses.

Je fais comment pour afficher ces résultats?

Posté : 16 mai 2005, 16:14
par rami
Tu fais un script PHP ayant pour ossature:
1 - connexion a ta base avec mysql_connect(...)
2 - construction de ta requete (s'il y a des éléments dynamiques)
3 - execution de ta requete avec mysql_query(ta requete)
4 - boucle sur les resultats avec mysql_fetch_array(...) pour afficher tes résultats.

Une doc bien pratique : doc PHP

Posté : 16 mai 2005, 16:16
par zeus
mysql_connect("host", "user", "pwd");
mysql_select_db("db");

$str_requete = "SELECT type, SUM(type) as somme, COUNT(type) as nombre FROM table GROUP BY type";

$o_result = mysql_query($str_requete);

while ($a_result = mysql_fetch_array($o_result, MYSQL_ASSOC)) {
  echo "Type : ".$a_result["type"];
  echo "\nNombre d'occurence : ".$a_result["nombre"];
  echo "\nSomme des occurences : ".$a_result["somme"];
}

Posté : 16 mai 2005, 16:27
par Justone
parse error, unexpected T_VARIABLE

J'ai cette erreur sur cette ligne et je ne comprends pas pourquoi!

$o_result = mysql_query($str_requete);

Posté : 16 mai 2005, 16:27
par zeus
J'ai oublié le ; à la fin de la ligne de construction de la requete !!!!

Posté : 16 mai 2005, 16:35
par Justone
J'ai une question, surement un peu con! lol

Mais comment se fait la différence entre type1, type2 et type3?

Posté : 16 mai 2005, 16:39
par zeus
Si type1, type2 et type3 sont contenues dans ta table, en comparant le contenu de ta bdd !!!

Mais si tu pose cette question, c'est que ça ne doit pas être des contenus mais des contenants, non ?

Donne nous un bout de la structure de la table

Posté : 16 mai 2005, 16:45
par Justone
en fait j'ai un formulaire dans lequel on choisit un type avec un menu deroulant et on entre un temps avec un champ de texte.

j'enregistre ces valeurs avec insert into sla SET type='".$_POST['type']."', time='".$_POST['time]."'"

et j'ai fait un tableau avec une colonne qui a chaque type et
je voudrais qu'en face de chaque type s'affiche ds mon tableau le nombre de type correspondant et la somme des temps de ce type.

Posté : 16 mai 2005, 16:48
par rami
C'est ce que fais le code donné par zeus (à part que c'est pas ds un tableau) :wink:

Posté : 16 mai 2005, 16:50
par zeus
Je viens de comprendre ta question .... :lol:

Le GROUP BY permet de découper la table en sous-tables qui ne contiennent que des type1, puis des type2, ...

type1 / temps=35
type2 / temps=40
type3 / temps=15
type1 / temps=20
type3 / temps=10
type1 / temps=30

va donner

type1 / temps=35
type1 / temps=20 => COUNT(type) = 3, SUM(temps) = 85
type1 / temps=30

type2 / temps=40 => COUNT(type) = 1, SUM(temps) = 40

type3 / temps=15 => COUNT(type) = 2, SUM(temps) = 25
type3 / temps=10

Posté : 16 mai 2005, 16:50
par Justone
ba avec le code de zeus
comment se fait la différence entre les différents types?

moi mes type1 type2 et type3 sont dans des enregistrements dans le champ type