- Home
- Categorie
- Coding e Sistemistica
- Coding
- Paginazione pesantissima
-
Io uso questa copiata da phpbb e modificata:
// // FUNZIONE DI PAGINAZIONE // in $url passare l'url con # nella posizione dove va messo il numero di pagina // in $add_prevnext_text mettere FALSE (se non si vuole) oppure le due stringhe separate da # // function myPagination($url, $num_items, $per_page, $start_item, $add_prevnext_text = TRUE) { if ($add_prevnext_text == TRUE) $add_prevnext_text = "Precedente#Successiva"; $total_pages = ceil($num_items/$per_page); if ($total_pages == 1) return ''; $on_page = floor($start_item / $per_page) + 1; $page_string = ''; if ($total_pages > 10) { $init_page_max = ($total_pages > 3) ? 3 : $total_pages; for ($i = 1; $i < $init_page_max + 1; $i++) { $page_string .= ($i == $on_page) ? '<b>' . $i . '</b>' : '<a href="' . str_replace("#", ($i - 1), $url) . '">' . $i . '</a>'; if ($i < $init_page_max) $page_string .= ", "; } if ($total_pages > 3) { if ($on_page > 1 && $on_page < $total_pages) { $page_string .= ($on_page > 5) ? ' ... ' : ', '; $init_page_min = ($on_page > 4) ? $on_page : 5; $init_page_max = ($on_page < $total_pages - 4) ? $on_page : $total_pages - 4; for ($i = $init_page_min - 1; $i < $init_page_max + 2; $i++) { $page_string .= ($i == $on_page) ? '<b>' . $i . '</b>' : '<a href="' . str_replace("#", ($i - 1), $url) . '">' . $i . '</a>'; if ($i < $init_page_max + 1) $page_string .= ', '; } $page_string .= ($on_page < $total_pages - 4) ? ' ... ' : ', '; } else { $page_string .= ' ... '; } for ($i = $total_pages - 2; $i < $total_pages + 1; $i++) { $page_string .= ($i == $on_page) ? '<b>' . $i . '</b>' : '<a href="' . str_replace("#", ($i - 1), $url) . '">' . $i . '</a>'; if( $i < $total_pages ) $page_string .= ", "; } } } else { for($i = 1; $i < $total_pages + 1; $i++) { $page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . str_replace("#", ($i - 1), $url) . '">' . $i . '</a>'; if ( $i < $total_pages ) $page_string .= ', '; } } if ($add_prevnext_text) { list($sPrec, $sSucc) = explode("#", $add_prevnext_text); if ($on_page > 1) $page_string = ' <a href="' . str_replace("#", ($on_page - 2), $url) . '">' . $sPrec . '</a> ' . $page_string; if ( $on_page < $total_pages ) $page_string .= ' <a href="' . str_replace("#", $on_page, $url) . '">' . $sSucc . '</a>'; } return $page_string; }
-
Grazie mille la implemento subito... spero che sia questo il problem altrimenti sono fregato
-
Ciao ragazzi,
ho provato ad implementare questo sistema di paginazione ma ho dei problemi, i conti non tornano! http://www.spaccioworld.com/webcommunity/forum/Politica/REFERENDUM-SULLA-DEVOLUTION/1/0/1149275869.htm a questo link potete notare come c'è il vecchio sistema di paginazione e subito dopo quello nuovo suggerito in questo topic. Ho settato in questo modo la funzione:myPagination(LinkPagina, NumeroTotaleDiRecord, NumeroDiRecordPerPagina, RecordDiPartenza, $add_prevnext_text = TRUE) ``` tuttavia la paginazione non funge. Il problema che ho individuato è il seguente, spero mi possiate dare una mano nel risolverlo: dunque il record di partenza è lo 0, per cui se voglio 10 record per pagina, a pagina due dovrà cominciare da 10, a pagina tre da 20 e via discorrendo...invece quello che succede nello script è che a pagina due parte da 1, a pagina tre parte da 2...insomma il record di START per la richiesta nel DB è sbagliato. Bisogna correggere la funzione o sono io che la setto male? Grazie mille a tutti
-
Ok, ho risolto così il problema:
poiché la funzione passa come con GET il numero della pagina da visualizzare e non il record dal quale iniziare, moltiplico nella richiesta sql il valore START con il numero di visualizzazzioni per pagina, per cui se chiedo la pagina 3 con 10 visualizzazzioni per pagina, nella richiesta sql avverà $_GET['start']10, dunque partirà dal record 30! ecco il codice della richiesta nel punto interessato ```
$sql = "[...] LIMIT ".$_GET['start']$rec_pagina.",$rec_pagina";il problema è che adesso la pagina la cambia correttamente ma non mi evidenzia la pagina corrente su cui sono! vi invito a guardare qui, anche cliccando il numero della pagina resta fermo su 1 http://www.spaccioworld.com/webcommunity/forum/Politica/REFERENDUM-SULLA-DEVOLUTION/1/0/1149275869.htm...????
-
In $start_item passi correttamente il numero del primo record da visualizzare (e non della pagina), quello identifica poi la pagina su cui fa la paginazione.
-
ok, ma se è così come dici tu perché nei link che genera la funzione lo $start_item invece di essere per ogni numero di pagina "0, 10, 20, 30" mi è "0, 1, 2, 3, ..."??Non capisco....
-
Perchè così la puoi moltiplicare direttamente tu per il numero di item per pagina e sai il valore.
-
che stupido, hai ragione tu, io facevo moltiplicare solo nella uqery sql e nella funzione lasciavo la costante 0 ad item_start...grazie mille!
-
Niente da fare anche con la paginazione il tutto resta pesantissimo, voi cosa farestE?
http://www.spaccioworld.com/webcommunity/forum/Spaccio-Time/tutto-cio-che-ti-passa-per-la-testa/0/1144846651.htmAbbiamo solo in questo tread 830 pagine help perfavore ci mette mezze minuto per caricare non e proprio fattibile.
-
Non riesco a capire la funzione.
Che devo dare in $url?
-
Per la paginazione "fine" ovver oche mi mostra la pagina una per una ho usato questa splendida funzione:
http://www.guidoz.it/forum/viewtopic.php?t=451Ora però vorre ifare una paginazione grossolana che mi mostri i link alle pagine multiple di per esempio 50 ovvero (50 ,100, 150 e così via).
Come posso fare con la paginazione dell'esempio di html.it?