Somme dans un array php

Résolu
rirififiloulou3349 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
rirififiloulou3349 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je dois créer un graphique avec jpgraph. Une courbe ascendante qui comptabilise pour chaque journée d'un mois les heures réalisées, sachant que chaque journée suivante comptabiliserais le total de la journée précédente...

Voici ma requête SQL qui comptabilise le total pour chaque journée sur un mois :

$premier_jour = date('Ym').'01';
mysql_select_db($database_HelirisQ, $HelirisQ);
$query_courbe_conso = "SELECT date_mission, pot_conso, SUM(pot_conso) as somme FROM liste_mission_faite WHERE date_mission >= $premier_jour AND date_mission <= '".date('Ymt')."' GROUP BY date_mission ";
$courbe_conso = mysql_query($query_courbe_conso, $HelirisQ) or die(mysql_error());
$row_courbe_conso = mysql_fetch_assoc($courbe_conso);
$totalRows_courbe_conso = mysql_num_rows($courbe_conso);

Puis je crée mon array à partir duquel jpgraph crée la courbe:

$debut_date = date('Ym');
$courbe_conso_display = array('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');


Je boucle sur le résultat de la requête et je remplis mon array :

do {
$date = $row_courbe_conso['date_mission'];
$date = str_split($date);
if($date[6] ==! '0'){$date = $date[6].$date[7];} else { $date = $date[7];}
$previous_conso = $row_courbe_conso['somme'];
$courbe_conso_display[$date] = $row_courbe_conso['somme'] + $previous_conso;
} while($row_courbe_conso = mysql_fetch_assoc($courbe_conso));

Mon problème se trouve ici. J'aimerais qu'à chaque passage de la boucle, la valeur précédente puisse être insérer dans la suivante, etc..

Merci pour vos réponses.

A voir également:

9 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
essayes comme ça ?
<?php
$premier_jour = date('Ym').'01';
mysql_select_db($database_HelirisQ, $HelirisQ);
$query_courbe_conso = "SELECT date_mission, pot_conso, SUM(pot_conso) as somme FROM liste_mission_faite WHERE date_mission >= $premier_jour AND date_mission <= '".date('Ymt')."' GROUP BY date_mission ";
$courbe_conso = mysql_query($query_courbe_conso, $HelirisQ) or die(mysql_error());
$row_courbe_conso = mysql_fetch_assoc($courbe_conso);
$totalRows_courbe_conso = mysql_num_rows($courbe_conso);

//Puis je crée mon array à partir duquel jpgraph crée la courbe:

$debut_date = date('Ym');
//on va generer un array avec comme index les dates au format 'Ymd'
$courbe_conso_display=array();
for($j=1;$j<=date('t');$j++){
	//en mettant toutes les valeurs a zero en un premier temps
	if($j<10){
		$index=date('Ym').'0'.$j;
	}else{
		$index=date('Ym').$j;
	}
	$courbe_conso_display[$index]=0;
}
//on va stocker les valeurs lues dans la bdd dans un array
$array_conso_bdd=array();
$memo_conso=0;
do {
$date_mission = $row_courbe_conso['date_mission'];
/*
$array_date_mission = str_split($date_mission);
if($array_date_mission[6] ==! '0'){$date = $array_date_mission[6].$array_date_mission[7];} else { $date = $array_date_mission[7];}
*/

$previous_conso = $row_courbe_conso['somme'];
//on va modifier la valeur de l'array dont l'index correspond à la date
$array_conso_bdd[$date_mission] = $row_courbe_conso['somme'] + $memo_conso;
$memo_conso += $previous_conso;
} while($row_courbe_conso = mysql_fetch_assoc($courbe_conso));

//traitement de l'array dispay
$memo_value_prec=0;
foreach($courbe_conso_display as $date=>$value){
	//on entre les valeurs pour les jours non vides
	if(isset($array_conso_bdd[$date]) && $array_conso_bdd[$date] != 0){
		$courbe_conso_display[$date]=$array_conso_bdd[$date];
		$memo_value_prec=$array_conso_bdd[$date];
	}elseif($memo_value_prec > 0){
		//si un jour est vide de conso on rentre la valeur precedente
		$courbe_conso_display[$date]=$memo_value_prec;
	}
}
1
rirififiloulou3349 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Personne n'a d'idées ?
0
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
Bonjour,

Je suis à moitié hors sujet.

JPGRAPH n'est pas une bonne solution à mon sens.

Personnellement, j'utilise RGRAPH. Plus d'infos ici:
http://html5.immo-scope.com/index.php?page=html5/elementCanvasAvecLibRgraph

A+
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
bonjour,

essayes comme ça:
<?php
$premier_jour = date('Ym').'01';
mysql_select_db($database_HelirisQ, $HelirisQ);
$query_courbe_conso = "SELECT date_mission, pot_conso, SUM(pot_conso) as somme FROM liste_mission_faite WHERE date_mission >= $premier_jour AND date_mission <= '".date('Ymt')."' GROUP BY date_mission ";
$courbe_conso = mysql_query($query_courbe_conso, $HelirisQ) or die(mysql_error());
$row_courbe_conso = mysql_fetch_assoc($courbe_conso);
$totalRows_courbe_conso = mysql_num_rows($courbe_conso);

//Puis je crée mon array à partir duquel jpgraph crée la courbe:

$debut_date = date('Ym');

$courbe_conso_display = array('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');


//Je boucle sur le résultat de la requête et je remplis mon array :
//tu utilises toujours le même nom de variable $date, évites
$memo_conso=0;
do {
$date_mission = $row_courbe_conso['date_mission'];
$array_date_mission = str_split($date);
if($array_date_mission[6] ==! '0'){$date = $array_date_mission[6].$array_date_mission[7];} else { $date = $array_date_mission[7];}
$previous_conso = $row_courbe_conso['somme'];
$courbe_conso_display[$date] = $row_courbe_conso['somme'] + $memo_conso;
$memo_conso += $previous_conso;
} while($row_courbe_conso = mysql_fetch_assoc($courbe_conso));

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rirififiloulou3349 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Alain ça marche nickel !

Je vais maintenant essayer d'attribuer les valeurs précédentes aux jours qui suivent et pour lesquels il n'y a pas de valeurs d'insérer dans la bdd.(pour avoir des paliers et non pas des montagnes).

Si tu as une idée, je suis preneur...

merci encore
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
en n'initialisant pas a zero l'array
$courbe_conso_display = array('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');


essayes en supprimant cette ligne
0
rirififiloulou3349 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
En fait il faut que je garde le nombre de jours du mois dans mon array. Si je supprime la ligne array, je ne me retrouve qu'avec le nombre de lignes de la bases de données.

Du coup si par exemple entre le 15 et le 19 du mois il n'y a rien, la courbe sera néanmoins ascendante parce qu'elle va relier les deux points.

Or ce que je voudrais, c'est que les jours compris entre le 15 et le 18 gardent la valeur du 15...

De plus, quand je supprime cette ligne, jpgraph m'affiche une erreur.
0
rirififiloulou3349 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Je pense qu'il faut que je recherche dans l'array, les valeurs 0 et leurs attribuer la valeur précédente.
0
rirififiloulou3349 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Alain pour le temps passer sur le sujet

je vais regarder ça demain
0