Liens sur pages apres requete SQL

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 1 juin 2005 à 13:55
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 1 juin 2005 à 20:47
salut,



voila j'ai trouver sur le site une fonction bien sympa pour créer des
liens lorsque l'on effectue une requete SQL et que l'on veut diviser le
retour en plusieurs pages ....

voici la fonction en question:



function pgs($enreg_par_pg, $pg, $link)

{

//c'est la requete qui doit permettre le nombre de résultats total qui va etre reparti sur plusieurs pages

$res = mysql_query("SELEC * FROM blabla", $link);

mysql_close();

$nb_enreg = mysql_num_rows($res);

//on calcule le nb de pages

$nb_pg_rounded = ceil( $nb_enreg / $enreg_par_pg );//arrondi au nb supérieur

//numero de page precedente

$pp = $pg - 1;

//numero de la page suivante

$ps = $pg + 1;

//si l'utilisateur ne se trouve pas a la page n°1

if($pg != 1){

//on affiche un lien page précedente

echo "<<";

}

//definition d'une variable pour la boucle

$i=1;

do{

//si $i n'est pas egal au numero de la page sur laquelle se trouve l'utilisateur...

if($i != $pg){

//...on affiche un lien vers cette page

echo
" $i\n";

}else{


//...sinon on affiche simplement le n° de la page actuelle

echo " $i ";

}



$i++;

//on recommence tant que $i n'atteint pas le numero de la derniere page

}while($i <= $nb_pg_rounded);



//si l'utilisateur n'est pas a la derniere page...

if($pg != $nb_pg_rounded){

//...on affiche un lien page suivante

//idem: si votre script a
besoin d'autre variable pour fonctionner n'oublier pas des les
transmettre en ajoutant &var=$var...

echo "&nbsp;&gt;&gt;";

}
voila mon pb est que lorsque je recois bcp de reponses il m'affiche tous les liens donc qd j'ai 100 pages

il y a les 100 nombres affiché moi j'aimerias pouvoir les afficher par 5 ou 10 avec un lien vers les 5 ou 10 suivants!!!

est ce que cette fonction peut etre modifier ds ce sens?

ou quelqu'un a deja fait un truc du genr peut etre mem totalement différent.....



merci bien...............



X.

4 réponses

cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
1 juin 2005 à 14:39
moi j'utilise ce code ( de mon cru) a ameliorer et a mettre a ta sauce ( bonne cuisine, je l'espere ;) )



$startElement = id du 1er element a afficher dans ta page

$nbPerPage = le nombre d'element par page;

$nbElement = nb total d'element de la requete

il fonctionne pour dix elements

un elements : un retour d'une requete SQL





function linkPage( $nbPerPage, $nbElement, $startElement)

{



$nbPage = ceil($nbElement/$nbPerPage) ;

$pgCourante = ceil(($startElement+1)/$nbPerPage);

if ( $pgCourante%10==0)

{

$startPage = $pgCourante+1;

}else{

$startPage = floor(($pgCourante/10))*10+1;

}



$ret = '
';

if ( $startPage>=10)

{

$j = ($startPage-11)*$nbPerPage;

$ret .=
'&nbsp;[javascript:setMin(\''.$j.'\') Pr&eacute;c&eacute;dent]';

}

$ok = 1;

$i = $startPage;

while ( $ok==1 )

{

if ($i == $pgCourante)

{

$ret .= '&nbsp;'.$i;

}else{

$j = ($i-1)*$nbPerPage;


$ret .= '&nbsp;[javascript:setMin(\''.$j.'\') '.$i.']';

}

if ( $i >= $startPage+9 || $i >= $nbPage)

{

$ok = 0;

}

$i++;

}

if ( $startPage+9 < $nbPage)

{

$j = ($startPage+9)*$nbPerPage;

$ret .=
'&nbsp;[javascript:setMin(\''.$j.'\') Suivant]';

}

return $ret.'
';

}



la fonction javascript setMin() permet de mettre a jour un champ caché et de submiter le formulaire




"They are 10 sorts of persons whose understand binary and whose not"
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
1 juin 2005 à 16:58
j'avoue que la comme ca en lisant en diagonale je capte aps tout mais je vais le relire a tete reposé

mais j'aimerias bien éviter le javascript etc.....

enfin je vais voir ca mais je suis tjrs ouvert aux autre propositions!!!

merci....

:)
0
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
1 juin 2005 à 17:44
Il est vrai que je ne l'ai pas commenté



function linkPage( $nbPerPage, $nbElement, $startElement)

{



$nbPage = ceil($nbElement/$nbPerPage) ; // calcul le nombre total de page

$pgCourante = ceil(($startElement+1)/$nbPerPage); // determine la page courante



// détermine le premier n° de page a affiché

if ( $pgCourante%10==0)

{

$startPage = $pgCourante+1;

}else{

$startPage = floor(($pgCourante/10))*10+1;

}



$ret = '
';

// affiche précedent si on est a 1 page > 10

if ( $startPage>=10)

{

$j = ($startPage-11)*$nbPerPage;

$ret .=
'&nbsp;[javascript:setMin(\''.$j.'\') Pr&eacute;c&eacute;dent]';

}

$ok = 1;

$i = $startPage;



// affiche les dix pages compris entre x*10 et x*10 +10 x étant un nombre entier

// les n° pages vont de 10 en 10 et le premier n° est 1 puis 11 puis 21 etc.

while ( $ok==1 )

{

if ($i == $pgCourante)

{

$ret .= '&nbsp;'.$i;

}else{

$j = ($i-1)*$nbPerPage;


$ret .= '&nbsp;[javascript:setMin(\''.$j.'\') '.$i.']';

}

if ( $i >= $startPage+9 || $i >= $nbPage)

{

$ok = 0;

}

$i++;

}

// affiche suivant si il y a encore des pages apres la x*10+10

if ( $startPage+9 < $nbPage)

{

$j = ($startPage+9)*$nbPerPage;

$ret .=
'&nbsp;[javascript:setMin(\''.$j.'\') Suivant]';

}

return $ret.'
';

}



Quant à la fonction javascript, ca me permettait de pouvoir utilisé ce
script a plusieurs endroits. si tu veux, tu peux mettre l'adresse en
param et donc l'adapté a ton source



Voila, bonne sieste et j'espere que ca pourra te servir, sinon il doit en exister des tout faits sur internet


"They are 10 sorts of persons whose understand binary and whose not"
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 juin 2005 à 20:47
Salut,



je te file ce que j'utilise pour mon forum en vrac :



$nb_topics_page=10; //10 enregistrements par page

$nbre_pages=ceil($r[1]/$nb_topics_page);

$nb_topics=$r[1];



//--------------------------------------------

//SI UNE PAGE EST DEMANDEE, ON VERIFIE QU'ELLE

//EST VALIDE (EXISTE)

//--------------------------------------------

if(isset($_GET['page']) AND is_numeric($_GET['page']) AND $nbre_pages >= $_GET['page'] AND $_GET['page']>0)

{

$page=$_GET['page'];

$debut=$nb_topics-($page*$nb_topics_page)+$nb_topics_page;

$fin=$debut-$nb_topics_page+1;

}

else

{

$page=1;

$debut=$nb_topics-$nb_topics_page;

$fin=$nb_topics+1;

}



en gros...



Bon après faut adapter à ton script...



Bref tu fais une requête optimisée (si tu fais pas une requête optimisée t'utilises LIMIT $debut,$fin)



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
Rejoignez-nous