allora ragazzi... ho un piccolo problema....
io voglio stampare a video con php tutte le righe della mia tabella, ma siccome sono troppe vorrei divederle in pagine in modo ke in ogni pagina ce ne stiano 10...
km faccio?
allora ragazzi... ho un piccolo problema....
io voglio stampare a video con php tutte le righe della mia tabella, ma siccome sono troppe vorrei divederle in pagine in modo ke in ogni pagina ce ne stiano 10...
km faccio?
Prima di eseguire la tua query copia ed incolla questo codice, modifica la query per come ti serve, attenzione però alle variabili da passare e gli eventuali controlli.
<?
if (!isset($start) or $start <0)
$start = 0;
$step = 10;
$query = "SELECT * FROM tua_tabella limit $start,$step";
mysql_db_query("$database", "$query");
$result = mysql_query($query, $db);
$num = mysql_num_rows($result);
if ($num == 0 )
{
############ Tabelle i per record non trovati ####
echo "Non ci sono Record !";
}
else
{ // visualizza la tua tabella con i risultati
?>
<p align="left">Elenco di N. <? echo $num; ?> Risultati </p>
<table border="0" cellpadding="0" cellspacing="0" width="800" height="22">
<tr>
<p align="center">Intestazione Tabella</td>
</tr>
</table>
<?
echo "<table cellpadding='0' cellspacing='0' width='800'><tr>";
while ($rigo = mysql_fetch_array($result))
{
$id = $rigo["id_tua_tabella"];
$data = $rigo["data_itua_tabella"];
$cognome = $rigo["cognome_tua_tabella"]; // personalizza i risultati
echo <<<EOD
<td height="22" ><p align="center">$id</td>
<td height="22" ><p align="center">$data</td>
<td height="22" ><p align="center">$cognome</td>
</tr>
EOD;
############### FINE codice per visualizzare la tabella dei risultati ##############
} // chiude l'IF del fetch-Array
} // chiude l'IF se ci sono risultati
echo "</table>"; // chiude la tabella dei risultati della ricerca
?>
<p align="center">
<table width ="90%" border="0"><tr>
<td width="20%" align="left">
</CENTER>
<?
if ($start>0)
{
$start_back = $start - $step;
echo "<a href=\"?start=$start_back\">[ Precedenti ]</a>";
}
?>
</td>
<?
$query_x = "SELECT count(*) AS tot FROM tua_tabella "; //qui non mettere il limit
$result_x = mysql_query($query_x, $db);
$row = mysql_fetch_array($result_x);
$pages = intval(($row[tot]-1) / $step)+1;
?>
<td width="60%" align="center">
<?
for ($i=0; $i<$pages AND $i<10; $i++)
{
$start_page = $i * $step;
echo "<a href=\"?start=$start_page\">"." ".($i+1)."</a>";
}
?>
</td>
<td width 20% align=right>
<?
if($start + $step <$row[tot])
{
$start_next = $start + $step;
echo "<a href=\"?istart=$start_next\">[ Successivi ]</a>';
echo "</td></table>";
} // if sopra
! NOTE io uso questo metodo è semplice ed intuitivo, attenzione però nei LINK non ho inserito $PHP_SELF che dovrebbe essere usato quando lo script invia a se stesso le variabili .
$risultato=mysql_query("select campo from tabella");
$ris=mysql_num_rows($risultato);
$count=count($ris);
while($riga=mysql_fetch_object($risultato))
{
$campo=$riga->campo;
}
for($i=0;$i<$count; $i++)/*scorro le righe*
{
for($i=0;$i<10;$i++)/*scorre ogni 10*/
{
-----qui crei un file ogni 10----
}
}
questo è un inizio ci devo lavorare un po su
vivio io basta ke prendo quello ke hai scritto tu, lo copio e lo incollo nel mio file vuoto e va? ovviamente cambiando la query...
scusa ma nn ho capito se devo cambiare altro
io ho scritto cosi:
Codice PHP:
<html>
<head>
<title>Paginazione</title>
</head>
<body>
<?php
$dbhost="localhost";
$dbuser="root";
$dbpass="";
$database="a";
$conn=mysql_connect($dbhost,$dbuser,$dbpass) or die ("errore connessione");
@mysql_select_db($database) or die( "Unable to select database");
if (!isset($start) or $start <0)
$start = 0;
$step = 10;
$query = "SELECT * FROM tab limit $start,$step";
mysql_db_query("$database", "$query");
$result = mysql_query($query, $database);
$num = mysql_num_rows($result);
if ($num == 0 )
{#### Tabelle i per record non trovati ####
echo "Non ci sono Record !";
}
else
{ // visualizza la tua tabella con i risultati
?>
<p align="left">Elenco di N. <? echo $num; ?> Risultati </p>
<table border="0" cellpadding="0" cellspacing="0" width="800" height="22">
<tr>
<p align="center">Intestazione Tabella</td>
</tr>
</table>
<?php
echo "<table cellpadding='0' cellspacing='0' width='800'><tr>";
while ($rigo = mysql_fetch_array($result))
{
$id = $rigo["numero"];
$nome = $rigo["nome"];
$data = $rigo["data"];
echo <<<EOD
<td height="22" ><p align="center">$id</td>
<td height="22" ><p align="center">$nome</td>
<td height="22" ><p align="center">$data</td>
</tr>
EOD;
############### FINE codice per visualizzare la tabella dei risultati ##############
} // chiude l'IF del fetch-Array
} // chiude l'IF se ci sono risultati
echo "</table>"; // chiude la tabella dei risultati della ricerca
?>
<p align="center">
<table width ="90%" border="0"><tr>
<td width="20%" align="left">
</CENTER>
<?php
if ($start>0)
{
$start_back = $start - $step;
echo "<a href=\"?start=$start_back\">[ Precedenti ]</a>";
}
?>
</td>
<?php
$query_x = "SELECT count(*) AS tot FROM tab "; //qui non mettere il limit
$result_x = mysql_query($query_x, $database);
$row = mysql_fetch_array($result_x);
$pages = intval(($row[tot]-1) / $step)+1;
?>
<td width="60%" align="center">
<?php
for ($i=0; $i<$pages AND $i<10; $i++)
{
$start_page = $i * $step;
echo "<a href=\"?start=$start_page\">"." ".($i+1)."</a>";
}
?>
</td>
<td width 20% align=right>
<?php
if($start + $step <$row[tot])
{
$start_next = $start + $step;
echo "<a href=\"?istart=$start_next\">[ Successivi ]</a>";
echo "</td></table>";
} // if sopra
?>
</body>
</html>
solo ke mi da questi errori:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\programmi\easyphp1-8\www\a\paginazione.php on line 25
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\a\paginazione.php on line 26
Non ci sono Record !
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\programmi\easyphp1-8\www\a\paginazione.php on line 81
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\a\paginazione.php on line 82
Notice: Use of undefined constant tot - assumed 'tot' in c:\programmi\easyphp1-8\www\a\paginazione.php on line 83
Notice: Use of undefined constant tot - assumed 'tot' in c:\programmi\easyphp1-8\www\a\paginazione.php on line 102
ho pure provato con il codice ke mi da la guioda di html.it
ma mi da questi errori:
Notice: Undefined index: page in c:\programmi\easyphp1-8\www\a\prov.php on line 23
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\a\prov.php on line 32
il codice è questo
Codice PHP:
<?php
// connessione al database
mysql_connect("localhost", "root", "") or die("Connessione fallita !");
// selezione del DB
mysql_select_db("a") or die("Selezione del DB fallita !");
// esecuzione prima query
$count = mysql_query("SELECT * FROM tab");
$res_count = mysql_fetch_row($count);
// numero totale di records
$tot_records = $res_count[0];
// risultati per pagina(secondo parametro di LIMIT)
$per_page = 10;
// 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";
// esecuzione seconda query con LIMIT
$query_limit = mysql_query("SELECT id, nome FROM nome_tabella LIMIT $primo, $per_page");
while($results = mysql_fetch_array($query_limit)) {
echo " <tr>\n <td>";
echo "<a href=\"page.php?id=" . $results['id'] . "\">" . $results['nome'] . "</a>
";
echo "</td>\n </tr>\n";
}
// includiamo uno dei files contenenti la paginazione, commentate l'altro ovviamente
include("pag1.php");
// in questa cella inseriamo la paginazione
echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n";
echo " </tr>\n</table>\n</div>";
mysql_close();
?>
ok risolto tutto a posto grazie![]()
Aspetta un po...... visto che il problema è di interesse per molti, dicci come hai risolto ?
ok allora.... io ho fatto queste 2 pagine in php:
prima di tutto quella principale:
Codice PHP:
<html>
<head>
<title>paginazione</title>
</head>
<body>
<center>
<?php
$res_count=0;
$tot_records=0;
$tot_pages=0;
// connessione al database
mysql_connect("localhost", "root", "") or die("Connessione fallita !");
// selezione del DB
mysql_select_db("a") or die("Selezione del DB fallita !");
// esecuzione prima query
$count = mysql_query("SELECT * FROM tab");
$res_count = mysql_affected_rows();
// numero totale di records
$tot_records = $res_count;
// risultati per pagina(secondo parametro di LIMIT)
$per_page = 15;
// 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 "<center><div align=\"center\">\n<table>\n";
// esecuzione seconda query con LIMIT
$query_limit = mysql_db_query("a","SELECT * FROM tab LIMIT $primo, $per_page");
$a=mysql_affected_rows();
for($i=0;$i<$a;$i++) {
$numero=mysql_result($query_limit,$i,"numero");
$nome=mysql_result($query_limit,$i,"nome");
$data=mysql_result($query_limit,$i,"data");
echo " <tr>\n <td>";
echo $numero,$nome,$data;
echo "</td>\n </tr>\n";
}
// includiamo uno dei files contenenti la paginazione, commentate l'altro ovviamente
include("pag1.php");
// in questa cella inseriamo la paginazione
echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n";
echo " </tr>\n</table>\n</div></center>";
mysql_close();
?>
</center>
</body>
</html>
e poi quella x creare le pagine in fondo con previous e next
Codice PHP:
<?php
if($current_page == 1) { // se siamo nella prima pagina
$precedente = "<< precedente";
} else { // altrimenti
$previous_page = ($current_page - 1);
$precedente = "<a href=\"?page=$previous_page\" title=\"Vai alla pagina precedente\"><< precedente</a>";
}
if($current_page == $tot_pages) { // se siamo nell'ultima pagina
$successiva = "successiva >>";
} else { // altrimenti
$next_page = ($current_page + 1);
$successiva = "<a href=\"?page=$next_page\" title=\"Vai alla pagina successiva\">successiva >></a>";
}
$paginazione = "Pagine totali: " . $tot_pages . $precedente ."
[";
for($k = 1; $k <= $tot_pages; $k++) {
if($k == $current_page) {
$paginazione .= $k . " ";
} else {
$paginazione .= "<a href=\"?page=$k\" title=\"Vai alla pagina $k\">$k</a> ";
}
}
$paginazione .= "]".$successiva;
?>
ora ho solo un ultimo problema.... è ke mi stampa tutte le pagine e siccome io lavoro su db con decine di migliaia di tuple mi servirebbe una funzione ke facesse km le pagine di google, ke piu vai avanti piu aumentano le pagine e piu scompaiono le prime....
ah, ho fatto anke una piccola modifica nella paginazione in modo da avere anke un pulsate ke vada all'ultima e alla prima pagina
Codice PHP:
<?php
if($current_page == 1)
{// se siamo nella prima pagina
$precedente = "<";
}
else
{// altrimenti
$previous_page = ($current_page - 1);
$precedente = "<a href=\"?page=$previous_page\" title=\"Vai alla pagina precedente\"> <</a>";
}
if($current_page == $tot_pages)
{// se siamo nell'ultima pagina
$successiva = ">";
}
else
{// altrimenti
$next_page = ($current_page + 1);
$successiva = "<a href=\"?page=$next_page\" title=\"Vai alla pagina successiva\"> > </a>";
}
if($current_page == 1)
{// se siamo nella prima pagina
$first = "<<";
}
else
{// altrimenti
$first_page = 1;
$first = "<a href=\"?page=$first_page\" title=\"Vai alla prima pagina\"> << </a>";
}
if($current_page == $tot_pages)
{// se siamo nell'ultima pagina
$last = ">>";
}
else
{// altrimenti
$last_page = $tot_pages;
$last = "<a href=\"?page=$last_page\" title=\"Vai all'ultima pagina\"> >> </a>";
}
$paginazione = "Pagine totali: " . $tot_pages . "
" . $first . $precedente ." [";
for($k = 1; $k <= $tot_pages; $k++)
{if($k == $current_page)
{$paginazione .= $k . " ";
}
else
{$paginazione .= "<a href=\"?page=$k\" title=\"Vai alla pagina $k\">$k</a> ";
}
}
$paginazione .= "] ".$successiva . $last;
?>