Vous n'êtes pas identifié.
Pages: 1
Bonsoir coolman,
c'est vraiment
de prendre le temps de t'occuper des newbies kom nous..... je suis une abonnée de ton site j'ai suivi pas à pas tous tes tutos pr la creation d un site dynamique avant, j etais réfractaire au php...ça commence à aller.
sauf que depuis klk jours je stagne sur la page categorie.php de ton fameux tuto.
ça fait des semaines que je travaille sur un pb de pagination pour la page categorie.php. j'aimerais pouvoir en afficher par exemple 5 articles de la même catégorie / page vu que le nombre d'enregistrements(ajouterpage.php) commence à faire beaucoup
et au final g une page kilométrique..............![]()
//seul la première page s'affiche!!!.............
//début du script
<?php
(!isset($_GET["id"]) OR !is_numeric($_GET['id'])){le lien pour la page 2 ne fonctionne pas. voici le script:
<?php
$id=$_GET['id'];
// on se connecte à la BDD
-------
//On va chercher tout ce qui rentre dans cette catégorie
$sql = "SELECT id,id_categorie,titre,texte FROM CONTENU WHERE id_categorie='$id'
ORDER BY id ASC";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb_annonce = mysql_num_rows($req);
if ($nb_annonce == 0) {
echo '<div class="cadre">Aucun article pour le moment dans cette catégorie</div>';
}
// la suite
$parpage = 5;
$url = $_SERVER['PHP_SELF']."?limit=";
$total = mysql_query($sql); // Résultat total de la requête $sql
$nblignes = mysql_num_rows($total);
$nbpages=ceil($nblignes/$parpages;
//fonctions pagination qui je rappelle fonctionne bien sur d autres de mes pages
function pagination($url,$parpage,$nblignes,$nbpages)
{
// On crée le code html pour la pagination
$html = precedent($url,$parpage,$nblignes); // On crée le lien precedent
// On vérifie que l'on a plus d'une page à afficher
if ($nbpages > 1) {
// On boucle sur les numéros de pages à afficher
for ($i = 0 ; $i < $nbpages ; ++$i) {
$limit = $i * $parpage; // On calcule le début de la valeur 'limit'
$limit = $limit.",".$parpage; // On fait une concaténation avec $parpage
// On affiche les liens des numéros de pages
$html .= "<a href=".$url.$limit.">".($i + 1)."</a> | " ;
}
}
// Si l'on a qu'une page on affiche rien
else {
$html .= "";
}
$html .= suivant($url,$parpage,$nblignes); // On crée le lien suivant
// On retourne le code html
return $html;
}
function validlimit($nblignes,$parpage,$sql)
{
// On vérifie l'existence de la variable $_GET['limit']
// $limit correspond à la clause LIMIT que l'on ajoute à la requête $sql
if (isset($_GET['limit'])) {
$pointer = split('[,]', $_GET['limit']); // On scinde $_GET['limit'] en 2
$debut = $pointer[0];
$fin = $pointer[1];
// On vérifie la conformité de la variable $_GET['limit']
if (($debut >= 0) && ($debut < $nblignes) && ($fin == $parpage)) {
// Si $_GET['limit'] est valide on lance la requête pour afficher la page
$limit = $_GET['limit']; // On récupère la valeur 'limit' passée par url
$sql .= " LIMIT ".$limit.";"; // On ajoute $limit à la requête $sql
$result = mysql_query($sql); // Nouveau résultat de la requête
}
// Sinon on affiche la première page
else {
$sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
$result = mysql_query($sql); // Nouveau résultat de la requête
}
}
// Si la valeur 'limit' n'est pas connue, on affiche la première page
else {
$sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
$result = mysql_query($sql); // Nouveau résultat de la requête
}
// On retourne le résultat de la requête
return $result;
}
function precedent($url,$parpage,$nblignes)
{
// On vérifie qu'il y a au moins 2 pages à afficher
if ($nblignes > $parpage) {
// On vérifie l'existence de la variable $_GET['limit']
if (isset($_GET['limit'])) {
// On scinde la variable 'limit' en utilisant la virgule comme séparateur
$pointer = split('[,]', $_GET['limit']);
// On récupère le nombre avant la virgule et on soustrait la valeur $parpage
$pointer = $pointer[0]-$parpage;
// Si on atteint la première page, pas besoin de lien 'Précédent'
if ($pointer < 0) {
$precedent = "";
}
// Sinon on affiche le lien avec l'url de la page précédente
else {
$limit = "$pointer,$parpage";
$precedent = "<a href=".$url.$limit."><</a> | ";
}
}
else {
$precedent = ""; // On est à la première page, pas besoin de lien 'Précédent'
}
}
else {
$precedent = ""; // On a qu'une page, pas besoin de lien 'Précédent'
}
return $precedent;
}
function suivant($url,$parpage,$nblignes)
{
// On vérifie qu'il y a au moins 2 pages à afficher
if ($nblignes > $parpage) {
// On vérifie l'existence de la variable $_GET['limit']
if (isset($_GET['limit'])) {
// On scinde la variable 'limit' en utilisant la virgule comme séparateur
$pointer = split('[,]', $_GET['limit']);
// On récupère le nombre avant la virgule auquel on ajoute la valeur $parpage
$pointer = $pointer[0] + $parpage;
// Si on atteint la dernière page, pas besoin de lien 'Suivant'
if ($pointer >= $nblignes) {
$suivant = "";
}
// Sinon on affiche le lien avec l'url de la page suivante
else {
$limit = "$pointer,$parpage";
$suivant = "<a class='pagination' href=".$url.$limit.">></a>";
}
}
// Si pas de valeur 'limit' on affiche le lien de la deuxième page
if (@$_GET['limit']== false) {
$suivant = "<a href=".$url.$parpage.",".$parpage.">></a>";
}
}
else {
$suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
}
return $suivant;
}
//fin ...........c'est un peu long mais je sais vraiment pas pourquoi id n'existe si on veut aller page 2.
"ça m'affiche aucun article pour le moment ds cette categorei!"
sinon t'aurais pas un tuto kon peut suivre pr faire une pagination sur la page catégorie.php ? j'ai vu que tu as séparé les deux parties en créant pagination.php
mais comment l'associer au script de categorie.php???
please help je désespère.....



Hors ligne

en d'autres termes si on enregistré 20 articles pour chaque categorie .
.
comment on les affiche dans une pagination de 5 articles/ page par exemple?
attends vos réponses ..........ça fait des jours ke je planche dessus.... peut-être ma kestion n est pas logik par rapport au script categorie.php
bref.
need some help!
Hors ligne
Salut et bienvenue sur ce forum twothousand ,
Bon, pour faire simple j'ai repris le tuto permettant de créer les catégories http://creer-un-site.fr/creation-de-la- … ie-166.php et le tuto permettant d'effectuer une pagination http://creer-un-site.fr/pagination-page … ge-172.php . J'ai mixé les 2 et ça donne comme résultat :
<?php
//On récupère l'id transmit par l'url
$id_transmit=$_GET['id'];
if (!isset($_GET["id"]) OR !is_numeric($_GET['id'])){
//Si la variable n'existe pas ou qu'elle n'est pas de type numérique, on redirige
header('location:http://'.$_SERVER['HTTP_HOST'].'');
}
else{
// on se connecte à la base de données
include('connexion_bd.php');
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une
base de donnée. Assurez vous d\'avoir correctement remplit les données du
fichier connexion_bd.php.');
//On va chercher le nom et la description de la catégorie
$nom_categorie = mysql_query("SELECT nom_categorie,description_categorie FROM
CATEGORIES WHERE id='".mysql_real_escape_string($id_transmit)."'");
while($cat = mysql_fetch_array($nom_categorie))
{
$titre_categorie=$cat['nom_categorie'];
$description_categorie=$cat['description_categorie'];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/
DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title><?php echo $titre_categorie;?></title>
<meta name="Description" content="<?php echo $description_categorie;?>" />
<link href="style.css" rel="stylesheet" type="text/css"/>
<style>
.cadre{
height: auto;
background:#ECFAFF;
border: 1px solid #D5F4FF;
margin:5px;
padding:5px;
}
.pagination{
border: 1px solid #000 ;
font-weight : bold;
background : #ECFAFF;
margin : 2px;
padding : 3px;
}
.pagination:hover{
background : #000;
}
.pagination-inactif{
border: 1px solid #000 ;
font-weight : bold;
background : #000;
color : white;
margin : 2px;
padding : 3px;
}
</style>
</head>
<body>
<div id="moncadre">
<?php include('menu.php');?>
<div class="cadrecentrale">
<h1>Catégorie "<?php echo $titre_categorie;?>"</h1>
<?php
//Nombre d'élément à afficher par page
$messages_par_page=1;
//Type de navigation
//0=Suivant-Précédent
//1=Toutes les pages
$navigation=0;
//On récupère le contenu de la requête dans $entree_total
$entree_total = mysql_query("SELECT COUNT(*) AS total FROM CONTENU WHERE id_categorie='".mysql_real_escape_string($id_transmit)."'");
//On range $entree_total sous la forme d'un tableau.
$donnees_total=mysql_fetch_assoc($entree_total);
//On récupère le total pour le placer dans la variable $total. $total correspond au nombre total de commentaires
$total=$donnees_total['total'];
echo $total."<br/>";
//Nous allons maintenant compter le nombre de pages. On fait donc une simple division .
//ceil —>Arrondit le chiffre au nombre supérieur si il n'est pas entier
$nombre_de_pages=ceil($total/$messages_par_page);
// Si la variable $_GET['page'] existe...
if(isset($_GET['page']))
{
//$page_actuelle correspond au numéro de la page ou l'on se trouve pendant la navigation.
//intval — Retourne la valeur numérique entière équivalente d'une variable
$page_actuelle=intval($_GET['page']);
//Si la valeur de $page_actuelle est plus grande que $nombre_de_pages...
if($page_actuelle>$nombre_de_pages)
{
$page_actuelle=$nombre_de_pages;
}
}
// Sinon
else
{
$page_actuelle=1; // La page actuelle est la n°1
}
// On calcul la première entrée à lire
$premiere_entree=($page_actuelle-1)*$messages_par_page;
//Si il n'y a rien
if($total == 0){
echo '<div class="cadre">Aucun article pour le moment dans la catégorie '.$titre_categorie.'.</div>';
}
else
{
//On va chercher tout ce qui rentre dans cette catégorie
$page = mysql_query("SELECT id,titre,description FROM CONTENU WHERE id_categorie='".mysql_real_escape_string($id_transmit)."' ORDER BY id DESC LIMIT $premiere_entree,$messages_par_page ");
//On affiche les pages qui correspondent à la catégorie et en l'occurrence le titre et la description
while($affiche = mysql_fetch_array($page))
{
echo '<div class="cadre">
<h2><a title="'.$affiche['titre'].'" href="page.php?id='.$id=$affiche['id'].'
">'.$affiche['titre'].'</a></h2>
<p>'.$affiche['description'].'</p>
</div>';
}
//Pour l'affichage, on centre la liste des pages
echo '<div style="text-align:center;">';
if($navigation==0){
//Cette partie affiche uniquement Suivant et Précédent
$suivant=$page_actuelle+1;
$precedent=$page_actuelle-1;
//Si la variable est plus grand ou égal
if($precedent>=1){
echo '<a class="pagination" title="Page précédente"
href="categorie.php?id='.$id_transmit.'&page='.$precedent.'">Page précédent</a>';
}
else
{
echo '<span class="pagination-inactif">Page précédent</span>';
}
//Si la variable est plus petit ou égal
if($suivant<=$nombre_de_pages){
echo '<a class="pagination" title="Page suivante"
href="categorie.php?id='.$id_transmit.'&page='.$suivant.'">Page suivante</a>';
}
else
{
echo '<span class="pagination-inactif">Page suivante</span>';
}
}
else if($navigation==1)
{
//Cette partie affiche une pagination complète de toutes les pages
echo 'Page : ';
for($i=1; $i<=$nombre_de_pages; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$page_actuelle) //Si il s'agit de la page actuelle...
{
echo '<span class="pagination-inactif">'.$i.'</span>';
}
else
{
echo ' <a class="pagination" title="Page '.$i.'"
href="categorie.php?id='.$id_transmit.'&page='.$i.'">'.$i.'</a> ';
}
}
}
echo '</div>';
}
}
// Fermeture de la connexion à la base de données
mysql_close();
?>
</div>
<?php include('footer.php');?>
</div>
</body>
</html>..et ça fonctionne très bien telle quelle
.
Tu as juste 2 variables à compléter :
//Nombre d'élément à afficher par page $messages_par_page=1; //Type de navigation //0=Suivant-Précédent //1=Toutes les pages $navigation=0;
..et éventuellement le style css de la pagination pour le mettre à ton gout ;).
Hors ligne
ok je vais m y mettre ....
et merci de répondre aussi vite.
Hors ligne
ça marche nickel chrome ...
merci! c'est exactement ce ke je voulais faire.

.
Dernière modification par twothousand (08-07-2010 16:03:37)
Hors ligne
Bhaa je sais puisque j'ai testé avant
.
Allé un petit complément que je te laisse placé toi même :
//Si le nombre d'entrée est plus grand que le nombre de message par page on affiche la pagination
if($total>$messages_par_page){
***
}Hors ligne
ok
je vois ce que je dois faire.
Hors ligne
Bonsoir coolman,
j'aimerais pouvoir faire un simple lien retour vers la page categorie.php en étant sur page.php
voilà ce que j'ai mis
<p> <?php echo '<a href="categorie.php?id=$id_categorie">'; ?> Retour </a></p>
mais ce lien me ramène à la page accueil.![]()
moi comprends pas????
ps: j'ai bien initialisé auparavant la variable $id_categorie=$affiche['id_categorie'];
mais ça marche pas.
Merci de ton aide
Hors ligne
par exemple si j'affiche les articles d une certaine catégorie à partir d'une variable $id et je clique au hasard sur l un des articles qui conduit à page.php
mais si je veux intégrer un lien retour vers la page de départ (categories.php qui liste les différents articles) comment je m y prends?
merci de m éclairer.
Hors ligne
Salut,
Je viens de rentrer de vacance et je vois bien ce que tu veux faire. Pour faire simple, il faut que tu récupère la catégorie à la quelle appartient la page en cours de consultation via le champ "id_categorie" de la table "CONTENU" http://creer-un-site.fr/creation-de-la- … es-154.php .
Hors ligne
ok merci.
je vais regarder ça
Hors ligne
En gros, dans le tutoriel de la page Création de la page affichant les articles tu récupère "id_categorie" dans la boucle while :
while($affiche = mysql_fetch_array($page))
{
$titre=$affiche['titre'];
$description=$affiche['description'];
$contenu=$affiche['texte'];
$categorie=$affiche['id_categorie'];
}Ensuite, tu fais fais une seconde boucle, là ou tu veux afficher ton lien ou à la suite de la première permettant d'allé chercher le titre de la catégorie dans la table CATEGORIES :
$cat = mysql_query("SELECT nom_categorie FROM CATEGORIES WHERE id='".mysql_real_escape_string
($affiche['id_categorie'])."'");
while($affiche_categorie = mysql_fetch_array($cat))
{
$titre_categorie=$affiche_categorie['nom_categorie'];
}Puis tu fais ton lien :
<a title="'.$affiche_categorie['nom_categorie'].'" href="categorie.php ?id='.$affiche['id_categorie'].'">'.$affiche_categorie['nom_categorie'].'</a>
Hors ligne
Pages: 1
Propulsé par PunBB
© Copyright 2007
Forum créer un site