Les Allergies
Alimentaires
Posez votre question Signaler

[PHP]pagination lettres

theflagada 57Messages postés 14 mars 2007Date d'inscription - Dernière réponse le 1 oct. 2007 à 15:53
Bonjour,
Je sais faire une pagination sans problemes mais par contre, je ne trouve pas comment faire en paginant par lettres (A,B,C,...)
Quelqu'un saurait-il comment faire cela s'il vous plait?
Merci d'avance
Lire la suite 

[PHP]pagination lettres »

3 réponses
Réponse
+1
moins plus
Bon, j ai reussi la pagination par lettres nickel mais je pagine aussi le tout par pages vu qu il y a trop de lignes pour chaque lettre... j ai essayer de mettre la lettre sur laquelle je suis en variable de session. Ca marche qd je change de page la premiere fois mais ensuite il perd la variable...

Voici ci dessous mon code:
<?php
session_start();

//Configuration et identifiants
if(@!include_once('../config/config.php')){die("Configuration indisponible. Fin du script.");};
if(!include_once("../config/connect.php")){die("-> Méthode de connexion indisponible. Fin du script.");};

$postactions=Array("noact","A to Z");

//Inclusion des fichiers de gestion de la BD (connexion, mapping)
if(!($dblink=@connect_db($login,$passwd,$server,$db_name)))die("-> Connexion à la BD impossible. Fin du script.");


if(isset($_POST['br']) &&( trim($_POST['br'])!="")){$br=strip_tags($_POST['br']);}else{$br="";}
if(isset($_POST['Group_price']) &&( trim($_POST['Group_price'])!="")){$Group_price=strip_tags($_POST['Group_price']);}else{$Group_price="";}


$limit_par_page = 20;
if(isset($_GET['page'])){$page = $_GET['page'];$page = $page - 1;}else{$page = 0;}
$from = $page * $limit_par_page;

$tab=array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','ALL');

$let=$_SESSION['CONNECTE']['LET'];
echo $let;
if ($Group_price!=""){$letter=$Group_price;}
if(isset($_GET['letter'])){$letter =$_GET['letter'];}else{$letter=$let;}

$request = "SELECT DISTINCT Dest,country,code FROM prices WHERE Dest LIKE '".$letter."%' ORDER BY Dest LIMIT $from,$limit_par_page ";

if ($result = mysql_query($request)){ echo $request;$_SESSION['CONNECTE']['LET']=$_GET['letter'];
if(mysql_num_rows($result)!=0){
$_SESSION['CONNECTE']['LET']=$_GET['letter'];

while($reult=mysql_fetch_assoc($result)){
$cpt++;
$group=$reult['Dest'];
list($pays,$a,$b,$c)=split("[\n\r\t ]+", $group);
$twowords=$pays." ".$a;
$group2=$reult['country'];
$group3=$reult['code'];

$lo .="<tr >
<td style=\"\"> </td><td style=\"padding:5px;border:1px solid grey\">".$group."</td>
<td >".$group2."</td>
<td >".$group3."</td>
<td ><input type=\"checkbox\" name=\"'br".$cpt."'\" value=\"Submit\" ".$checked_2."/></td>
</tr>";
}
}else $report='<br/>You have no data for this company !';
}else{
echo "Error while creating the file. Please try again later.";
}

$sql2 = mysql_query("SELECT COUNT(*) AS nb_msg FROM prices WHERE Dest LIKE '".$letter."%' " );
$donnees2 = mysql_fetch_assoc($sql2);
$nb_msg = $donnees2['nb_msg']; echo $nb_msg ;
$nb_pages = ceil($nb_msg / $limit_par_page);

for($a=0; $a<28; $a++){
$letter=$tab[$a];
$result.='<a href="ourprices.php?letter='.$tab[$a].'" >'.$letter.'</a>';

}

for ($page=1;$page<=$nb_pages;$page++){
$eho.="<a href=\"ourprices.php?page=$page\">$page </a>";
}


$OUT="<form method=\"POST\" action=\"\" name=\"plop\" enctype=\"multipart/form-data\">
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"TitleColor\" style=\"FONT-FAMILY: Verdana;vertical-align:top; FONT-SIZE: 8pt;width:100%;background-color:#f2f1f1;padding:10px 10px 10px 20px\">
<tr >
<td style=\"\"> </td>
<td style=\"width:15%;\" colspan=\"2\">$result</td>
</tr >
<tr >
<td style=\"width:15%;\"> </td>
<td ><input type=\"text\" name=\"Group_price\" size=\"20\" value=\"".stripslashes($Group_price)."\"><input type=\"submit\" name=\"envoi\" value=\"Search\" /></td>
<td style=\"width:15%;\"> </td>
<td ><input type=\"submit\" name=\"all\" value=\"A to Z\"></td>
<td ><input type=\"submit\" name=\"any\" value=\"None\"></td>
<td style=\"width:16%;\"> </td>
</tr >
<tr >
<td style=\"width:15%;\"> </td>
</tr >
$lo
<tr>

<td><input type=\"submit\" name=\"act\" value=\"Enter\"><input type=\"hidden\" name=\"modifierentrdee\" value=\"Modifierftions\"></td>
</tr>
<tr >
<td style=\"\"> </td>
<td style=\"width:15%;\" colspan=\"4\">$eho</td>

</tr >

</table>
</form>
";

echo $OUT;

?>
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

De façon générale, il va falloir modifier ta requête SQL en mettant "[...] WHERE champ LIKE '".$lettre."%'"
Il faudrait que tu nous en dises plus sur les données que tu veux afficher pour une réponse plus précise.

Xavier
Ajouter un commentaire
Réponse
+0
moins plus
Merci beaucoup;
je viens de tester et ca marche nickel... je vais essayer de me debrouiller pour adapter a ma requete... apres tout il faut se creser un peu ;) sinon c'est trop facile. Si je n'y arrive pas je vous epliquerai mieu la requete,..
Ajouter un commentaire
Ce document intitulé « [PHP]pagination lettres » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?