Skip to content
Extraits de code Groupes Projets
Valider b26bb1e8 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

optimisation de la pagination avec sql_seek :

- dans les paginations standard sql_seek permet de sauter directement aux resultats sans passer n fois dans le while avant
- dans les paginations indirectes, sql_seek permet de chercher le numero de page dans les resultats et de remettre le pointeur au debut sans perturber le reste de la boucle
parent 4d2e4d40
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -325,7 +325,9 @@ function calculer_boucle_nonrec($id_boucle, &$boucles) { ...@@ -325,7 +325,9 @@ function calculer_boucle_nonrec($id_boucle, &$boucles) {
return $count . return $count .
(!$flag_cpt ? "" : (!$flag_cpt ? "" :
"\n\t\$Numrows['$id_boucle']['compteur_boucle'] = 0;") "\n\t\$Numrows['$id_boucle']['compteur_boucle'] = 0;"
.(($boucle->mode_partie)?"\n\tif (isset(\$debut_boucle) AND \$debut_boucle) sql_seek(\$result,\$Numrows['$id_boucle']['compteur_boucle']=\$debut_boucle);":"")
)
. ' . '
$t0 = "";' . $t0 = "";' .
$corps . $corps .
......
...@@ -152,7 +152,7 @@ function critere_pagination_dist($idb, &$boucles, $crit) { ...@@ -152,7 +152,7 @@ function critere_pagination_dist($idb, &$boucles, $crit) {
// dans ce cas, on retrouve la page par un appel a quete_debut_pagination, // dans ce cas, on retrouve la page par un appel a quete_debut_pagination,
// et on place dans Pile[0]['debut_xxx'] le vrai numero de page pour la balise #PAGINATION // et on place dans Pile[0]['debut_xxx'] le vrai numero de page pour la balise #PAGINATION
// et dans Pile[0][@primary] = yyy pour permettre a la balise #EXPOSER d'exposer l'objet // et dans Pile[0][@primary] = yyy pour permettre a la balise #EXPOSER d'exposer l'objet
.'($Pile[0][\'debut\'.'.$debut.'] = quete_debut_pagination(\''.$boucle->primary.'\',$Pile[0][\'@'.$boucle->primary.'\'] = substr($partie,1),'.intval($pas).',calculer_select($select, $from, $type, $where, $join, $groupby, $orderby, $limit, $having, $table, $id, $connect)))' .'($Pile[0][\'debut\'.'.$debut.'] = quete_debut_pagination(\''.$boucle->primary.'\',$Pile[0][\'@'.$boucle->primary.'\'] = substr($partie,1),'.intval($pas).',$result))'
// sinon on fait un intval sur la valeur demandee, et c'est tout // sinon on fait un intval sur la valeur demandee, et c'est tout
.':intval($partie)'; .':intval($partie)';
......
...@@ -245,7 +245,10 @@ function quete_debut_pagination($primary,$valeur,$pas,$res){ ...@@ -245,7 +245,10 @@ function quete_debut_pagination($primary,$valeur,$pas,$res){
$pos = 0; $pos = 0;
while ($row = sql_fetch($res) AND $row[$primary]!==$valeur) while ($row = sql_fetch($res) AND $row[$primary]!==$valeur)
$pos++; $pos++;
sql_free($res);
// remettre le pointeur au debut des resultats
sql_seek($res,0);
// si on a pas trouve // si on a pas trouve
if ($row[$primary]!==$valeur) if ($row[$primary]!==$valeur)
return 0; return 0;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter