Problème affichage pagination => PHP

Résolu/Fermé
@lobotomix:~# rm -rf *\ Messages postés 1392 Date d'inscription dimanche 1 juillet 2012 Statut Membre Dernière intervention 14 décembre 2012 - 13 juil. 2012 à 12:38
@lobotomix:~# rm -rf *\ Messages postés 1392 Date d'inscription dimanche 1 juillet 2012 Statut Membre Dernière intervention 14 décembre 2012 - 13 juil. 2012 à 13:34
Bonjour,

Je suis en train de réaliser une pagination pour les commentaires de mon forum et il ny a que des commentaire sur la première page qui s'affiche, les autre pages sont blanches

ca fait des heures que je suis dessus et j'y arrive pas pouvez vous m'aider svp

merci d'avance et bonne journee, voici mon code :
try {

					$bdd = new PDO('mysql:host=localhost;dbname=crea_site', 'root', '');

				} catch(Exception $e) {

					die('Ca deconne grave : ' . $e -> getMessage());

				}

				$id = (isset($_GET['id'])) ? $_GET['id'] : '';
				if ($id != "") { $_SESSION['id_billet'] = $id;
				}
				if (!isset($_SESSION['id_billet'])) {$_SESSION['id_billet'] = 1;
					$id = $_SESSION['id_billet'];
				}

				$billet = $bdd -> prepare('SELECT id, pseudo_proprietaire,titre,contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM billet WHERE id=?');
				$billet -> execute(array($_SESSION['id_billet']));
				$bill = $billet -> fetch();
				echo '
<div class=\'color_billet\'><hr />
<p class=\'intro\'><div class=\'contenu_billet\'><strong>' . $bill['pseudo_proprietaire'] . '</strong> a écrit le ' . $bill['date_creation_fr'] . '<br /><span class=\'billet\'>' . $bill['titre'] . '</span></div><br /><br />' . $bill['contenu'] . '</p><br /><br /></div><hr /><br />';

				$selection = $bdd -> prepare('SELECT COUNT(id) AS nbcomm FROM commentaire WHERE id_billet=?');
				$selection -> execute(array($id));
				$select = $selection -> fetch();

				$nbcomm = $select['nbcomm'];

				$perpage = 2;
				$nbpage = ceil($nbcomm / $perpage);

				if (isset($_GET['p']) AND $_GET['p'] > 0 AND $_GET['p'] <= $nbpage) {
					$cpage = $_GET['p'];
				} else {
					$cpage = 1;
				}
				$aa = (($cpage - 1) * $perpage);

				$GET['idi'] = $id;
				$commentaire = $bdd -> prepare('SELECT id,id_billet, pseudo, contenu, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') AS date_commentaire_fr FROM commentaire WHERE id_billet=? ORDER BY date_commentaire_fr DESC LIMIT ' . "$aa" . ',' . "$perpage");
				$commentaire -> execute(array($GET['idi']));

				while ($comm = $commentaire -> fetch()) {
					echo '<hr /><div class=\'color_comm\'><p><span class=\'span1\'><strong>' . $comm['pseudo'] . '</strong> a répondu le ' . $comm['date_commentaire_fr'] . '<br /><br /></span>' . $comm['contenu'] . '</span></p><br /></div><hr /><br />';
				}

				for ($i = 1; $i <= $nbpage; $i++) {
					if ($i == $cpage) {
						echo $i . '/';
					} else {

						echo '<a href=\'commentaire.php?p=' . $i . ';idi=' . $id . '\'>' . $i . '</a> /';
					}
				}
				$commentaire -> closeCursor();
				$billet -> closeCursor();
				$selection -> closeCursor();


désolé c'est pas très lisible


A voir également:

2 réponses

Ca ne doit pas être lié au problème, mais qu'est-ce que $GET ? Ne serait-ce pas $_GET ?
De même
echo '<a href=\'commentaire.php?p=' . $i . ';idi=' . $id . '\'>' . $i . '</a> /';
devrait sûrement être
echo '<a href=\'commentaire.php?p=' . $i . '&idi=' . $id . '\'>' . $i . '</a> /';

