Résolu diviser ma page html

  • Auteur de la discussion mustaphamus
  • Date de début

mustaphamus

Nouveau membre
salam mes amis j ai besoin de votre aide j affiche mes données a partir de ma base de données, et c est trops long , je veux aficher page par page, morceau par morceau , je travaille avec php, est ce que vous pouvez m aider ? et merci d avance
 

KyrO_82

Grand Maître
Meilleure réponse
Salut mustaphamus,

Il faut afficher les résultats pages par pages, comme sur un forum ou une recherche Google. Voici quelques points qu'il faudra suivre (pas forcément dans cet ordre) :

- Définir une url différente pour chaque page: www/resultats?page=1 ou alors www/resultats/1
- Faire une requête pour savoir combien d'enregistrements au total sont présent dans la BDD.
- Définir combien de résultats seront affichés sur chaque page (fixe ou suivant un choix de l'utilisateur).
- Nombre de pages = nombre d'enregistrements / nombre de résultats par page (arrondi à l'entier au dessus)
- Lors de l'affichage d'une page, voir quelle page on veut afficher en fonction de l'url. En fonction de cela, faire une requête pour récupérer les enregistrements correspondant à la page.
- L'exemple suivant, en MySQL, retourne 50 enregistrements à partir du 100ème enregistrement (correspondrait à la 3ème page avec 50 résultats affiché par page) :
SELECT * FROM table LIMIT 100,50

N'hésite pas à poser des questions plus ciblées pour avoir des détails...
 

VaderFR

Grand Maître
+1

pour faire cela tu peux aussi simplement passer un paramètre via un formulaire avec champ caché et validation par bouton ou image.

un champ pour le nombre par page, un pour le champ et l'ordre de tri, un pour le numéro de page...

requête de base = select / from
+ conditions
+ ordre de tri (qui peut changer, selon ce que souhaite l'utilisateur, même principe = formulaire avec champs cachés)
+ limit
 

KyrO_82

Grand Maître
Voilà un code d'une ancienne page que j'avais fais (en PHP/MySQL):

PHP:
// Récupérer le nombre de pages

$perPage = 30;
$result = mysql_query('SELECT COUNT(*) AS total FROM guestbook') OR die(mysql_error());
$row = mysql_fetch_assoc($result);
$totalPages = intval(($row['total']-1) / $perPage) + 1;

// Définir la page voulue en fonction de l'url

if(isset($_GET['page'])) {$currentPage = $_GET['page'];}
else {$currentPage  = 1;}

If (!is_int($currentPage )) {$currentPage=1;}
elseif ($currentPage<1) {$currentPage=1;}
elseif ($currentPage>$totalPages) {$currentPage=$totalPages;}

// Récupérer les enregistrements correspondants

$val = ($currentPage-1)*$perPage;
$result = mysql_query("SELECT name,message,date FROM guestbook ORDER BY id DESC LIMIT ".$val.",".$perPage) OR die(mysql_error());

// Afficher les résultats

while ( $row = mysql_fetch_array($result)){
    echo('<div class="message">');
    echo('<span>'.formatDate($row['date']).'</span>');
    echo('<h3>'.$row['name'].'</h3>');
    echo('<p>'.$row['message'].'</p>');
    echo('</div>');
}

// Barre de navigation des pages

// Lien page précédente
if ($currentPage == 1) {echo('<< ');}
else {echo('<a href="../'.$pages[$lang]['book'].'?page='.$currentPage-1.'"><<</a> ');}

// Liens vers chaque page
for ($i=1; $i<=$totalPages; $i++) {
    if ($i == $currentPage) {echo($i.' ');}
    else {echo('<a href="../'.$pages[$lang]['book'].'?page='.$i.'">'.$i.'</a> ');}
}

// Lien page suivante
if ($currentPage == $totalPages) {echo(' >>');}
else {echo(' <a href="../'.$pages[$lang]['book'].'?page='.$currentPage+1.'">>></a>');}
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 841
Membres
1 586 371
Dernier membre
buntop
Partager cette page
Haut