Calcul en PHP sur des enregistrements dans table

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 : Calcul en PHP sur des enregistrements dans table

par zeus » 17 mai 2005, 09:27

En php, oui !!!
if ($type == "") {
  echo "0";
} else {
  $echo type;
}

par Justone » 16 mai 2005, 17:58

Jorai une derniere question. (je sais j'abuse!)

Lorsque qu'un type n'est pas enregistrer dans ma table, je n'ai aucune valeur qui est retourné dans mon tableau.

Est-il possible d'avoir 0 qui s'affiche?

par Justone » 16 mai 2005, 17:46

Si je l'utilisai encore le group by (3eme requete de mon precedent post) mais je l'avais enlevé, ne sachant pas trop ou etait l'erreur j'ai essayé des trucs.

La c'est bon ca marche impec c'était l'histoire du having a la place du where.

Merci bcp pour ton aide. Jvai regarder l'altruiste.

par zeus » 16 mai 2005, 17:40

1erement : pourquoi tu utilise plus le GROUP BY ?

2emement : après un GROUP BY, il faut utiliser HAVING et non plus WHERE

3emement : tu ne peut utiliser SUM() si tu n'utilise pas GROUP BY

Jete un coup d'oeil ==> ICI <==

par Justone » 16 mai 2005, 17:37

J'avais ca :
$str_requete = "SELECT type, SUM(sla) as somme, COUNT(type) as nombre FROM sla GROUP BY type"; 
Et j'ai remplacé par ca :
$str_requete = "SELECT type, SUM(sla) as somme, COUNT(type) as nombre FROM sla WHERE type LIKE 'Maintenance Building'";
Et meme ca :
$str_requete = "SELECT type, SUM(sla) as somme, COUNT(type) as nombre FROM sla GROUP BY type WHERE type LIKE 'Maintenance Building'";
Mais j'ai tjs la meme erreur...

par zeus » 16 mai 2005, 17:33

Tu as changé quoi ?

Ce message d'erreur veut dire que ta requete n'est plus valide !!!

par Justone » 16 mai 2005, 17:23

Merci bcp!

Je connaissais pas LIKE.

Mais maintenant j'ai cette erreur sur le while :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

par zeus » 16 mai 2005, 17:12

le group by te permet de séparer tes enregistrements comme si tu faisait 3 requetes

Code : Tout sélectionner

SELECT type, COUNT(*), SUM(temp) FROM table WHERE type LIKE "type1" SELECT type, COUNT(*), SUM(temp) FROM table WHERE type LIKE "type2" SELECT type, COUNT(*), SUM(temp) FROM table WHERE type LIKE "type3"

par Justone » 16 mai 2005, 17:05

Merci bcp Zeus ton code marche bien maintenant.

Mais j'ai toujours du mal a comprendre comment faire la différence entre les différents types!

Regarde le tableau que j'obtiens :

Downtime type------------------Number

Maintenance Building-----------Type : Maintenance Building
-------------------------------------Nombre d'occurence : 1
-------------------------------------Somme des occurences : 20
-------------------------------------Type : Monthly Maintenance
-------------------------------------Nombre d'occurence : 2
-------------------------------------Somme des occurences : 30

Monthly Maintenance----------Type : Maintenance Building
------------------------------------Nombre d'occurence : 1
------------------------------------Somme des occurences : 20
------------------------------------Type : Monthly Maintenance
------------------------------------Nombre d'occurence : 2
------------------------------------Somme des occurences : 30

par zeus » 16 mai 2005, 16:51

Reprend mon code, je viens de le modifier et il va t'afficher tout les types, leur nombre et leur somme !!!!

par Justone » 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

par zeus » 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

par rami » 16 mai 2005, 16:48

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

par Justone » 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.

par zeus » 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