Si c'est toujours les premiers commentaires qui s'affichent, c'est que $aa ne doit pas avoir la valeur attendue.
Un peu de debug pourrait aider : juste après
> $aa = (($cpage - 1) * $perpage);
mettre
vvvvvvvvvvvvvvvvvvvvvvv
var_dump(array(
$aa,
$cpage,
$nbpage,
isset($_GET['p']) ,
$_GET['p'] > 0,
$_GET['p'] <= $nbpage
));
^^^^^^^^^^^^^^^^
0
@lobotomix:~# rm -rf *\ Messages postés 1392 Date d'inscription dimanche 1 juillet 2012 Statut Membre Dernière intervention 14 décembre 2012 208
13 juil. 2012 à 13:20
Merci j'ai fait les modification et cest vrai que j'aurais pu voir certain detail

j'ai modifier mon code entre temps j'ai enlever les ternaire que je maitrise pas vraiment et je l'ai simplifier

voila ce que j'obtient :
array(6) { [0]=> int(2) [1]=> string(1) "2" [2]=> float(2) [3]=> bool(true) [4]=> bool(true) [5]=> bool(true) }

pour ce code :

try {

					$bdd = new PDO('mysql:host=localhost;dbname=crea_site', 'root', '');

				} catch(Exception $e) {

					die('Ca deconne grave : ' . $e -> getMessage());

				}
				if(isset($_GET['id'])){
				$_SESSION['id_billet'] = $_GET['id'];}
				
				
				

				$billet = $bdd -> prepare('SELECT id, pseudo_proprietaire,titre,contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM billet WHERE id=?');
				$billet -> execute(array($_SESSION['id_billet']));
				$bill = $billet -> fetch();
				echo '
<div class=\'color_billet\'><hr />
<p class=\'intro\'><div class=\'contenu_billet\'><strong>' . $bill['pseudo_proprietaire'] . '</strong> a écrit le ' . $bill['date_creation_fr'] . '<br /><span class=\'billet\'>' . $bill['titre'] . '</span></div><br /><br />' . $bill['contenu'] . '</p><br /><br /></div><hr /><br />';

				$selection = $bdd -> prepare('SELECT COUNT(id) AS nbcomm FROM commentaire WHERE id_billet=?');
				$selection -> execute(array($_SESSION['id_billet']));
				$select = $selection -> fetch();

				$nbcomm = $select['nbcomm'];

				$perpage = 2;
				$nbpage = ceil($nbcomm / $perpage);

				if (isset($_GET['p']) AND $_GET['p'] > 0 AND $_GET['p'] <= $nbpage) {
					$cpage = $_GET['p'];
				} else {
					$cpage = 1;
				}
				$aa = (($cpage -1) * $perpage);
				

				$_GET['idi'] = $_SESSION['id_billet'];
				$commentaire = $bdd -> prepare('SELECT id_billet, pseudo, contenu, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') AS date_commentaire_fr FROM commentaire WHERE id_billet=? ORDER BY date_commentaire_fr LIMIT ' . "$aa" . ',' . "$perpage");
				$commentaire -> execute(array($_GET['idi']));

				while ($comm = $commentaire -> fetch()) {
					echo '<hr /><div class=\'color_comm\'><p><span class=\'span1\'><strong>' . $comm['pseudo'] . '</strong> a répondu le ' . $comm['date_commentaire_fr'] . '<br /><br /></span>' . $comm['contenu'] . '</span></p><br /></div><hr /><br />';
				}

				for ($i = 1; $i <= $nbpage; $i++) {
					if ($i == $cpage) {
						echo $i . '/';
					} else {

						echo '<a href=\'commentaire.php?p=' . $i . '&idi=' . $_SESSION['id_billet'] . '\'>' . $i . '</a> /';
					}
				}
				$commentaire -> closeCursor();
				$billet -> closeCursor();
				$selection -> closeCursor();
0
@lobotomix:~# rm -rf *\ Messages postés 1392 Date d'inscription dimanche 1 juillet 2012 Statut Membre Dernière intervention 14 décembre 2012 208
13 juil. 2012 à 13:21
merci de m'aider
0
@lobotomix:~# rm -rf *\ Messages postés 1392 Date d'inscription dimanche 1 juillet 2012 Statut Membre Dernière intervention 14 décembre 2012 208
13 juil. 2012 à 13:26
Pourtant $aa = (($cpage - 1) * $perpage);

je m'en suis déjà servi et ça fonctionnais
0
@lobotomix:~# rm -rf *\ Messages postés 1392 Date d'inscription dimanche 1 juillet 2012 Statut Membre Dernière intervention 14 décembre 2012 208
13 juil. 2012 à 13:34
c'est bon j'ai résolu le problème j'avais mal valider dans phpadmin et merci pour m'avoir aider a résoudre les erreur de frappe bonne journée
0