archives.mod.php from Gulus at Krugle
Show archives.mod.php syntax highlighted
<?php
acces_direct_au_module_interdis_veuillez_utiliser_index_php();
/**
Ce module est utilisé dans plusieurs contextes, d'où la complexité du code.
Ce code est ce qui affiche des "items" avec un "next" et un "back" pour naviguer
à travers la liste complète des items. Voir:
index.php?mod=archives // archives des nouvelles (lien de la page principale)
index.php?mod=archives&mode=activite // archive des activités (lien de la section Activités)
index.php?mod=edition_nouvelle // section privée
index.php?mod=edition_activite // section privée
Idéalement, ce code aurait du être écrit comme un classe de base qui utilise des "items"
avec les méthodes appropriées pour utiliser ces items...
*/
$date = date("Y-m-d");
if(!isset($nb_elements_max))
$nb_elements_max = 5;
if($nb_elements_max <= 0) $nb_elements_max = 5;
if(!isset($debut)) $debut = 0;
if($debut < 0) $debut = 0;
if(!isset($module)) $module = "archives";
if(!isset($mode) or ($mode != "nouvelle" and $mode != "activite" and $mode!="pv")) $mode = "nouvelle";
// si le module est utilisé pour voir l'archive des nouvelles,
// on ne veut pas que les nouvelles non activées s'affichent.
if($module != "edition_nouvelle" and $mode == "nouvelle")
{
$whereEstActive = "WHERE (date_nouvelle <= '$date 23:59:59' AND est_active = 1)";
}
?>
<FORM METHOD="POST" ACTION="<?php echo $PHP_SELF . "?mod=$module&mode=$mode&debut=$debut"; ?>">
Afficher <INPUT TYPE="TEXT" NAME="nb_elements_max" VALUE="<?php echo $nb_elements_max; ?>" SIZE=3>
<?php echo $mode;?>s à la fois. <INPUT NAME="submit__" TYPE=submit VALUE="Soumettre">
</form>
<p>
<?php
include("includes/db_info.inc.php");
$db = mysql_connect($db_host, $db_user, $db_passwd);
mysql_select_db($db_name, $db);
// retourne le nombre de "row" dans la bd.
$result = mysql_query("SELECT COUNT(*) FROM gulus_${mode}s $whereEstActive");
$myrow = mysql_fetch_row($result);
$nb_elements = $myrow[0];
if($mode == "activite")
{
$sql = "SELECT * FROM gulus_activites ORDER BY date_activite DESC LIMIT $debut, $nb_elements_max";
}
elseif($mode == "nouvelle")
{
if($module == "edition_nouvelle") // on affiche toutes les nouvelles
{
$sql = "SELECT * FROM gulus_nouvelles ORDER BY date_nouvelle DESC LIMIT $debut, $nb_elements_max";
}
else // on n'affiche pas les nouvelles inactives ni les nouvelles dans le futur
{
$sql = "SELECT * FROM gulus_nouvelles WHERE (date_nouvelle <= '$date 23:59:59' AND est_active = 1) ORDER BY date_nouvelle DESC LIMIT $debut, $nb_elements_max";
}
}
elseif($mode == "pv")
{
$sql = "SELECT * FROM gulus_pvs ORDER BY date_pv DESC LIMIT $debut, $nb_elements_max";
}
$result = mysql_query($sql, $db) or die("Requête SQL invalide : " .$sql);
$aucun_item = TRUE;
$nb_elements_affiches = mysql_num_rows($result);
while ($myrow = mysql_fetch_array($result)) {
$aucun_item = FALSE;
if($mode == "nouvelle")
afficheNouvelle($myrow, "edition_nouvelle" == $module);
elseif($mode == "activite") // le deuxieme argument de afficheActivite fonctionne en logique négative...
afficheActivite($myrow, "edition_activite" != $module, "edition_activite" == $module);
elseif($mode == "pv")
affichePv($myrow,"edition_pv"==$module,FALSE);
echo '<p>';
}
if($aucun_item) {
printf("Aucune(e) $mode pour l'instant.<p>");
}
$nb_elements_restants = $nb_elements - $nb_elements_affiches - $debut;
$nb_el_prochain_affichage = min($nb_elements_restants, $nb_elements_max);
if($nb_elements_restants > 1) $s_ = "s";
if($nb_elements_restants >= 1) echo "Il reste $nb_elements_restants $mode$s dans l'archive.<p>";
if($debut > 0)
{
echo "[<A HREF=\"index.php?mod=$module&mode=$mode&nb_elements_max=$nb_elements_max&debut=" . ($debut - $nb_elements_max) . "\">Afficher les ${mode}s précédentes</A>] ";
}
else
{
echo "[Aucun(e) $mode précédent(e)] ";
}
$lien = "<A HREF=\"index.php?mod=$module&mode=$mode&nb_elements_max=$nb_elements_max&debut=" . ($debut + $nb_elements_affiches). "\">";
if($nb_el_prochain_affichage == 1)
{
echo "[${lien}Afficher le(la) prochain(e) $mode</A>]";
}
elseif($nb_el_prochain_affichage > 1)
{
echo "[${lien}Afficher les " . $nb_el_prochain_affichage . " prochain(e)s ${mode}s</A>]";
}
else echo "[Aucun(e) $mode suivant(e)]";
?>
See more files for this project here