Bonjour à toutes et à tous
Je tente de faire une pagination. Donc les articles sont sur 3 pages. Quand je survole les liens, j'ai bien
127.0.0.1/liste.php?p=1
127.0.0.1/liste.php?p=2
127.0.0.1/liste.php?p=3 ça c'est bon et quand je clique dessus je change bien d'url ça c'est bon aussi je pense mais le truc c'est que j'ai toujours les mêmes articles d'un page à l'autre !! et la je comprends pas pourquoi j'ai tout reverifier et c'est pareil
J'ai essayé en affichant juste 2 articles avec la variable $perPage et sa ne change pas il y a pourtant une quinzaine d'articles.
J'y comprends rien merci pour votre aide
Voici le code :
<?php
$connect= mysql_connect('localhost','root','') or die('OUPS ! le serveur ne répond pas ?!');
mysql_select_db("tblmbmfb") or die('OUPS ! la base de donnée ne répond pas ?!');
$sql1 = "SELECT COUNT(ID) as nbArt FROM gtable";/*prends toutes les annonces de la base*/
$req1 = mysql_query ($sql1) or die (mysql_error());
$data1 = mysql_fetch_assoc ($req1);
$nbArt = $data1'nbArt'];
$perPage = 2;/*nombre d'éléments par page*/
$nbPage = ceil ($nbArt/$perPage);
$cPage = 1 ;/*defini la première page a afficher*/
if(isset($_GET'p']) && $_GET'p']>0 && $_GET'p']<=$nbPage){
$cPage = $_GET'p'];
}
else{
$cPage = 1;
}
$sql = "SELECT titre,categorie FROM gtable LIMIT ".(($cPage-1)*$perPage).",$perPage"; /* dans cette requête il faudra faire un tri par date puis par prix*/
$req = mysql_query ($sql) or die (mysql_error());
while ($data = mysql_fetch_assoc ($req)){
if (isset($data'titre'])) {echo "{$data'titre']}";}
if (!isset($data'titre'])) {$data'titre'] = "";}
echo "<br/>";
if (isset($data'categorie'])) {echo "{$data'categorie']}";}
if (!isset($data'categorie'])) {$data'categorie'] = "";}
echo "<br/>";
echo "<hr>";
}
for($i=1;$i<=$nbPage;$i++){
if ($i==$cPage){
echo "$i /";
}
else{
echo "<a href=\"liste.php?p=$i\"> $i </a> /";
}
}
?>
Bon j'ai identifié le problème : cette pagination est dans une page qui elle même dans une autre page avec la fonction include et c'est ça qui posait problème. Je n'ai pas réussit à le faire fonctionner avec l'include donc j'ai déplacé le code et là sa a marché.
Merci Glaived pour ton aide
Aucun problème trouver, test ceci et fait un retour
<?php
$connect = mysql_connect('localhost', 'root', null) or die('OUPS ! le serveur ne répond pas ?!');
mysql_select_db('test') or die('OUPS ! la base de donnée ne répond pas ?!');
$sql1 = 'SELECT COUNT(ID) as nbArt FROM gtable'; // prends toutes les annonces de la base
$req1 = mysql_query($sql1) or die(mysql_error());
$data1 = mysql_fetch_assoc($req1);
$nbArt = $data1'nbArt'];
$perPage = 2; // nombre d'éléments par page
$nbPage = ceil ($nbArt / $perPage);
$cPage = 1 ; // defini la première page a afficher
if(isset($_GET'p']) && $_GET'p'] > 0 && $_GET'p'] <= $nbPage)
$cPage = $_GET'p'];
else
$cPage = 1;
$sql = "SELECT titre, categorie FROM gtable LIMIT ".(($cPage - 1) * $perPage).", $perPage"; // dans cette requête il faudra faire un tri par date puis par prix
$req = mysql_query($sql) or die (mysql_error());
while($data = mysql_fetch_assoc($req)){
if(isset($data'titre'])) echo "{$data'titre']}";
echo '<br />';
if(isset($data'categorie'])) echo "{$data'categorie']}";
echo "<br /><hr />";
}
for($i=1; $i <= $nbPage; $i++){
if($i == $cPage) echo "$i /";
else echo "<a href=\"liste.php?p=$i\"> $i </a> /";
}
var_dump( // REMOVEME: le temps du debug
$data1,
$nbPage,
(isset($_GET'p']) && $_GET'p'] > 0 && $_GET'p'] <= $nbPage),
"requete sql line 18: SELECT titre, categorie FROM gtable LIMIT ".(($cPage - 1) * $perPage).", $perPage"
);
le contenue de test coté DB (pour la DB test)
-- phpMyAdmin SQL Dump
-- version 4.0.4
-- http://www.phpmyadmin.net
--
-- Client: localhost
-- Généré le: Lun 19 Mai 2014 à 21:27
-- Version du serveur: 5.6.12-log
-- Version de PHP: 5.5.9
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Base de données: `test`
--
-- --------------------------------------------------------
--
-- Structure de la table `gtable`
--
CREATE TABLE IF NOT EXISTS `gtable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`titre` varchar(255) NOT NULL,
`categorie` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=35 ;
--
-- Contenu de la table `gtable`
--
INSERT INTO `gtable` (`id`, `titre`, `categorie`) VALUES
(1, 'titre 1', 'categorie 1'),
(2, 'titre 2', 'categorie 2'),
(3, 'titre 3', 'categorie 3'),
(4, 'titre 4', 'categorie 4'),
(5, 'titre 5', 'categorie 5'),
(6, 'titre 6', 'categorie 6'),
(7, 'titre 7', 'categorie 7'),
(8, 'titre 8', 'categorie 8'),
(9, 'titre 9', 'categorie 9'),
(10, 'titre 10', 'categorie 10'),
(11, 'titre 11', 'categorie 11'),
(12, 'titre 12', 'categorie 12'),
(13, 'titre 13', 'categorie 13'),
(14, 'titre 14', 'categorie 14'),
(15, 'titre 15', 'categorie 15'),
(16, 'titre 16', 'categorie 16'),
(17, 'titre 17', 'categorie 17'),
(18, 'titre 18', 'categorie 18'),
(19, 'titre 19', 'categorie 19'),
(20, 'titre 20', 'categorie 20'),
(21, 'titre 21', 'categorie 21'),
(22, 'titre 22', 'categorie 22'),
(23, 'titre 23', 'categorie 23'),
(24, 'titre 24', 'categorie 24'),
(25, 'titre 25', 'categorie 25'),
(26, 'titre 26', 'categorie 26'),
(27, 'titre 27', 'categorie 27'),
(28, 'titre 28', 'categorie 28'),
(29, 'titre 29', 'categorie 29'),
(30, 'titre 30', 'categorie 30'),
(31, 'titre 31', 'categorie 31'),
(32, 'titre 32', 'categorie 32'),
(33, 'titre 33', 'categorie 33'),
(34, 'titre 34', 'categorie 34');
Merci beaucoup pour ta réponse Glaived
Ben tu vois ton code fonctionne niquel, je ne parviens pas a savoir pourquoi, je suis en train de chercher... Je te tiens au courant...