8796 sujets

Développement web côté serveur, CMS

Bonjour à tous,

je suis entrain de créer un site et j'aimerais faire un affichage en fonction de l'année de l’évènement.

J'ai pour l'instant fait l'affichage des évènements par ordre chronologique (du plus récent au plus ancien) comme cela :

	
$sql = "SELECT *, MIN(ID_conferences) AS min FROM conferences WHERE Date_conferences < '$datejour' GROUP BY Date_conferences DESC";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    echo '<table>' ;
       while ($data = mysql_fetch_array($req)) {
		$conference = $_GET['conference'] ;
		if ($conference == $data['ID_conferences']) { 
			if(strlen($data['Titre_conferences']) > 60) {
				$titre = substr($data['Titre_conferences'], 0, 60)."..." ;
			}
			else {
				$titre = $data['Titre_conferences'] ;
			}
			echo '<tr>
				     <td>
                                        <div class="titre_menugauche_sur">
                                              <a href="conferences.php?id=7&conference='.$data['min'].'" style="text-decoration:none ;color:#FFF;"> '.$titre.'</a>
					</div>
                                        <img src="images/separation_menu.png" style="margin:0;" />
				   </td>
			     </tr>'; 
                }
	}
echo '</table>';


Mais j'aimerais pouvoir les découper en année pour un affichage plus pratique.

Exemple :
2010
conférence 1
conférence 2
2009
conférence 3
conférence 4
...

J'ai récupéré la valeur de l'année :
$annee = substr($data['Date_conferences'], 0, 4);

mais je n'arrive pas après à lui dire d'afficher en fonction de l'année... Smiley sweatdrop

Table conférences : ID_conferences (INT), Titre_conferences (VARCHAR), Date_conferences (DATE), Texte_conferences (Text).

Est-ce que quelqu'un aurait une idée de comment faire ? Merci d'avance Smiley cligne
Modifié par louloute (22 Aug 2011 - 16:00)
Salut,

Peut être dans ta requête SQL tu peux faire un :

... GROUP BY YEAR(Date_conferences) DESC


A plus
Non ça marche pas parce que si y'a des doublons il les supprime Smiley ohwell et ça revient au même que par la date complète,

moi je voudrais vraiment qu'on sélectionne l'année, qu'on l'écrive et qu'on note en dessous tout ce qui correspond à cette date !
Tu es obligé de passer par une variable à part (enfin je pense !).

Du style :

<?php 
var $year = 0;

$sql = "SELECT ID_conferences, Titre_conferences, YEAR(Date_conferences) AS year, MIN(ID_conferences) AS min FROM conferences WHERE Date_conferences < '$datejour' AND ID_conferences = ".intval($_GET['conference'])." ORDER BY Date_conferences DESC";

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

echo '<table>';

while ($data = mysql_fetch_array($req)) 
{
	if ($year != $data['year'])
	{
		echo '<tr>
			<td><h4>',$data['year'],'</h4></td>
		</tr>';
	}
	echo '<tr>
			<td>
				<div class="titre_menugauche_sur">
					<a href="conferences.php?id=7&conference=',$data['min'],'"> ',(strlen($data['Titre_conferences']) > 60 ? substr($data['Titre_conferences'], 0, 60)."..." : $data['Titre_conferences']),'</a>
				</div>
				<img src="images/separation_menu.png" style="margin:0;" />
			</td>
		</tr>'; 
		
	$year = $data['year'];
}
echo '</table>';

Modifié par vincentD83 (22 Aug 2011 - 15:48)
Pars sur un traitement PHP alors.

Tu fais un tableau associatif (par exemple) qui contient :
Clé : les années
Valeur : un tableau avec chaque ligne que tu auras récupéré pour l'année donnée en clé.

En gros tu auras un schéma comme suit :
$table = array(
    2009 => array('ligne 1'),
    2010 => array('ligne 1, 'ligne 2', 'ligne 3'),
    2011 => array('ligne 1, 'ligne 2'),
);


Ensuite tu resors le tout avec un foreach($table as $key => $value)
$value sera un tableau qui contient toutes les lignes en rapports avec l'année contenue dans $key

A plus