Calcul en PHP sur des enregistrements dans table

Eléphant du PHP | 335 Messages

16 mai 2005, 15:57

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...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 16:02

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 !!!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 983 Messages

16 mai 2005, 16:04

Je dirais:

Code : Tout sélectionner

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 16:09

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:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

16 mai 2005, 16:11

Merci bcp pour vos réponses.

Je fais comment pour afficher ces résultats?

Mammouth du PHP | 983 Messages

16 mai 2005, 16:14

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 16:16

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"];
}
Modifié en dernier par zeus le 16 mai 2005, 16:51, modifié 1 fois.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

16 mai 2005, 16:27

parse error, unexpected T_VARIABLE

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

$o_result = mysql_query($str_requete);

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 16:27

J'ai oublié le ; à la fin de la ligne de construction de la requete !!!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

16 mai 2005, 16:35

J'ai une question, surement un peu con! lol

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 16:39

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

16 mai 2005, 16:45

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.

Mammouth du PHP | 983 Messages

16 mai 2005, 16:48

C'est ce que fais le code donné par zeus (à part que c'est pas ds un tableau) :wink:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2005, 16:50

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

16 mai 2005, 16:50

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