Page 1 sur 1

Variable 2 dimensions

Posté : 16 déc. 2006, 23:47
par fredonweb
Bonsoir,

j'ai une boucle dans mon code qui me permet de récupéré dans ma bdd une liste de dates (date de début et date de fin), et de m'afficher ces dates en y ajoutant toutes les dates comprises entre la date de début et le date de fin.

Voila mon code :
while ($etudes = mysql_fetch_array($resultat)) 
{
	$date_debut = strtotime($etudes ['date_debut']);   //Date du début d'évènement
	$date_fin = strtotime($etudes ['date_fin']);   //Date de fin d'évènement
	
	$nbjour=($date_fin-$date_debut)/60/60/24;   //Calcul du nombre de jours entre les deux dates
	
	for($k=0;$k<=$nbjour;$k++)
	{
		$evenement[$i] = date('Y-m-j',$date_debut);
		//echo ($evenement[$i]);		
		$i++;
		$date_debut+= 60*60*24;   //Date du début d'évènement +1 jour (en seconde)
	}
}
mysql_close($connectDB);

Je voudrais maintenant ajouter à ces dates une deuxième caractéristique (champ type de ma bdd) et donc pour chaque date avoir un type. Si j'ai bien compris, ma variable $evenement deviendrait une variable à 2 dimensions ???

Mon problème est que je ne sais pas du tout comment faire et je trouve peu de doc sur la question.

Je vous demande pas de faire le boulot à ma place, mais juste de m'orienter parce que là je suis complètement perdu.

merci
fredonweb

Posté : 17 déc. 2006, 00:42
par Truc
Salut,

suffit d'y ajouter cette dimensions à l'aide d'un tableau indexé (par exemple) :
$evenement[$i]['date'] = date('Y-m-j',$date_debut);
$evenement[$i]['type'] = $type_de_la_base;
Après tu peux parourir ce tableau à l'aide de boucles foreach() ou for()

Posté : 17 déc. 2006, 13:26
par fredonweb
Bonjour,

suite à mon envoi, j'avais trouvé comme solution :
while ($etudes = mysql_fetch_array($resultat)) 
{
	$date_debut = strtotime($etudes ['date_debut']);   //Date du début d'évènement
	$date_fin = strtotime($etudes ['date_fin']);   //Date de fin d'évènement
	
	$nbjour=($date_fin-$date_debut)/60/60/24;   //Calcul du nombre de jours entre les deux dates
	
	for($k=0;$k<=$nbjour;$k++)
	{
		$evenement[$i] = date('Y-m-j',$date_debut).' '.$etudes['type_evenement'];   //<<< La solution que j'ai trouvée
		echo ($evenement[$i]."<br/>");	
		$i++;
		$date_debut+= 60*60*24;   //Date du début d'évènement +1jour (en seconde)
	}
}
mysql_close($connectDB);
avec comme boucle pour afficher les donnees :
for ($i = 0; $i<count($evenement); $i++)   //Implémente les évènements
		{
			if ($evenement[$i] == $annee."-".$mois."-".$jour." type1")  //Si un évènement correspond au jour à afficher et est de type1
			{
				echo ("blablabli blablabla");   //Affiche blablabli blablabla
				$jour++;
			}
			if ($evenement[$i] == $annee."-".$mois."-".$jour." type2")  //Si un évènement correspond au jour à afficher et est de type2
			{
				echo ("lalali lalala");   //Affiche lalali lalala
				$jour++;
			}
		}
Mon code fonctionne comme je veux qu'il fonctionne mais il est adapté pour un nombre de type d'évènements faible.

J'ai regardé la proposition de Truc, mais je ne comprends pas comment écrire ma boucle pour afficher toutes les dates des evenements de type1 par exemple. Si vous pouviez m'éclairer, je suis preneur.

fredonweb

Posté : 17 déc. 2006, 13:42
par Truc
J'ai regardé la proposition de Truc, mais je ne comprends pas comment écrire ma boucle pour afficher toutes les dates des evenements de type1 par exemple. Si vous pouviez m'éclairer, je suis preneur.
//1er passage dans la boucle de remplissage on obtient
$evenement[0]['date'] = "2006-12-17";
$evenement[0]['type'] = "type1";

//2eme passage dans la boucle de remplissage on obtient
$evenement[1]['date'] = "2007-01-01";
$evenement[1]['type'] = "type2";

