Affichage en pages

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 : Affichage en pages

par Jeqla » 19 juil. 2006, 17:50

Juste une petite précision. J'ai essayé les conseils que j'ai glanné çà et là sur le forum, et sur ce sujet en particulier. Il me semble que LIMIT doit etre à la fin de la requète, surtout après ORDER BY.
C'est juste une constatation ou c'est un truc établi ? Marci.

par agité » 31 mai 2006, 20:58

Bon je vais me debrouiller sans finalement, je vous remerci bien a tous pour votre participation et je met [Resolu]

par agité » 31 mai 2006, 19:54

$nombrepage = round($var2['nb'] / 4);

for($i = 1; $i <= $nombrepage; $i++)
	{
	echo "<a href\"index.php?page=".$i."\">".$i."</a>,";
        }
il m'indique bien 1,2 etc pour les pages mais sur le lien j'ai toujours page=0

par jojolapine » 31 mai 2006, 19:30

ceil() ou round() celon que tu veux l'entier supèrieur ou infèrieur

par agité » 31 mai 2006, 19:02

Merci bien ca marche sans soucis !

alors j'ai fais ca pour l'affichage des pages :
																			<?php
																				require("connect.php");

																					$nbElementParPage = 5;
																					$page = $_GET['page'];
																					$pagesuivante = $_GET['page'] +1;
																					$pageprecedente = $_GET['page'] -1;
																					$nombrepage = $var2['nb'] / 5;


																					$sql="SELECT COUNT(*) AS nb FROM `news` WHERE numero > '".$_GET['page']."' ";
																					$nb = mysql_query($sql) or die("erreur ! ".mysql_error());
																					$var2=mysql_fetch_array($nb);



																					echo "&nbsp <a href=\"index.php?page=".$pagesuivante." \"><b>Page Suivante</b></a>";
																					if(isset($_GET['page']) && $_GET['page'] != 0){
																					echo "&nbsp <a href=\"index.php?page=".$pageprecedente." \">  - Page Precedente</a>";
																					}

																					echo " page: ";
																						for($i = 0; $i <= $nombrepage; $i++)
																							{
																								echo $i.",";

																							}
par contre il m'affiche des 1.8 car je divise par 5 je pense que le mieux c'est d'arondir a l'unité superieur mais comment faire ?

par Ryle » 31 mai 2006, 18:31

P'tite remarque :

Code : Tout sélectionner

WHERE date LIKE '%'
Signifie "OU le champ "date" RESSEMBLE A n'importe quoi" si tu ne spécifie pas de texte dans le like, autant virer le where qui ne sert à rien :)

Quant à LIMIT, il faut définir le nombre d'éléments que tu veux sur chaque page :
$nbElementParPage = 5;
et jouer ensuite sur l'enregistrement à partir duquel tu veux commencer l'affichage en multipliant le nombre d'élement par page, par le numéro de la page en cours :
$page * $nbElementParPage
Tu peux ainsi construire ton LIMIT :
$sql = "SELECT ... LIMIT ". ($page * $nbElementParPage) .", ". $nbElementParPage;
ainsi, si $page==0, il affiche 5 élément à partir de 0, si $page==1, il affiche 5 élement à partir du 5ème, si $page==2, 5 éléments à partir du 10ème, etc.

par agité » 31 mai 2006, 18:04

<table width="100%" cellpadding="0" cellspacing="0" border="0">
														<tr>
															<td class="td3">Site en construction</td>
														</tr>


														<tr>
															<td class="menu_index" valign="top"><br>
															<?php

																require("connect.php");

																?>
																<table border="0" width="96%" cellpadding="0" cellspacing="0" align="center">
																	<tr>
																		<td colspan="6">
																			<?php
																				require("connect.php");


																					$sql="SELECT COUNT(*) AS nb FROM `news` WHERE numero > '".$_GET['page']."' ";
																					$nb = mysql_query($sql) or die("erreur ! ".mysql_error());
																					$var2=mysql_fetch_array($nb);



																					echo "&nbsp <a href=\"index.php?page=".$var2['nb']." \">Page2</a>";


																	echo	"<br><br></td>";




																	if(isset($_GET['page']))
																		{
																			$verif = mysql_query("SELECT `date`, `titre`, `news`, `image`, `numero` FROM `news` WHERE date LIKE '%' LIMIT 0,5 ");
																		}else{
																			$verif = mysql_query("SELECT `date`, `titre`, `news`, `image`, `numero` FROM `news` WHERE date LIKE '%' LIMIT 0,5 ");
																		}

																while(($row = mysql_fetch_array($verif)) != false)
						    										{

																?>
																</table>

																<table border="0" width="96%" cellpadding="0" cellspacing="4" align="center">
																	<tr>
															   			<td class="news_titre">&nbsp &nbsp &nbsp &nbsp &nbsp<?php echo " &nbsp <b>".$row['titre']."</b> &nbsp - &nbsp ".($row['date']); ?></td>
														  			</tr>
																	 <tr>
														  				<td width="100%" class="news" class="menu_index" colspan="4"><br><p align="justify"><?php echo nl2br($row['news']); ?></p></td>
																	</tr>
																<?php
																	}
																?>
																</table>
J'ai commencer a faire ca mais je bloque completement...

par jojolapine » 31 mai 2006, 17:29

je vais te suggérer autre chose, au lieu de stocker des informations inutiles, il va falloir jouer sur le LIMIT de te requête...
comme ceci:

Code : Tout sélectionner

première page: SELECT COUNT(*) AS nb FROM `news` WHERE numero LIKE '%' LIMIT 0,10 deuxième page: SELECT COUNT(*) AS nb FROM `news` WHERE numero LIKE '%' LIMIT 10,10 etc...
à toi maintenant d'essayer en faisant passer par l'url les valeurs de la première partie du LIMIT...

Affichage en pages

par agité » 31 mai 2006, 17:16

J'ai creer un systeme de news avec edition et creation, quand j'affiche les news ca me donne plusieurs tableau constitué de 2 cases.

Bref quand le nombre de table depasse 5 je veux qu'il creer une nouvelle page en donnant le numero de la page +1 et y stock les 5 news

j'ai donc penser a faire ca :
<?php
	require("connect.php");
	
	$sql="SELECT COUNT(*) AS nb FROM `news` WHERE numero LIKE '%' ";
	$nb = mysql_query($sql) or die("erreur ! ".mysql_error());
	$var2=mysql_fetch_array($nb);

	if($var2['nb'] > 5)
	{
		echo "Page2";
	}
?>
donc la c'etait juste pour le teste et afficher "page2" mais maintenant je veux qu'il stock tout les elements de la premiere page dans ce lien.

Et la je bloque niveau idée, je vois pas trop comment m'y prendre, si vous pouviez me mettre sur la piste, même en language humain :)