|PHP| Créer une page
MastercroW
Messages postés
1094
Date d'inscription
Statut
Membre
Dernière intervention
-
dariumis Messages postés 571 Date d'inscription Statut Membre Dernière intervention -
dariumis Messages postés 571 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Alors voilà, j'ai créer un affichage de news, mais pour cela je voudrais que lorsque la limite des 5 news est dépassé, sa créer une page. Je ne vois pas comment faire, pouvez vous m'aider s'il vous plait. Merci d'avance
Voici mes requêtes :
Alors voilà, j'ai créer un affichage de news, mais pour cela je voudrais que lorsque la limite des 5 news est dépassé, sa créer une page. Je ne vois pas comment faire, pouvez vous m'aider s'il vous plait. Merci d'avance
Voici mes requêtes :
<?php session_start(); require ('includes/configuration.php'); $db = mysql_connect($host, $username, $passwordname); mysql_select_db($dbother,$db); $requete = mysql_query ("SELECT * FROM news ORDER BY id DESC LIMIT 0,5"); while($donnees = mysql_fetch_array($requete)) { // echo'<a href="new.php?id=' .$donnees['id']. '"action="new.php?"' .$donnees['id']. '">'; echo'</div>'; echo'<div class="news">'; echo'<div class="left">'; echo'<h2><img src="web/images/puce_red.gif" /> <span class="title">'.$donnees['titre'].'</span></h2>'; echo'<p class="sTitle">'; echo'Rédigé par <span class="poster">'.$donnees['auteur'].'</span> le '; echo''.$donnees['jours'].' '; echo''.$donnees['numero'].' '; echo''.$donnees['mois'].' '; echo''.$donnees['annee'].''; echo'</p>'; echo'<p>'.$donnees['premier'].'</p>'; echo'<p class="total_comments"> <a href="editTopic.php?id_news='.$donnees['id'].'"action="editTopic.php?='.$donnees['id'].'">Ajouter un commentaire</a> - <a href="viewTopic.php?id=' .$donnees['id']. '"action="viewTopic.php?"' .$donnees['id']. '">Voir la news en entière</a> </p>'; $id_news = $donnees['id']; $news = mysql_query("SELECT * FROM commentaires WHERE id_news='$id_news'"); $total = mysql_num_rows($news); echo 'Nombre de commentaires : '.$total.''; echo'</div>'; echo'</div>'; } ?>
A voir également:
- |PHP| Créer une page
- Supprimer une page word - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer une page facebook - Guide
- Créer une adresse hotmail - Guide
4 réponses
Salut, il faut faire ce que l'on appel "pagination", il faut faire évoluer la partie limit de ta requête sql avec des variables:
Puis aprés faut faire une fonction qui affiche les liens pour naviguer.
SELECT * FROM news ORDER BY id DESC LIMIT $position,5
Puis aprés faut faire une fonction qui affiche les liens pour naviguer.
MastercroW
Messages postés
1094
Date d'inscription
Statut
Membre
Dernière intervention
163
Ok d'accord et je mets quoi dans $position ?
dariumis
Messages postés
571
Date d'inscription
Statut
Membre
Dernière intervention
63
Attend je te fais un exemple vite fais.
MastercroW
Messages postés
1094
Date d'inscription
Statut
Membre
Dernière intervention
163
Ok merci !
Bon j'ai modifier ta source pour que tu vois, si tu veux j'ai fais le code qu'est disponibles ici:
http://dariumis.webhop.biz/forum/page/afficheSujet.php?sujet=1291328915_399
J'utilise un objet que j'ai fais je te mettrais le code en bas. J'ai modifier ta source vite fais, j'ai biensûr pas testé, a un moment je récupère le nombre d'entrée de la table news, mais comme j'utilise pdo, je me rappel plus trop du fonctionnement de mysql_query mais faut récupérer le nombre d'élément de la table news.
ton code modifié, mais pas fonctionnel:
Donc l'objet que j'ai fais ce nomme Navigation, dont voici le code:
http://dariumis.webhop.biz/forum/page/afficheSujet.php?sujet=1291328915_399
J'utilise un objet que j'ai fais je te mettrais le code en bas. J'ai modifier ta source vite fais, j'ai biensûr pas testé, a un moment je récupère le nombre d'entrée de la table news, mais comme j'utilise pdo, je me rappel plus trop du fonctionnement de mysql_query mais faut récupérer le nombre d'élément de la table news.
ton code modifié, mais pas fonctionnel:
<?php session_start(); require ('includes/configuration.php'); include 'Navigation.php'; $db = mysql_connect($host, $username, $passwordname); mysql_select_db($dbother, $db); if (isset($_GET['position'])) { $position = $_GET['position']; } else { $position = 0; } $nbElmntAffiche = 5; //Utilisant PDO je me rapel plus comment on utilse mysql_query //mais faut récupérer le nombre d'entrée de la table $compte = mysql_query("select count(*) from news"); $Nav = new Navigation('', $position, $nbElmntAffiche, $compte, 3); $requete = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT $position,$nbElmntAffiche"); echo $Nav->getNavigation(); while ($donnees = mysql_fetch_array($requete)) { // echo'<a href="new.php?id=' .$donnees['id']. '"action="new.php?"' .$donnees['id']. '">'; echo'</div>'; echo'<div class="news">'; echo'<div class="left">'; echo'<h2><img src="web/images/puce_red.gif" /> <span class="title">' . $donnees['titre'] . '</span></h2>'; echo'<p class="sTitle">'; echo'Rédigé par <span class="poster">' . $donnees['auteur'] . '</span> le '; echo'' . $donnees['jours'] . ' '; echo'' . $donnees['numero'] . ' '; echo'' . $donnees['mois'] . ' '; echo'' . $donnees['annee'] . ''; echo'</p>'; echo'<p>' . $donnees['premier'] . '</p>'; echo'<p class="total_comments"> <a href="editTopic.php?id_news=' . $donnees['id'] . '"action="editTopic.php?=' . $donnees['id'] . '">Ajouter un commentaire</a> - <a href="viewTopic.php?id=' . $donnees['id'] . '"action="viewTopic.php?"' . $donnees['id'] . '">Voir la news en entière</a> </p>'; $id_news = $donnees['id']; $news = mysql_query("SELECT * FROM commentaires WHERE id_news='$id_news'"); $total = mysql_num_rows($news); echo 'Nombre de commentaires : ' . $total . ''; echo'</div>'; echo'</div>'; } ?>
Donc l'objet que j'ai fais ce nomme Navigation, dont voici le code:
<?php /** * Cet objet sert à créer un systeme de navigation via des lien entre, par exemple, * les enregistrements d'une table que l'on aurais limité par 10 affichage par page. * Cet objet, en plus des liens pour chaque page, comporte un lien premiere page * "<<" et derniere page ">>" visible uniquement s'il y a besoin. * * @author Dariumis */ class Navigation { /** *Cette variable stock le systeme de navigation * @var <String> */ private $navigation; /** * A la construction cet objet construit le systeme de navigation en fonction * des parametres cité ci-dessous. * * @param <String> $page * La page qu'affihera tous les lien de navigation * @param <Integer> $position * La position dans la table du premier élément affiché de cette page * @param <Integer> $nbElmntAffiche * Le nombre d'éléments que l'on affiche par page * @param <Integer> $compteEntrees * Le nombre total d'éléments. * @param <Integer> $amplitude * Nombre de lien présent dans la barre de navigation. * Si vous mettez 0, chaque page est affiché. * Si vous mettez 1, si vous êtes devant la page 5 vous verrez 4 5 6. * Si vous mettez 2, si vous êtes devant la page 5 vous verrez 3 4 5 6 7. */ public function __construct($page,$position,$nbElmntAffiche,$compteEntrees,$amplitude) { //on initialise navigation a vide $this->navigation=""; //s'il y a moins d'entrée que d'éléments par page a afficher //il n'y a qu'une page et on fait rien if($compteEntrees>$nbElmntAffiche) {//sinon //on calcul le nombre de page $nbPage=ceil(($compteEntrees)/$nbElmntAffiche); //on calcul la page en cours $pageActuelle=intval(($position/$nbElmntAffiche)+1); //si vous avez mis 0 pour l"amplitude if($amplitude==0) {//on affichera toute les pages //on commenceras l'affichage des lien par la premiere page $debut=1; //et on finira par la derniere $arret=$nbPage; }else {//sinon //on calcul combien de page avant la page actuelle a afficher $debut=$pageActuelle-$amplitude; //on calcul combien de page aprés la page actuelle a afficher $arret=$pageActuelle+$amplitude; } //si il y a des résultat négatif on ajuste pour qu'il n'y ai pas de //page "-1" "-2"...... while ($debut<1) { $debut++; $arret++; } //si la premiere page n'est pas visible dans la navigation if($debut>1) { //on écrit un lien vers la premiere page $this->navigation.= "<a title=\"premiere page\" href=\"$page?position=0\"><<</a>"; } //on execute une boucle for pour afficher les liens par a port a la //page actuelle et a l'amplitude. for($i=$debut;$i<=$arret;$i++) { //on écrit pas de liens au delà du nombre de page if($i<=$nbPage) { //si le lien que l'on écrit correspond a la page en cours if($i==$pageActuelle) //on définit un id html et le class $id='class="navigue" id="pageActuelle"'; else{//sinon //on définit juste le class $id='class="navigue"'; } //puis on écrit le lien $this->navigation.= "<a $id title=\"page $i\" href=\"$page?position=".(($i-1)*$nbElmntAffiche)."\">$i</a>"; }else{ break;//sinon on sort de la boucle } } //si la derniere page n'est pas affiché if($arret<$nbPage) { //on écrit le lein vers la derniere page $this->navigation.= "<a title=\"derniere page\" href=\"$page?position=".($nbPage-1)*$nbElmntAffiche."\">>></a>"; } } } public function getNavigation() { return $this->navigation; } } ?>
Ce n'est pas du tout fonctionnel ton histoire ! Pleins d'erreur
Peux-tu me donner à nouveau le code. De plus je te mets la table NEWS :
CREATE TABLE 'news' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'titre' varchar(255) DEFAULT NULL,
'auteur' varchar(255) DEFAULT NULL,
'premier' varchar(125) DEFAULT NULL,
'texte' varchar(1500) DEFAULT NULL,
'jours' text,
'numero' text,
'mois' text,
'annee' text,
UNIQUE KEY 'id' ('id')
) ENGINE=MyISAM AUTO_INCREMENT=36 DEFAULT CHARSET=latin1
CREATE TABLE 'news' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'titre' varchar(255) DEFAULT NULL,
'auteur' varchar(255) DEFAULT NULL,
'premier' varchar(125) DEFAULT NULL,
'texte' varchar(1500) DEFAULT NULL,
'jours' text,
'numero' text,
'mois' text,
'annee' text,
UNIQUE KEY 'id' ('id')
) ENGINE=MyISAM AUTO_INCREMENT=36 DEFAULT CHARSET=latin1
Pas besoin de la structure de la table, dans ton code a un moment j'ai rajouté la requête qui compte la table news mais là c'est sur qu'il y a une érreure, car en paramètre de l'objet je passe direct $compte, alors que je ne pense pas que cela ce récupère comme ceci avec mysql_query. apres l'objet navigation je me suis planter au début, il y a peu de temps je l'ai remodifié, mais regarde sur le lien que j'ai posté, ce seras peut etre plus lisible.
Re tu avais un problème ligne 37 à navigation.
Le problème est toujours là rien ne s'affiche.
Le problème est toujours là rien ne s'affiche.
<?php session_start(); require ('includes/configuration.php'); include 'Navigation.php'; $db = mysql_connect($host, $username, $passwordname); mysql_select_db($dbother,$db); if (isset($_GET['position'])) { $position = $_GET['position']; } else { $position = 0; } $nbElmntAffiche = 5; $comte = mysql_query ("SELECT count(*) from news"); $Nav = new Navigation('pageEnCours.php', $position, $nbElmntAffiche, $compte, 3); $requete = mysql_query ("SELECT * FROM news ORDER BY id DESC LIMIT $position,$nbElmntAffiche"); while($donnees = mysql_fetch_array($requete)) { // echo'<a href="new.php?id=' .$donnees['id']. '"action="new.php?"' .$donnees['id']. '">'; echo'</div>'; echo'<div class="news">'; echo'<div class="left">'; echo'<h2><img src="web/images/puce_red.gif" /> <span class="title">'.$donnees['titre'].'</span></h2>'; echo'<p class="sTitle">'; echo'Rédigé par <span class="poster">'.$donnees['auteur'].'</span> le '; echo''.$donnees['jours'].' '; echo''.$donnees['numero'].' '; echo''.$donnees['mois'].' '; echo''.$donnees['annee'].''; echo'</p>'; echo'<p>'.$donnees['premier'].'</p>'; echo'<p class="total_comments"> <a href="editTopic.php?id_news='.$donnees['id'].'"action="editTopic.php?='.$donnees['id'].'">Ajouter un commentaire</a> - <a href="viewTopic.php?id=' .$donnees['id']. '"action="viewTopic.php?"' .$donnees['id']. '">Voir la news en entière</a> </p>'; $id_news = $donnees['id']; $news = mysql_query("SELECT * FROM commentaires WHERE id_news='$id_news'"); $total = mysql_num_rows($news); echo 'Nombre de commentaires : '.$total.''; echo'</div>'; echo'</div>'; } echo $Nav->getNavigation(); ?>
<?php /** * Cet objet sert à créer un systeme de navigation via des lien entre, par exemple, * les enregistrements d'une table que l'on aurais limité par 10 affichage par page. * Cet objet, en plus des liens pour chaque page, comporte un lien premiere page * "<<" et derniere page ">>" visible uniquement s'il y a besoin. * * @author Dariumis */ class Navigation { /** * Cette variable stock le systeme de navigation * @var <String> */ private $navigation; /** * A la construction cet objet construit le systeme de navigation en fonction * des parametres cité ci-dessous. * * @param <String> $page * La page qu'affihera tous les lien de navigation * @param <Integer> $position * La position dans la table du premier élément affiché de cette page * @param <Integer> $nbElmntAffiche * Le nombre d'éléments que l'on affiche par page * @param <Integer> $compteEntrees * Le nombre total d'éléments. * @param <Integer> $amplitude * Nombre de lien présent dans la barre de navigation. * Si vous mettez 0, chaque page est affiché. * Si vous mettez 1, si vous êtes devant la page 5 vous verrez 4 5 6. * Si vous mettez 2, si vous êtes devant la page 5 vous verrez 3 4 5 6 7. */ public function _construct($page, $position, $nbElmntAffiche, $compteEntrees, $amplitude,$var) { //on initialise navigation a vide $this->navigation = ""; //s'il y a moins d'entrée que d'éléments par page a afficher //il n'y a qu'une page et on fait rien if ($compteEntrees > $nbElmntAffiche) {//sinon //on calcul le nombre de page $nbPage = ceil(($compteEntrees) / $nbElmntAffiche); //on calcul la page en cours $pageActuelle = intval(($position / $nbElmntAffiche) + 1); //si vous avez mis 0 pour l"amplitude if ($amplitude == 0) {//on affichera toute les pages //on commenceras l'affichage des lien par la premiere page $debut = 1; //et on finira par la derniere $arret = $nbPage; } else {//sinon //on calcul combien de page avant la page actuelle a afficher $debut = $pageActuelle - $amplitude; //on calcul combien de page aprés la page actuelle a afficher $arret = $pageActuelle + $amplitude; } //si il y a des résultat négatif on ajuste pour qu'il n'y ai pas de //page "-1" "-2"...... while ($debut < 1) { $debut++; $arret++; } //si la premiere page n'est pas visible dans la navigation if ($debut > 1) { //on écrit un lien vers la premiere page $this->navigation.= "<a title=\"premiere page\" href=\"" . $page . $var."=0\"><<</a>"; } //on execute un boucle for pour afficher les liens par a port a la //page actuelle et a l'amplitude. for ($i = $debut; $i <= $arret; $i++) { //on écrit pas de liens au delà du nombre de page if ($i <= $nbPage) { //si le lien que l'on écrit correspond a la page en cours if ($i == $pageActuelle){ //on définit un id html et le class $id = 'class="navigue" id="pageActuelle"'; //puis on écrit la page en cours $this->navigation.= "<span $id title=\"page en cours\">$i</span>"; }else {//sinon //on définit juste le class $id = 'class="navigue"'; //puis on écrit le lien $this->navigation.= "<a $id title=\"page $i\" href=\"" . $page . $var."=" . (($i - 1) * $nbElmntAffiche) . "\">$i</a>"; } } else { break; //sinon on sort de la boucle } } //si la derniere page n'est pas affiché if ($arret < $nbPage) { //on écrit le lein vers la derniere page $this->navigation.= "<a title=\"derniere page\" href=\"" . $page . $var."=" . ($nbPage - 1) * $nbElmntAffiche . "\">>></a>"; } } } public function getNavigation() { return $this->navigation; } } ?>
Oui c'est que tu as garder la mauvaise version de l'objet avant que je la modifie, j'suis vraiment désolé, j'ai voulut a allé trop vite, cette version c'est une autre version que je me sert selon les spécificité de mon site, mais si tu la recopie la haut ou sur mon site, tu n'auras plus ces erreurs je pense. Aprés la barre de navigation s'affiche seulement si il y a nécéssité a naviguer, donc si il y a plus d'éléments dans ta table que d'élément affiché par page.
Je reposte navigation valide (désolé):
Je reposte navigation valide (désolé):
<?php /** * Cet objet sert à créer un systeme de navigation via des lien entre, par exemple, * les enregistrements d'une table que l'on aurais limité par 10 affichage par page. * Cet objet, en plus des liens pour chaque page, comporte un lien premiere page * "<<" et derniere page ">>" visible uniquement s'il y a besoin. * * @author Dariumis */ class Navigation { /** *Cette variable stock le systeme de navigation * @var <String> */ private $navigation; /** * A la construction cet objet construit le systeme de navigation en fonction * des parametres cité ci-dessous. * * @param <String> $page * La page qu'affihera tous les lien de navigation * @param <Integer> $position * La position dans la table du premier élément affiché de cette page * @param <Integer> $nbElmntAffiche * Le nombre d'éléments que l'on affiche par page * @param <Integer> $compteEntrees * Le nombre total d'éléments. * @param <Integer> $amplitude * Nombre de lien présent dans la barre de navigation. * Si vous mettez 0, chaque page est affiché. * Si vous mettez 1, si vous êtes devant la page 5 vous verrez 4 5 6. * Si vous mettez 2, si vous êtes devant la page 5 vous verrez 3 4 5 6 7. */ public function __construct($page,$position,$nbElmntAffiche,$compteEntrees,$amplitude) { //on initialise navigation a vide $this->navigation=""; //s'il y a moins d'entrée que d'éléments par page a afficher //il n'y a qu'une page et on fait rien if($compteEntrees>$nbElmntAffiche) {//sinon //on calcul le nombre de page $nbPage=ceil(($compteEntrees)/$nbElmntAffiche); //on calcul la page en cours $pageActuelle=intval(($position/$nbElmntAffiche)+1); //si vous avez mis 0 pour l"amplitude if($amplitude==0) {//on affichera toute les pages //on commenceras l'affichage des lien par la premiere page $debut=1; //et on finira par la derniere $arret=$nbPage; }else {//sinon //on calcul combien de page avant la page actuelle a afficher $debut=$pageActuelle-$amplitude; //on calcul combien de page aprés la page actuelle a afficher $arret=$pageActuelle+$amplitude; } //si il y a des résultat négatif on ajuste pour qu'il n'y ai pas de //page "-1" "-2"...... while ($debut<1) { $debut++; $arret++; } //si la premiere page n'est pas visible dans la navigation if($debut>1) { //on écrit un lien vers la premiere page $this->navigation.= "<a title=\"premiere page\" href=\"$page?position=0\"><<</a>"; } //on execute une boucle for pour afficher les liens par a port a la //page actuelle et a l'amplitude. for($i=$debut;$i<=$arret;$i++) { //on écrit pas de liens au delà du nombre de page if($i<=$nbPage) { //si le lien que l'on écrit correspond a la page en cours if($i==$pageActuelle) //on définit un id html et le class $id='class="navigue" id="pageActuelle"'; else{//sinon //on définit juste le class $id='class="navigue"'; } //puis on écrit le lien $this->navigation.= "<a $id title=\"page $i\" href=\"$page?position=".(($i-1)*$nbElmntAffiche)."\">$i</a>"; }else{ break;//sinon on sort de la boucle } } //si la derniere page n'est pas affiché if($arret<$nbPage) { //on écrit le lein vers la derniere page $this->navigation.= "<a title=\"derniere page\" href=\"$page?position=".($nbPage-1)*$nbElmntAffiche."\">>></a>"; } } } public function getNavigation() { return $this->navigation; } } ?>