[PHP] Pb script chaines de car.

WRInaute discret
Salut les WRI-eurs ^^ (ca se dit comme ça ?)

j'ai un ptit problème avec cette fonction PHP :

Code:
function affichePages($nb,$page,$total,$crit) {
        $nbpages=ceil($total/$nb);
        $numeroPages = 1;
        $compteurPages = 1;
        $limite  = 0;
        echo '<table border = "0"><tr>'."\n";
        while($numeroPages <= $nbpages) {
        echo '<td><a href = "'.$page.'?crit='.$crit.'&limite='.$limite.'"><b><font size="2" face="Verdana">'.$numeroPages.'</font></b></a></td>'."\n";
        $limite = $limite + $nb;
        $numeroPages = $numeroPages + 1;
        $compteurPages = $compteurPages + 1;
            if($compteurPages == 10) {
            $compteurPages = 1;
            echo '<br>'."\n";
            }
        }
        echo '</tr></table>'."\n";
}

Cette fonction permet de découper une selection en plusieurs pages.
Au début, c'était impeccable : disons que je veux sélectionner tous les bonbons de ma base de données (lol), eh bien en pas de pages j'avais :
"pages 1 2 3 4 5 6".

Le problème c'est que maintenant j'ai tellement de "bonbons" ( :lol: ) que en fin de pages j'ai : "pages 1 2 3 4 5 6 7 8 ... 21 22 23".... et ca n'en fini pas, ça déforme même toute la page !

Bref, comment faire pour que l'affichage des pages fasse un retour à la ligne automatiquement au lien d'aggrandir le tableau et déformer toute la page ?


MERCI d'avoir lu mon roman, et encore plus merci pour la réponse.

bonne soirée !
 
WRInaute passionné
Quelle horreur :evil:
Si on te demande qui a écrit ça, on ne se connait pas...
Code:
function affichePages($nb,$page,$total,$crit) {
        $nbpages=ceil($total/$nb);
        $numeroPages = 1;
        $compteurPages = 1;
        $limite  = 0;
        echo '<table border = "0"><tr><td>'."\n";
        while($numeroPages <= $nbpages) {
        echo '<a href = "'.$page.'?crit='.$crit.'&limite='.$limite.'"><b><font size="2" face="Verdana">'.$numeroPages.'</font></b></a> '."\n";
        $limite = $limite + $nb;
        $numeroPages = $numeroPages + 1;
        $compteurPages = $compteurPages + 1;
            if($compteurPages == 10) {
            $compteurPages = 1;
            echo "\n";
            }
        }
        echo '</td></tr></table>'."\n";
}

ps : WRInautes
 
WRInaute occasionnel
En alternative, je vous propose celle que j'ai fait. Elle s'utilise comme ça :
Code:
Page(s) : <?php menuHorizontal($pageCurrent, $iMenuLength, $nbrPages); ?>
Où $pageCurrent est la page affichée, par exemple la n°8
Où $iMenuLength est la longueur du menu
Où $nbrPages est le nombre total de page, à déterminer au préalable

exemple :
menuHorizontal(8, 3, 43) affichera
Précédent 1 ... 5 6 7 8 9 10 11 ... 43 Suivant

Code:
//Renvoie un élément de menu 1 ... 2 3 4 ... 10
function dispMenuItem($pn, $n, $current) {
	if($n==$current) {
		return "<b>". $pn ."</b>\n";
	}
	else {
		return "<a href=\"page.php?". ereg_replace("\&p=[^\&]*", "", $_SERVER["QUERY_STRING"]) ."&p=". $n ."\" title=\"". $n ."\">". $pn ."</a>\n";
	}
}

//Fonction principale - renvoie le menu 1 ... 2 3 4 ... 10
function menuHorizontal($page, $length, $npages) {
	if($page>1) {
		echo dispMenuItem("Précédent", $page-1, $page);
	}
	echo dispMenuItem(1, 1, $page);
	if($page>$length+2) {
		echo dispMenuItem("...", round((1+$page-$length)/2), $page );
	}
	for($i=$page-$length;$i<=$page+$length;$i++) {
		if( ($i>1) && ($i<$npages) ) {
			echo dispMenuItem($i, $i, $page);
		}
	}
	if($npages-$page>$length+1) {
		echo dispMenuItem("...", round(($npages+$page+$length)/2), $page );
	}
	if($npages>1) {
		echo dispMenuItem($npages, $npages, $page);
		if($page<$npages) {
			echo dispMenuItem("Suivant", $page+1, $page);
		}
	}
	return true;
}
 
WRInaute occasionnel
Up
quelqu'un a une diée sur la façon dont on peu utiliser le code de sgaze a fin de remplacer mon code

Code:
function affichePages($nb,$page,$total) {
        $nbpages=ceil($total/$nb);
        $numeroPages = 1;
        $compteurPages = 1;
        $num  = 0;
        echo '<div class="pagination"><ul>'."\n";
        while($numeroPages <= $nbpages) {
        echo '<li><a href = "liste-'.$num.'.html">'.$numeroPages.'</a></li>'."\n";
        $num = $num + $nb;
        $numeroPages = $numeroPages + 1;
        $compteurPages = $compteurPages + 1;
            if($compteurPages == 10) {
            $compteurPages = 1;
            echo '<br>'."\n";
            }
        }
        echo '</ul></div>'."\n";
}


if($total > $nombre) {


    affichePages($nombre,$page,$total);

}
ce que je cherche surtout c limoter le nombre de liens par page et pouvoir utliser la fonction current

Bonne nuit
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut