|
ciao...ho bisogno di aiuto, ho trovato uno scripto di paginazione che mi è stato molto utile e funziona, però ora mi si presenta il problema che devo limitare il numero di record da vislualizzare nella paginazione (ad esempio nella tabella le righe sono 70 ma in questo caso quelle da estrarre sono solo 28 per una pagina php, mentre su di un'altra pagina deve cominciare a d estrarre dalla 29 fino al 70 e visualizzare quindi nel primo caso da 1 a 28, nel secondo da 1 a 31) ho provato aggiungendo LIMIT nella query $query = "SELECT COUNT(*) FROM venezia z, immagini i WHERE z.img_id = i.id LIMIT 30"; per il primo caso, ma nella visualizzazione delle pagine appaiono sempre fino alla 70 e nel secondo sempre con LIMIT $query = "SELECT COUNT(*) FROM venezia z, immagini i WHERE z.img_id = i.id LIMIT 29, 32"; nel secondo caso, ma mi dà errore nella query riporto qui sotto lo script: <?php include '../../../paginazione.php'; $righe_per_pagina = 1; $url_base = "cannaregio.php"; $pagine_vicine = 4; // C A L C O L O D E L N U M E R O D I P A G I N E //ricavo il numero totale di record $query = "SELECT COUNT(*) FROM venezia z, immagini i WHERE z.img_id = i.id"; $result = mysql_query($query); // record complessivi $tot_righe = mysql_result($result,0); // totale pagine $tot_pagine = ceil($tot_righe / $righe_per_pagina); // P A G I N A C O R R E N T E $pagina_corrente = isset($_GET['page']) ? (int)$_GET['page'] : 1; // se la pagina corrente è minore di 1 if($pagina_corrente < 1) { header('location: ' . $url_base); exit(); } // se la pagina corrente è maggiore dell'ultima pagina if($pagina_corrente > $tot_pagine) { header('location: ' . crea_url($url_base, $tot_pagine)); exit(); } ?>
e paginazione.php è questa: <?php function crea_url($url_base, $pagina) { if(strpos($url_base,'?') === false) { return $url_base . '?page=' . $pagina; } else { return $url_base . '&amp;page=' . $pagina; } } function crea_link($url_base, $pagina_corrente, $numero_pagina) { if($pagina_corrente == $numero_pagina) { return "[$numero_pagina]"; } else { return '<a href="' . crea_url($url_base, $numero_pagina) . '">' . $numero_pagina . '</a>'; } } // funzione che crea i link alle pagine dei risultati function paginazione($tot_pagine, $url_base, $pagina_corrente, $pagine_vicine) { $link_paginazione = "Pagine: "; // link alla pagina precedente if($pagina_corrente != 1) { $link_paginazione .= '<a href="' . crea_url($url_base, $pagina_corrente - 1) . '">«</a> '; } // mostriamo sempre il link alla prima pagina $link_paginazione .= crea_link($url_base, $pagina_corrente, 1); // se il prossimo link non è alla seconda pagina aggiungo dei puntini ... // oppure la sola pagina mancante if($pagina_corrente - $pagine_vicine > 2) { if($pagina_corrente - $pagine_vicine == 3) { $link_paginazione .= " " . crea_link($url_base, $pagina_corrente, 2); } else { $link_paginazione .= " ... "; } } // creo i link alla pagina corrente ed a quelle ad essa vicine for($i = $pagina_corrente - $pagine_vicine; $i <= $pagina_corrente + $pagine_vicine; $i++) { // se tra quelle vicine c'è la prima pagina (già riportata) if($i < 2) continue; // se tra quelle vicine c'è l'ultima pagina (che mostrerò con le prossime istruzioni) if($i > $tot_pagine - 1) continue; $link_paginazione .= " " . crea_link($url_base, $pagina_corrente, $i); } // se il precedente link non era alla penultima pagina aggiungo dei puntini ... // oppure la sola pagina mancante if($pagina_corrente + $pagine_vicine < $tot_pagine - 1) { if($pagina_corrente + $pagine_vicine == $tot_pagine - 2) { $link_paginazione .= " " . crea_link($url_base, $pagina_corrente, $tot_pagine - 1) . " "; } else { $link_paginazione .= " ... "; } } // mostriamo il link all'ultima pagina se questa non coincide con la prima if($tot_pagine != 1) { $link_paginazione .= " " . crea_link($url_base, $pagina_corrente, $tot_pagine); } // link alla pagina successiva if($pagina_corrente != $tot_pagine) { $link_paginazione .= ' <a href="' . crea_url($url_base, $pagina_corrente + 1) . '">»</a>'; } return $link_paginazione; }
?>
grazie per aiuto!!!!!
_________________ Stefana
|