Pagination

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pagination

Re: Pagination

par JeanJack » 30 nov. 2011, 15:40

faut que je vois pour utiliser PDO quote
le dernier message que j'ai fait était juste pour montrer si je n'avais pas fait une erreur bete que je n'avais pas vu, il y a bien tout le code de mon premier message
quand je parle qu'il n'affiche pas les pages je parle de la navigation en effet ( ce qui permet d'afficher les chiffres pour cliquer dessus et envoyer page=2 dans l'url )
si j'enleve le WHERE DATE_FORMAT(date_creation, "%M") = ? tout va bien sauf que j'ai tout les messages de tout les mois alors que la je veux qu'il fasse en fonction du $_GET['mois'] envoyé dans l'url
si c'était la requete sql qui n'allais pas j'aurai une erreur je pense non ? alors que la j'ai rien juste un blanc apres le Page :
pour le $databis je ne sais pas trop ce qu'il y a dedans, j'ai surtout bien pompé sur le tuto de creer un livre d'or sur le site du zero

Re: Pagination

par moogli » 30 nov. 2011, 15:14

salut,

- stop aux requête préparée pour quedal ! la protection d'une valeur c'est avec [url=http://www.php.net/manual/fr/pdo.quote.php]la méthode quote[/pdo]
- tu ne gère pas l'utilisation de la pagination, du moins dans ton dernier message ^^
dans le 1er message, qu'est ce qui ne va pas exactement ?
qu'entend tu par il n'affiche pas les pages, c'est la barre de navigation qui ne s'affiche pas ?
c'est la requête SQL qui ne va pas ?

y a quoi dans $databis . (un var_dump pour bien voir).

@+

Re: Pagination

par JeanJack » 30 nov. 2011, 14:45

ca ne change rien j'ai toujours aucun message d'erreur mais pas le lien des pages qui s'affiche, c'est ptet la ligne for pourtant elle me semble correct :|
<?php
					try
					{ 
						$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
						$bdd = new PDO('mysql:host=localhost;dbname=cyclisme_vienne', 'root', '', $pdo_options);
						$nombreDeMessagesParPage = 5;
						$ret = $bdd->prepare('SELECT COUNT(*) AS nb FROM article WHERE DATE_FORMAT(date_creation, "%M") = ?');
						$ret->execute(array($_GET['mois']));
						$databis = $ret->fetch();
						$totalDesMessages = $databis['nb'];
						$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
						echo 'Page : ';
						{
							for ($i = 1 ; $i <= $nombreDePages ; $i++)
							{
								echo '<a href="post_mois.php?mois=' . $_GET['mois'] . '&page=' . $i . '">' . $i . '</a> ';
							}
						}
					}
					catch(Exception $e)
					{
						die('Erreur : '.$e->getMessage());
					}
				?>

Re: Pagination

par xTG » 30 nov. 2011, 14:27

Utilises plutôt une requête préparée dans ce cas :
$ret = $bdd->prepare('SELECT COUNT(*) AS nb FROM article WHERE DATE_FORMAT(date_creation, "%M") = ?');
$ret->execute(array($_GET['mois']));
http://fr.php.net/manual/fr/pdo.prepared-statements.php

Re: Pagination

par JeanJack » 30 nov. 2011, 14:23

je veux récuperer tout les enregistrement pour un mois qui est donné dans l'url $_GET['mois']
c'est en mettant justement = \'mois\' que ca bloque

Re: Pagination

par xTG » 30 nov. 2011, 01:05

Il manque la fin de ta requête :
SELECT COUNT(*) AS nb FROM article WHERE DATE_FORMAT(date_creation, "%M")
Ton date_format() tu le compares à quoi ? Car si ton but est de récupérer tous les enregistrements enlèves la clause where.
Bizarre que cette requête ne te retourne pas une erreur selon moi.

Pagination

par JeanJack » 30 nov. 2011, 00:23

Bonjour a tous
J'ai ajouté un système de pagination a une page php, cette page fonctionne correctement sauf que il ne m'affiche pas les pages ce qui est assez contraignant surtout si l'utilisateur doit ajouter &page=2 a chaque fois ^^
<?php
					try
					{ 
						$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
						$bdd = new PDO('mysql:host=localhost;dbname=cyclisme_vienne', 'root', '', $pdo_options);
						$nombreDeMessagesParPage = 5;
						$ret = $bdd->query('SELECT COUNT(*) AS nb FROM article WHERE DATE_FORMAT(date_creation, "%M")');

						$databis = $ret->fetch();
						$totalDesMessages = $databis['nb'];
						$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
						echo 'Page : ';
						{
							for ($i = 1 ; $i <= $nombreDePages ; $i++)
							{
								echo '<a href="post_mois.php?mois=' . $_GET['mois'] . '&page=' . $i . '">' . $i . '</a> ';
							}
						}
					}
					catch(Exception $e)
					{
						die('Erreur : '.$e->getMessage());
					}
				?>
				</p>
				<?php
				if (isset($_GET['page']))
				{
					$page = intval($_GET['page']);
				}
				else
				{
					$page = 1;
				}
				$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
				$bdd->query('SET lc_time_names="fr_FR"');
				$req = $bdd->prepare('SELECT titre, contenu, DATE_FORMAT(date_creation, "%d/%m/%Y") AS date_creation_fr FROM article WHERE DATE_FORMAT(date_creation, "%M") = ? ORDER BY date_creation LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
				$req->execute(array($_GET['mois']));
				if (empty($_GET['mois']))
					echo 'Veuillez selectionner un mois';
					?>
					<h1><?php echo $_GET['mois'];?></h1>
						<?php while($donnees = $req->fetch())
						{ 
						?>
						<div class="post">
							<h3><?php echo htmlspecialchars($donnees['titre']); ?></h3>
							 Le <?php echo $donnees['date_creation_fr']; ?>
							<p>
								<?php
								echo nl2br(htmlspecialchars($donnees['contenu']));
								}
								$req->closeCursor();
								?>