Problème de pagination

Problème de pagination - PHP - Programmation

Marsh Posté le 25-03-2009 à 13:02:14    

Bonjour  :)  
 
J'ai écris un script php permettant d'afficher une news par page....enfin en théorie, parce qu'en pratique c'est la dernière news qui s'affiche sur toutes mes pages  :sweat:  
ça fait plusieurs jours que je cherche mais en vain. Je pense pas que mon code soit complètement faux mais vas savoir.
 
Voici mon code:

Code :
  1. <?php
  2.    mysql_connect("localhost", "********", "**********" );
  3.    mysql_select_db("**********" );
  4.    
  5.    $nombreDeMessagesParPage = 1;
  6.    $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM news');
  7.    $donnees = mysql_fetch_array($retour);
  8.    $nombreDePages = $donnees['nb_messages'];
  9.    
  10.    if(isset($_GET['page']) && is_int($_GET['page']) && $_GET['page'] > 0 &&
  11.    $_GET['page'] < $nombreDePages)
  12.    $Page = $_GET['page'] - 1;
  13.    else
  14.  
  15.    $Page = 0;
  16.  
  17.    $retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT ' .$Page .', 1');
  18.    while ($donnees = mysql_fetch_array($retour))
  19.    {
  20.        echo
  21.            '</p>
  22.            <div class="news">
  23.            <h3>'. $donnees['titre'].'
  24.            <em>le '.  date('d/m/Y à Hhi', $donnees['timestamp']) .'</em>
  25.            </h3>
  26.            <p>';
  27.        $contenu = nl2br(stripslashes($donnees['contenu']));
  28.        echo $contenu .'</p></div>';
  29.    }
  30.    echo 'Page : ';
  31.    for ($i = 1 ; $i <= $nombreDePages ; $i++)
  32.    {
  33.        echo '<a href="index.php?page=' . $i . '">' . $i . '</a> ';
  34.    }        
  35.    ?>


Si vous avez une petite idée de ce qui ne vas pas, ça serait sympa de me faire partager vos idées  :)


Message édité par Profil supprimé le 25-03-2009 à 13:13:59
Reply

Marsh Posté le 25-03-2009 à 13:02:14   

Reply

Marsh Posté le 25-03-2009 à 13:10:30    

Bon premièrement, dans ta condition, tu as :

Code :
  1. is_int($_GET['page'])


Or même si $_GET['page'] est un nombre il n'est pas considéré comme de type integer par PHP donc ce test échouera quoi qu'il arrive. Donc $Page vaudra toujours 0.
 
Mais de toute façon : la majeure partie de ton code est inutile.
En effet, tu peux directement utiliser WHERE pour récupérer ta page, sans utiliser COUNT, LIMIT et ORDER BY... :

Code :
  1. SELECT * FROM news WHERE id = $Page


 
Enfin, tu n'échappes pas tes données HTML à la sortie. Si ce n'est pas fait exprès, il y a une faille de sécurité, si ce n'est pas fait exprès, je trouve que c'est une mauvaise idée de htmlspecialchariser les données à l'enregistrement.

Reply

Marsh Posté le 25-03-2009 à 13:12:28    

ah et utilise les balises code quand tu postes ([code=php][/code])

Reply

Marsh Posté le 25-03-2009 à 13:15:10    

Merci pour les infos et pour les balises  ;)  
 
En fait, le plus gros de mon script a été réalisé grâce au tuto sur le site du zéro. Je maitrise pas encore le php. Donc je vais aller potasser tout ça, je vous tiens au courant  :)

Reply

Marsh Posté le 25-03-2009 à 13:18:06    

ouaip, enfin y'a mieux que le SDZ, je te conseille de chercher d'autres tutos (des liens ont déjà été donnés sur le forum, à toi de les retrouver) ;)

Reply

Marsh Posté le 25-03-2009 à 13:26:54    

Je me suis dis que c'était déjà un bon début, sachant que j'ai appris le HTML et CSSsur leur site.
Je vais essayer de trouver d'autres exemples de news et re bidouiller mon code.

Reply

Marsh Posté le 25-03-2009 à 13:32:43    

oui le HTML et le CSS c'est bon parce que çà ne demande pas beaucoup de rigueur contrairement aux langages de programmation...


Message édité par Profil supprimé le 25-03-2009 à 13:32:51
Reply

Marsh Posté le 05-04-2009 à 22:17:05    

Tada ! J'ai réussi mon système de pagination, mon pb maintenant c'est de faire le design. J'ai essayé de mettre des "class" afin de faire un design mais comme c'est dans du php, rien ne marche. Donc je ne vois pas comment faire sur ce coup :/

Reply

Marsh Posté le 06-04-2009 à 08:15:00    

[:pingouino]

Reply

Marsh Posté le 06-04-2009 à 15:59:12    

php génère du html (voire du css). Donc je vois pas où est le pb. Il suffit que ta class soit définie dans le css lié à ta page html :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed