Tableau avec les mois et les années

Petit nouveau ! | 2 Messages

14 oct. 2011, 12:15

Bonjour,

Je souhaite faire un tableau qui comptabilise des actes médicaux faits par mois et par année.

Je voyais ca comme ça, ma 1ere colonne indiquerait les années, ma 1 ligne indiquerait les mois et ensuite mon count se glisserait correctement dans chacune des bonnes cases. Débutant en Php, je ne m'y retrouve pas avec les tableaux. Les dates d'actes sont dans ma base de données MYSQL, mon champ s’appelle "date_acte".

En gros si "date_acte" est au 01/01/2011 alors mettre 1 dans la colonne JANVIER et la ligne 2011.

Merci d'avance.

Petit nouveau ! | 2 Messages

14 oct. 2011, 12:19

Aujourd'hui, j'ai

Année Mois Nombre
2010 12 28
2011 1 45
2011 2 38

et je souhaiterais :
2010 2011
1 45
2 38
3
4
..
12 28

Merci d'avance

Mammouth du PHP | 2278 Messages

14 oct. 2011, 14:42

Bjr
Dans ta bdd, tu as autant de lignes avec la même date que d'actes, ou,bien une ligne par chaque date?
1 Le tableau de résultats est un tableau à deux dimensions qu'il faut initialiser:
$resultats = array();
for ($ligne = 1;  $ligne <=12;  $ligne ++)
{
	for ($colonne = 1; $colonne <=5; $colonne ++)
	{
		$resultats [$ligne][$colonne] = 0;
	}
}
2) Pour pouvoir écrire en colonne 1 les résultats de 2010...
$annee_initiale = 2009;
3 la manipulation de la BDD:
a) Si la date est au format date de Mysql elle est sous la forme YYYY-MM-DD (http://dev.mysql.com/doc/refman/5.0/fr/using-date.html)
b) récupération de toutes les dates par un select : nom $date
c) conversion de cette date en timestamp par
$t_date = strtotime($date) 
d) récupérations desinformations utiles
$la_date = getdate($timedate);
e) la ligne est le mois numérique :
$mois = $la_date['mon'];
f) l'annee est
$annee = $la_date['year'];
g)
$resultats[$mois][$annee] +=1;
4) il ne reste plu qu'à exploiter le tableau résultats (minimum print_r($resultats); ou une double boucle))
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Invité
Invité n'ayant pas de compte PHPfrance

14 oct. 2011, 16:17

Bonjour,

Tout d'abord merci d'avoir répondu.

Je pense comprendre là démarche seulement mon gros problème, c'est la mise en exécution. Je voyais effectivement une une boucle dans une autre mais comment correctement importer mes données dans cette boucle, c'est là que je sèche.

Dans ta bdd, tu as autant de lignes avec la même date que d'actes, ou,bien une ligne par chaque date?

J'ai autant de lignes que d'actes.

2) Pour pouvoir écrire en colonne 1 les résultats de 2010...
$annee_initiale = 2009;


Ou donc le faire apparaître dans ma boucle?

Toutes les données de ton petit "3" doivent se mettre en variable avant ma boucle?

Pour avoir une critique plus précise, je peux t'envoyer mon fichier Php par courriel si tu veux.

merci encore.

Mammouth du PHP | 2278 Messages

15 oct. 2011, 13:58

oui ça me permettra d et'envoyer l'ensemble de mes cogitations
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 2278 Messages

16 oct. 2011, 11:38

<?PHP
/* la date mysql est YYYY-MM_DD*/
/* ma table de tests se nomme actes et a un seul champ DATE acte*/
date_default_timezone_set("Europe/Paris");
$annee_initiale = 2009;
$resultats = array();
for ($ligne = 1; $ligne <=12; $ligne ++)
{
for ($colonne = 1; $colonne <=5; $colonne ++)
{
$resultats [$ligne][$colonne] = 0;
}
}

mysql_connect("", "","");
mysql_select_db ("");
$requete = "select acte from actes";
$resultat = mysql_query($requete);
while ($ligne = mysql_fetch_array($resultat))
{
$date = $ligne[0];
$timedate = strtotime ($date);
$la_date = getdate($timedate);
$annee = $la_date['year'];
$mois = $la_date['mon'];
$colonne_annee = $annee-$annee_initiale;
$resultats[$mois][$colonne_annee]+=1;
}

print_r($resultats);
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD