Page 1 sur 1

Tableau associatif

Posté : 13 nov. 2006, 20:18
par bunk
Bonsoir,

je cherche a faire un tableau associatif d'après une requete pour trier en fonction de l'année : voila le code
<?php
	echo "<br /><hr size='1' width='94%' align='center' />";
	echo "<h2>Les événements passés</h2>";

	// echo '<div style="padding: 10px 0px 0px 20px;">En 2006</div><br />';

	$sql1 = "SELECT * FROM evenements ORDER BY date DESC";
	$req1 = mysql_query($sql1) or die('Impossible de séléctionner les evenements');

	$i2=0; // Initialisation du compteur i2 à 0

	while ($val = mysql_fetch_array($req1)){
		$id_evenement1 = $val ["id_evenement"];
		$date_evenement1 = $val ["date_evenement"];
		$sujet_fr1 = $val ["sujet_fr"];
		$evenement_fr1 = $val ["evenement_fr"];
		$dateev = $val ["date"];

		$datenow = date('Y-m-d');
		$sql = "SELECT DATEDIFF('$dateev', '$datenow')";
		$req = mysql_query($sql) or die('Impossible de faire calcul');

		while  ($row  =  mysql_fetch_row($req))  {

			$moins = substr($row[0],0,1);

			if($moins == "-") {

				if($id_evenement1 == $id_evenement || $id_evenement1 == $var_id) {

					// Si id = id du prochain OU id = id consulté : n'affiche pas la ligne de l'événement

				} else {
				
					echo "<ul>\n";
					echo "<li><a href='index.php?page=evenements&id=" . $id_evenement1 . "'>" . dateFR2($dateev) . " : " . $sujet_fr1 . "</a></li>\n";
					echo "</ul>\n";
					$i2++;
					
				}
			}
		}
	}
		
	if ($i2 == 0) {
	
		echo '<div style="padding: 10px 0px 0px 20px;">Aucun événement n\'est passé.</div><br />';
	
	}
?>
pour le moment ca me donne la liste de mes evenement classic et je voudrais grouper les evennement par année.

mode classic :

ev1 - 00-00-2006 - titre
ev2 - 00-00-2006 - titre
ev3 - 00-00-2005 - titre
ev4 - 00-00-2004 - titre

mode tri :

En 2006
ev1 - 00-00-2006 - titre
ev2 - 00-00-2006 - titre
En 2005
ev3 - 00-00-2005 - titre
En 2004
ev4 - 00-00-2004 - titre

Je pense que pour faire cela il faut utiliser un tableau mais je ne sais pas trop bien comment commencer car il faut decouper la date, peux être avec : substr(dateFR2($dateev),-4);

D'avance merci pour votre aide

Posté : 13 nov. 2006, 22:32
par DocType
Moi je serai tenté par :
$sql1 = "SELECT * FROM evenements WHERE date<'".date("Y-m-d")."' ORDER BY date DESC"; 
$req1 = mysql_query($sql1) or die('Impossible de séléctionner les evenements'); 
if (mysql_num_rows($req1) == 0)
	echo "Aucun événement n'est passé.";
else
{
	$resultats = array();
	while ($val = mysql_fetch_array($req1))
	{
		if ($val["id_evenement"] != $var_id)
		{
			if (!isset($resultats[substr($val["date"],0,4)]))
				$resultats[substr($val["date"],0,4)] = array();
			$resultats[substr($val["date"],0,4)][] = "<li><a href='index.php?page=evenements&id=".$val["id_evenement"]."'>".$val["date"]." : ".$val["sujet_fr"]."</a></li>";
		}
	}
	foreach($resultats as $key => $ value)
	{
		echo $key."<br><ul>";
		foreach($resultats[$key] as $key => $ value)
		{
			echo $value;
		}
		echo "</ul><br><br>";
	}
}

Posté : 14 nov. 2006, 17:07
par bunk
Bonjour,

Après adaptation cela fonctionne, merci je vais etudier ce code.

encore merci

Posté : 14 nov. 2006, 18:46
par DocType
et pense à revoir ton code...
y'a pas mal d'améliorations possibles, style éviter des requêtes inutiles... :roll: