Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour,
j'ai un script de new en php qui affiche seulement les 5 dernières news, les autres news sont visibles nulle part, comment dois je faire pour que les news précédent les 5 dernières soit affichées sur d'autre pages, page 2,3,4 comme sur un forum par exemple.
Merci de votre aide.
Hors ligne
Voila le script de la page index
<?php
mysql_connect("localhost", "root", "") or die ("impossible de se connecter au serveur");
mysql_select_db("news");
// On récupère les 5 dernières news
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
while ($donnees = mysql_fetch_array($retour))
{
?>
<dic class="espace"></div>
<div class="conteneur">
<h3>
<?php echo $donnees['titre']; ?>
<?php echo date('d/m/Y'); ?>
</h3>
<div class="conteneur_petit">
<p>
<div class="news">
<?php
// On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
$contenu = nl2br(stripslashes($donnees['contenu']));
echo $contenu;
?>
</div>
</p>
</div>
</div>
<?php
} // Fin de la boucle des news
?>
Hors ligne
Salut,
C'est le même script mais avec avec une modification à faire dans ta requête SQL au niveau du LIMIT.
Si tu met ceci : LIMIT 5, 5 ça te donneras les 5 news suivantes, c'est à dire qu'il va laisser les 5 première lignes rencontrées pour prendre ensuite les 5 suivantes.
Hors ligne
Ok merci, le mieux serais d'avoir en bas de la première page le nombres de pages de news et les boutons suivant et précédent...si vous avez une solution assez simple ça m'intéresse toujours, merci.
Hors ligne
Ouais c'est sur que ce serait mieux (j'avais pas bien lu la question pourtant claire...)
Voici par exemple une fonction :
<?php
/**
* Methode barreNav
*
* Generation d'une barre de navigation avec fleches et numeros
*
* @param string $table Table dans laquelle on recupere le nombre de lignes
* @param int $debut Nombre de debut pour la fourchette de tri
* @param int $nbmax Nombre de fin pour la fourchette de tri et nombre de lignes par page
* @param int $nb_page Nombre de chiffres dans la barre de navigation, par defaut 20
*
* @return string
*/
function barreNav($table, $debut = 0, $nbmax = 5, $nb_page = 10)
{
$query = mysql_query('SELECT COUNT(*) FROM '.$table);
$num_nb = mysql_fetch_array($query);
$nbtotal = $num_nb[0];
$td = ' ';
$f_next = ' > ';
$f_back = ' < ';
$f_off = '';
$f_begin = ' << ';
$f_end = ' >> ';
$barreNav = '';
if ($nbtotal > $nbmax) {
/**
* Retour au debut
*/
if ($debut >= $nbmax) {
$barreNav .= $td.'<a href="?debut=0">'.$f_begin.'</a> ';
} else {
$barreNav .= $td.$f_off.$f_off.' ';
}
/**
* Precedent
*/
if ($debut >= $nbmax) {
$barreNav .= $td.'<a href="?debut='.($debut - $nbmax).'">'.$f_back.'</a> ';
} else {
$barreNav .= $td.$f_off.' ';
}
/**
* Affichage des numeros de page
*/
if ($debut >= ($nb_page * $nbmax)) {
$cpt_fin = ($debut / $nbmax) + 1;
$cpt_deb = $cpt_fin - $nb_page + 1;
} else {
$cpt_deb = 1;
$cpt_fin = (int)($nbtotal / $nbmax);
if (($nbtotal % $nbmax) != 0) $cpt_fin++;
if ($cpt_fin > $nb_page) $cpt_fin = $nb_page;
}
for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {
if ($cpt == ($debut / $nbmax) + 1) {
$barreNav .= $td.'<i>'.$cpt.'</i> ';
} else {
$barreNav .= $td.'<a href="?debut='.(($cpt - 1) * $nbmax).'">'.$cpt.'</a> ';
}
}
/**
* Suivant
*/
if ($debut + $nbmax < $nbtotal) {
$barreNav .= $td.'<a href="?debut='.($debut + $nbmax).'">'.$f_next.'</a> ';
} else {
$barreNav .= $td.$f_off.' ';
}
/**
* Vers la fin
*/
$fin = ($nbtotal - ($nbtotal % $nbmax));
if (($nbtotal % $nbmax) == 0) $fin = $fin - $nbmax;
if ($fin != $debut) {
$barreNav .= $td.'<a href="?debut='.$fin.'">'.$f_end.'</a> ';
} else {
$barreNav .= $td.$f_off.' ';
}
}
return $barreNav;
}
?>Tu peux utiliser cette fonction comme ça :
if (empty($_GET['debut'])) {
$debut = 0;
} else {
$debut = $_GET['debut'];
}
// 5 est le nombre de news à afficher
// 10 ess le nombre de pages maximum à afficher (les numéros dans la barre);
echo barreNav('news', $debut, 5, 10);Tu dois ensiute modifier ta requête SQL comme ceci :
mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT '.$debut.', '.$nbmax)Esuite dans la partie du code qui récupère les news il faut modifier la requête SQL de manière
Dernière modification par Shiva (01-12-2007 11:47:52)
Hors ligne