Problème affichage pagination => PHP [Résolu/Fermé]

Messages postés
1414
Date d'inscription
dimanche 1 juillet 2012
Statut
Membre
Dernière intervention
14 décembre 2012
- - Dernière réponse : @lobotomix:~# rm -rf *\
Messages postés
1414
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


Afficher la suite 

2 réponses

0
Merci
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
));
^^^^^^^^^^^^^^^^
Messages postés
1414
Date d'inscription
dimanche 1 juillet 2012
Statut
Membre
Dernière intervention
14 décembre 2012
178
0
Merci
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();
@lobotomix:~# rm -rf *\
Messages postés
1414
Date d'inscription
dimanche 1 juillet 2012
Statut
Membre
Dernière intervention
14 décembre 2012
178 -
merci de m'aider
@lobotomix:~# rm -rf *\
Messages postés
1414
Date d'inscription
dimanche 1 juillet 2012
Statut
Membre
Dernière intervention
14 décembre 2012
178 -
Pourtant $aa = (($cpage - 1) * $perpage);

je m'en suis déjà servi et ça fonctionnais
@lobotomix:~# rm -rf *\
Messages postés
1414
Date d'inscription
dimanche 1 juillet 2012
Statut
Membre
Dernière intervention
14 décembre 2012
178 -
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