1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| <?php
// ---------------------------------------------------
// 2/ FONCTION : LISTING des NEWS (avec résumé du contenu)
// ---------------------------------------------------
function news_affiche_liste_colonne($numPage)
{
if(is_numeric($numPage) && $numPage>0)
{
// -------------------------
global $pdo;
// -------------------------
// requete : toutes les News (CONFIG : Nombre Maxi à afficher -> NEWS_NBRE_MAXITOTAL)
$news_total_query = "SELECT * FROM ".T_NEWS_TABLE." ".
" WHERE news_publier = 1 ". // uniquement les news publiées
" ORDER BY news_date DESC ".
" LIMIT 0, :newsNbreMaxiTotal ".
";";
try {
$pdo_select = $pdo->prepare($news_total_query);
$pdo_select->bindValue(':newsNbreMaxiTotal', NEWS_NBRE_MAXITOTAL, PDO::PARAM_INT);
$pdo_select->execute();
$news_total_nombre = $pdo_select->rowCount();
} catch (PDOException $e) { echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
// -------------------------
// PAGINATION
// On calcule le nombre de pages
$nbreTotalPages = ceil($news_total_nombre / NEWS_NBRE_PARPAGE);
// On calcule le numero du premier message qu'on prend pour le LIMIT de MySQL
$numDebut = ($numPage - 1) * NEWS_NBRE_PARPAGE;
// -------------------------
// News à afficher sur la page
$news_query = "SELECT * FROM ".T_NEWS_TABLE." ".
" WHERE news_publier = 1 ". // uniquement les news publiées
" ORDER BY news_date DESC ".
" LIMIT :numDebut,:newsNbreParPage ".
";";
try {
$pdo_select = $pdo->prepare($news_query);
$pdo_select->bindValue(':numDebut', $numDebut, PDO::PARAM_INT);
$pdo_select->bindValue(':newsNbreParPage', NEWS_NBRE_PARPAGE, PDO::PARAM_INT);
$pdo_select->execute();
$news_nombre = $pdo_select->rowCount();
$news_rowAll = $pdo_select->fetchAll();
} catch (PDOException $e) { echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
// -------------------------
// Affichage de la PAGINATION
news_pagination_pages($numPage, $nbreTotalPages);
?>
<div id="containerListing">
<?php // -------------------------
// Affichage des News
if($news_nombre>0) {
foreach ($news_rowAll as $news_row)
{
// -------------------------
$newsId = intval($news_row['news_id']);
// On recupere les infos dans la BD
require(__DIR__ . '/news_data_fromBD.php');
// -------------------------
// Affichage de la news
news_affiche_fiche_resume_colonne($newsId);
}
}
?>
</div>
<?php
// -------------------------
// Affichage de la PAGINATION
news_pagination_pages($numPage, $nbreTotalPages);
}
};
// --------------------------------------------------------------
// FONCTION : PAGINATION (listing des News)
// --------------------------------------------------------------
function news_pagination_pages($numPage, $nbreTotalPages)
{
// -------------
$numLimit = 5; // Limite : nombre de pages avant/après la page courante
$sep = ''; // Séparateur '', '-', '|', '/' : entre les numéros de pages
// -------------
$args = preg_replace('#(pg=[0-9]+&?)#', '', $_SERVER['QUERY_STRING']);
$args = (!empty($args))? '&'.$args : '';
// -------------
// PAGINATION
if($nbreTotalPages > 1)
{
?>
<div class="newsPagination">
<?php echo $sep;
for ($i=1; $i<=$nbreTotalPages; $i++)
{
// 1ère page
if($i==1 && $numPage>($numLimit+1))
{
echo ' <a href="?pg='.$i.$args.'" title="Page '.$i.'">'.$i.'</a> '.$sep.'...'.$sep;
}
// page courante + $numLimit pages avant et après
if(($numPage-1-$numLimit)<$i && $i<($numPage+1+$numLimit))
{
if($i==$numPage) { // page courante
echo ' <b>Page '.$i.'</b> '.$sep;
} else {
echo ' <a href="?pg='.$i.$args.'" title="Page '.$i.'">'.$i.'</a> '.$sep;
}
}
// dernière page
if($i==$nbreTotalPages && $numPage<($nbreTotalPages-$numLimit))
{
echo '...'.$sep.' <a href="?pg='.$i.$args.'" title="Page '.$i.'">'.$i.'</a>';
}
}
?>
</div>
<?php } // (fin if nbreTotalPages)
};
// -------------------------------------------------------------- |
Partager