- Home
- Categorie
- Coding e Sistemistica
- PHP
- dividere in pagine i risultati
-
dividere in pagine i risultati
In pratica ho questo codice che mostra le informazioni di ogni singolo utente e le mostra su ogni riga:
[PHP] for($i=0;$i<$c1;$i++)
{
//show each user
$each = def($users*, "./db/users");echo "$each[id]-$each[email]";
}[/PHP]
Il problema è che però tutto questo mi viene mostrato solo su una singola pagina, e potete immaginare come su 1400 risultati, un qualsiasi browser possa andare in crash.
Come si fa a dividerle in pagine dove ogni pagina ne contiene solo 50 e cosi via?
Del tipo view.php?pagina=2 e vedo gli altri 50 ecc.....
Per quanto riguarda l'input cioè le caselle dei messaggi per girare pagina ce l'ho già, ma è il sistema che divide i risultati che mi manca.
Ciao
-
Ciao alessiofbt,
$c1 è un'array con tutti i risultati giusto?
Prova questo ma nn sono sicuro del funzionamento ;):
[php]
<?php
class Pager
{
function getPagerData
($numHits, $limit, $page)
{
$numHits = (int) $numHits;
$limit = max((int) $limit, 1);
$page = (int) $page;
$numPages = ceil
($numHits / $limit);
$page = max($page, 1);
$page = min($page, $numPages);
$offset = ($page - 1) * $limit;
$ret = new stdClass;
$ret->offset = $offset;
$ret->limit = $limit;
$ret->numPages = $numPages;
$ret->page = $page;
return $ret;
}
}
$page = $_GET['page'];
$limit = 50;
$total = count($c1);
$pager = Pager::getPagerData($total, $limit, $page);
$offset = $pager->offset;
$limit = $pager->limit;
$page = $pager->page;
for($i=0;$limit<$c1>$offset;$i++)
{$each = def($users*, "./db/users"); echo "$each[id]-$each[email]";
}
if ($page == 1) echo "Precedenti"; else echo "<a href=\"pagina.php?page=" . ($page - 1) . "\">Precedente</a>";
for ($i = 1; $i <= $pager->numPages; $i++) {
echo " | ";
if ($i == $pager->page)
echo "Page $i";
else
echo "<a href="pagina.php?page=$i">Page $i</a>";
}
if ($page == $pager->numPages)
echo "Prossime";
echo "<a href="pagina.php?page=" . ($page + 1) . "">Prossima</a>";
?>[/php]
Fonte: http://www.phpnoise.com/tutorials/9/1 :D:D
-
Mi da questo errore
Parse error: syntax error, unexpected '>'
alla riga dove c'è
for($i=0;$limit<$c1>$offset;$i++)
?
-
up
-
up
-
prova questo
$_utenti_query_n = mysql_query("SELECT COUNT(id) FROM $tb_gst_user");//conto i records
$_utenti_query = mysql_fetch_array($_utenti_query_n);
$_utenti_n = $_utenti_query[0];//prendo il risultato$_utenti_p_p = 50;//num records da visualizzare
$_utenti_p = htmlspecialchars($_GET['pg']); if(ereg("[0-9]",$_utenti_p)==false or $_utenti_p >= $_utenti_n or $_utenti_p < 0) { $_utenti_p = 0; } $_utenti_query = mysql_query("SELECT * FROM $tb_gst_user ORDER BY nome LIMIT $_utenti_p, $_utenti_p_p");
- o - questo lo fatto al momento, sul sito c'è molto migliore
html.it, c'è uno script molto migliore
- o - questo lo fatto al momento, sul sito c'è molto migliore
-
Salve ragazzi,
pensavo di aver risolto il problema dell'impaginazione dei risultati ma ora che sto inserendo i dati mi accorgo di una cosa, _cioè che se io adesso faccio una ricerca con un valore (ad esempio provincia Chieti) _mi dice si quanti risultati ci sono e in quante pagine me li divide (2) e mi fa vedere i primi 5 ma se clicco sulla seconda pagina non mi fa vedere la seconda parte ma mi fa vedere la seconda pagina come se cercassi con parametro (provincia :all).Posto il codice:
<?php include("include/connector.inc"); $ricerca = $_POST['ricerca']; if($ricerca=="vero"){ $localita = strtolower($_POST['localita']); $citta = strtolower($_POST['citta']); $regione = strtolower($_POST['regione']); $stato = strtolower($_POST['stato']); $cs = $_POST['CS']; $aa = $_POST['AA']; $ps = $_POST['PS']; $camper_stop = $_POST['CAMPER-STOP']; $wifi = $_POST['WI-FI']; $gratis = $_POST['GRATIS']; $pagamento = $_POST['PAGAMENTO'];} //se ho indicato regione="tutte"... tolgo il valore dal campo regione if($regione == "all"){ $regione = ""; } if($citta == "all"){ $citta = ""; } //a seconda dei parametri cremo condizioni per sql if($localita!="") $where_localita = "and localita='$localita'"; if($citta!="") $where_citta = "and citta='$citta'"; if($regione!="") $where_regione = "and regione='$regione'"; if($stato!="") $where_stato = "and stato='$stato'"; if($cs!="") $where_cs = "and cs=1"; if($aa!="") $where_aa = "and aa=1"; if($ps!="") $where_ps = "and ps=1"; if($camper_stop!="") $where_camper_stop = "and camper_stop=1"; if($wifi!="") $where_wifi = "and wifi=1"; if($gratis!="") $where_gratis = "and gratuito=1"; if($pagamento!="") $where_pagamento = "and pagamento=1"; $count = mysql_query("SELECT COUNT(id) FROM camperservice where id=id $where_localita $where_citta $where_regione $where_stato $where_cs $where_aa $where_ps $where_camper_stop $where_wifi $where_gratis"); $res_count = mysql_fetch_row($count); // numero totale di records $tot_records = $res_count[0]; // print (ci sono :"$tot_records"); // risultati per pagina(secondo parametro di LIMIT) $per_page = 5; // numero totale di pagine $tot_pages = ceil($tot_records / $per_page); // pagina corrente $current_page = (!$_GET['page']) ? 1 : (int)$_GET['page']; // primo parametro di LIMIT $primo = ($current_page - 1) * $per_page; echo "<div align=\"center\">\n<table>\n"; //print ("<span class='testonormale' align='left'><a href='index.php' class='Stile1'>nuova ricerca</a></span>"); // esecuzione seconda query con LIMIT $sql="select * from camperservice where id=id $where_localita $where_citta $where_regione $where_stato $where_cs $where_aa $where_ps $where_camper_stop $where_wifi $where_gratis limit $primo,$per_page"; $result_sql=mysql_query($sql,$dbconn); if($result_sql!=""){ print "<table width='100%'>"; //mostro elenco risultati while($row_sql=mysql_fetch_object($result_sql)){ //stringa di descrizione del cs $tx_indirizzo = " $row_sql->localita, $row_sql->citta "; if($row_sql->cs==1) $comp_cs = "<strong>CS</strong>"; else $comp_cs = ""; if($row_sql->aa==1) $comp_aa = "<strong>AA</strong>"; else $comp_aa = ""; if($row_sql->ps==1) $comp_ps = "<strong>PS</strong>"; else $comp_ps = ""; if($row_sql->camper_stop==1) $comp_camper_stop = "<strong>CAMPER-STOP</strong>"; else $comp_camper_stop = ""; if($row_sql->wifi==1) $comp_wifi = "<strong>WI-FI</strong>"; else $comp_wifi = ""; $tx_tipo = "$comp_cs $comp_aa $comp_ps $comp_camper_stop $comp_wifi"; //comp nome if(($row_sql->localita == $row_sql->citta)||($row_sql->citta == "")){ $tx_nome = "$row_sql->localita"; }else{ $tx_nome = "$row_sql->localita ($row_sql->citta)"; } $cs_box = "<table class='box' class='testonormale' align='left' width='50%'> <tr> <td align='left'> <a href='detail.php?id_cs=$row_sql->id' class='Stile1'><b>$tx_nome</b></a> </td> </tr> <tr> <td align='left'> $tx_tipo </td> </tr> <tr> <td align='left'> $row_sql->indirizzo - $row_sql->localita ($row_sql->citta) </td> </tr> </table>"; print ("<tr><td>$cs_box</td></tr>"); } include("paginazione.php"); // in questa cella inseriamo la paginazione echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n"; echo " </tr>\n\n</div>"; print "</table>"; }else{ print ("<span class='testonormale'>Nessun CamperService trovato</span>"); } print ("<br><span class='testonormale' align='left'><a href='index.php' class='Stile1'>nuova ricerca</a></span>"); ?> ``` Questa è la pagina di gestione pagine:
<?php
$paginazione = "Pagine totali: " . $tot_pages . "
[";
for($i = 1; $i <= $tot_pages; $i++) {
if($i == $current_page) {
$paginazione .= $i . " ";
} else {
$paginazione .= "<a href="?page=$i" title="Vai alla pagina $i">$i</a> ";
}
}
$paginazione .= "]";?>