//ainsi de suite...
Pour parcourir le tableau :
foreach($evenement as $sous_tableau)
{
    if($sous_tableau["type"] == "type1")
    { 
        echo "<p>Evénement du ".$sous_tableau["date"]." de type <type1></p>";
        //opérations à effectuer si type1
    }
    else
    {
         echo "<p>Evénement du ".$sous_tableau["date"]." de type <type2></p>";
         //opérations pour type2
    }
}

Posté : 17 déc. 2006, 20:43
par fredonweb
Truc, merci de ton aide.
Je comprends le principe de ton code, mais je n'arrive à le faire tourner. Je l'ai adapté en remplaçant "type1" et "type2" par des valeurs de ma bdd (valeurs texte). Est ce que j'ai juste ???

Voila ce que ça me retourne :
Evénement du 2006-01-15 de type
Evénement du 2006-01-16 de type
Evénement du 2006-01-17 de type
Evénement du 2006-01-18 de type
Evénement du 2006-01-19 de type
Evénement du 2006-02-2 de type
Evénement du 2006-02-3 de type
Evénement du 2006-02-4 de type
Evénement du 2006-02-5 de type
Evénement du 2006-03-15 de type
Evénement du 2006-03-16 de type
Evénement du 2006-03-17 de type
Evénement du 2006-11-11 de type

fredonweb

Posté : 17 déc. 2006, 22:07
par Truc
Et bien ça c'(est l'affichage de retour... pas très parlant comme ça surtout qu'il manque le type (le mot qui faissait la différence dans les deux cas => <type1> et <type2>)

ça affiche donc toujours la même chose bien que les types ont (peut être) été pris en compte.

Pour vérifier vérifie plutot le contenu du tableau $evenement :
<pre>
<?php
var_dump($evenement);
?>
</pre>

Posté : 18 déc. 2006, 23:14
par fredonweb
Bonsoir,

voila le résultat :
array(14) {
  [0]=>
  array(2) {
    ["date"]=>
    string(10) "2006-01-15"
    ["type"]=>
    string(13) "RTT (journée)"
  }
  [1]=>
  array(2) {
    ["date"]=>
    string(10) "2006-01-16"
    ["type"]=>
    string(13) "RTT (journée)"
  }
  [2]=>
  array(2) {
    ["date"]=>
    string(10) "2006-01-17"
    ["type"]=>
    string(13) "RTT (journée)"
  }
  [3]=>
  array(2) {
    ["date"]=>
    string(10) "2006-01-18"
    ["type"]=>
    string(13) "RTT (journée)"
  }
  [4]=>
  array(2) {
    ["date"]=>
    string(10) "2006-01-19"
    ["type"]=>
    string(13) "RTT (journée)"
  }
  [5]=>
  array(2) {
    ["date"]=>
    string(9) "2006-02-2"
    ["type"]=>
    string(22) "Congés payés (journée)"
  }
  [6]=>
  array(2) {
    ["date"]=>
    string(9) "2006-02-3"
    ["type"]=>
    string(22) "Congés payés (journée)"
  }
  [7]=>
  array(2) {
    ["date"]=>
    string(9) "2006-02-4"
    ["type"]=>
    string(22) "Congés payés (journée)"
  }
  [8]=>
  array(2) {
    ["date"]=>
    string(9) "2006-02-5"
    ["type"]=>
    string(22) "Congés payés (journée)"
  }
  [9]=>
  array(2) {
    ["date"]=>
    string(10) "2006-03-15"
    ["type"]=>
    string(13) "RTT (journée)"
  }
  [10]=>
  array(2) {
    ["date"]=>
    string(10) "2006-03-16"
    ["type"]=>
    string(13) "RTT (journée)"
  }
  [11]=>
  array(2) {
    ["date"]=>
    string(10) "2006-03-17"
    ["type"]=>
    string(13) "RTT (journée)"
  }
  [12]=>
  array(2) {
    ["date"]=>
    string(10) "2006-11-11"
    ["type"]=>
    string(23) "Autres congés (journée)"
  }
  [13]=>
  array(2) {
    ["date"]=>
    string(10) "2006-12-20"
    ["type"]=>
    string(13) "RTT (journée)"
  }
}
fredonweb

Posté : 19 déc. 2006, 00:02
par Truc
Oui mais ça ne me sert pas à moi :wink:
Le tableau est correctement renseigné.

Maintenant tu peux le parcourir (foreach) et en faire ce que tu veux.

Posté : 24 déc. 2006, 17:54
par fredonweb
Après avoir décroché quelques jours, tout me paraît maintenant très clair et j'arrive à obtenir ce que je veux. Un petit "résolu" pour clôturer la discussion.
Merci Truc pour ton aide.

fredonweb