aiuto con paginazione

ilbarmna

Nuovo Utente
15 Nov 2010
4
0
0
Salve a tutti sono un novellino con il php, ho appena iniziato a lavorarci per la mia tesi, la cosa che dovrei fare è creare una funzione per la paginazione dei dati, ovvero suddividere i risultati per pagina come quello di ggogle ad esempio... qualcuno può aiutarmi? posto qui il codice della pagina di risultati

<?php
session_start();
$id=$_SESSION["id"];
$livello=$_SESSION["livello"];

if ($id==0) die("Sessione terminata");

print "<head>";
include('../style.php');
print "</head>";
print "<body>";

include("../config.php");
global $db_host, $db_user, $db_password, $db_name;
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE) die ("Errore nella connessione.<br>");
mysql_select_db($db_name, $db) or die ("Errore nella selezione del database.<br>");


$materia=$_POST["listMateria"];
$traduttore=$_POST["listTraduttore"];
$autore=$_POST["listAutore"];
$editore=$_POST["listEditore"];
$luogo=$_POST["listLuogo"];
$titoloOr=$_POST["titoloOr"];
$titoloTr=$_POST["titoloTr"];
$annoEd1=$_POST["annoEd1"];
$annoEd2=$_POST["annoEd2"];


$i=0;

if($argomento!=null)
{
$criterio[$i]="materia=$materia";
$i++;
}
if($traduttore!=null)
{
$criterio[$i]="traduttore=$traduttore";
$i++;
}

if($autore!=null)
{
$criterio[$i]="autore=$autore";
$i++;
}

if($editore!=null)
{
$criterio[$i]="editore=$editore";
$i++;
}

if($luogo!=null)
{
$criterio[$i]="luogo=$luogo";
$i++;
}


if($titoloOr!=null)
{
$criterio[$i]="titoloOriginale like '%$titoloOr%'";
$i++;
}

if($titoloTr!=null)
{
$criterio[$i]="titoloTradotto like '%$titoloTr%'";
$i++;
}

if($annoEd1!=null and $annoEd2!=null)
{
$criterio[$i]="annoEdizioneTradotta >= '$annoEd1' AND annoEdizioneTradotta <= '$annoEd2' ";
$i++;
}

if($annoEd1!=null and $annoEd2==null)
{
$criterio[$i]="annoEdizioneTradotta >= '$annoEd1'";
$i++;
}

if($annoEd1==null and $annoEd2!=null)
{
$criterio[$i]="annoEdizioneTradotta <= '$annoEd2'";
$i++;
}


$max_num = count($criterio);
for ($i=0; $i<$max_num; $i++)
{
$condizione=$condizione . $criterio[$i] . " AND ";
}
$n=strlen($condizione);
$condizione=substr($condizione, 0 ,$n-5);
//print $condizione;



print "<center>";
print "<h1>Risultati</h1>";


print "<table width='50%' border=1>";
print "<tr>";
print "<th>N</th>";
print "<th>Titolo originale</th>";
print "<th>Autore</th>";
print "<th>Titolo tradotto</th>";
print "<th>Anno edizione</th>";
print "<th>Editore</th>";
print "</tr>";

if($condizione!=null)
{
$condizione = " where " . $condizione;
}

$query="select * from vista" . $condizione;
print $query;

$result=mysql_query($query, $db);
$i=0;
while ($row = mysql_fetch_array($result))
{
$i=$i+1;

$idEdizione=$row["idEdizione"];
$titoloO=$row["titoloOriginale"];
$titoloT=$row["titoloTradotto"];
$autore=$row["autoreNome"] . " " . $row["autoreCognome"];
$editore=$row["editoreNome"];
$annoEdizione=$row["annoEdizioneTradotta"];

print "<tr>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione'>$i</a></td>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione'>$titoloO</a></td>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione'>$autore</a></td>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione'>$titoloT</a></td>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione'>$annoEdizione</a></td>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione'>$editore</a></td>";
print "</tr>";
}

print "</table>";

print "<p><a href='stampa.php?condizione=$condizione' target='_blank'>Anteprima di stampa</a>";

mysql_close($db);

print "</center>";

print "</body>";
?>
 
ok perfetto sono riuscito ad attarlo, ma il link alla pagina seguente non è cliccabile però...
 
Ultima modifica:
ok perfetto sono riuscito ad attarlo, ma il link alla pagina seguente non è cliccabile però... credo che nel mio caso non dovrei utilizzare $_SERVER['PHP_SELF']
 
Ultima modifica:
si ho adattato la funzione che mi avete indicato, il risultato è corretto nella prima pagina, mi dovrebbe mostrare i restanti nella seconda ma il link di pagina successiva non è cliccabile...

Codice:
print "<body>";

include("../config1.php");

// Creo una variabile dove imposto il numero di record 
// da mostrare in ogni pagina
$x_pag = 3;

// Recupero il numero di pagina corrente.
// Generalmente si utilizza una querystring
$pag = $_GET['pag'];

// Controllo se $pag è valorizzato...
// ...in caso contrario gli assegno valore 1
if (!$pag) $pag = 1;

global $db_host, $db_user, $db_password, $db_name;
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE) die ("Errore nella connessione.<br>");
mysql_select_db($db_name, $db) or die ("Errore nella selezione del database.<br>");


$materia=(int) $_POST["listMateria"];
$traduttore=(int) $_POST["listTraduttore"];
$autore=(int) $_POST["listAutore"];
$editore=(int) $_POST["listEditore"];
$luogo=(int) $_POST["listLuogo"];
$titoloOr=$_POST["titoloOr"];
$titoloTr=$_POST["titoloTr"];
$annoEd1=(int) $_POST["annoEd1"];
$annoEd2=(int) $_POST["annoEd2"];

$condizione_old= $_GET["condizione_old"];


$i=0;

if($materia!=null)
{
  $criterio[$i]="materia=$materia";
  $i++;
}
if($traduttore!=null)
{
  $criterio[$i]="traduttore=$traduttore";
  $i++;
}

if($autore!=null)
{
  $criterio[$i]="autore=$autore";
  $i++;
}

if($editore!=null)
{
  $criterio[$i]="editore=$editore";
  $i++;
}

if($luogo!=null)
{
  $criterio[$i]="luogo=$luogo";
  $i++;
}


if($titoloOr!=null)
{
  $criterio[$i]="titoloOriginale like '%$titoloOr%'";
  $i++;
}

if($titoloTr!=null)
{
  $criterio[$i]="titoloTradotto like '%$titoloTr%'";
  $i++;
}

if($annoEd1!=null and $annoEd2!=null)
{
  $criterio[$i]="annoEdizioneTradotta >= '$annoEd1' AND annoEdizioneTradotta <= '$annoEd2' ";
  $i++;
}

if($annoEd1!=null and $annoEd2==null)
{
  $criterio[$i]="annoEdizioneTradotta >= '$annoEd1'";
  $i++;
}

if($annoEd1==null and $annoEd2!=null)
{
  $criterio[$i]="annoEdizioneTradotta <= '$annoEd2'";
  $i++;
}


$max_num = count($criterio);
for ($i=0; $i<$max_num; $i++)
{
  $condizione=$condizione . $criterio[$i] . " AND ";
}
$n=strlen($condizione);
$condizione=substr($condizione, 0 ,$n-5);
//print $condizione;



print "<center>";
print "<h1>Risultati</h1>";


print "<table width='50%' border=1>";
print "<tr>";
print "<th>N</th>";
print "<th>Titolo originale</th>";
print "<th>Autore</th>";
print "<th>Titolo tradotto</th>";
print "<th>Anno edizione</th>";
print "<th>Editore</th>";
print "</tr>";

if($condizione!=null)
{
  $condizione = " where " . $condizione;
}

//print "$condizione_old<br>";
if(!empty($condizione_old))
$condizione=$condizione_old;

// Uso mysql_num_rows per contare le righe presenti
// all'interno della tabella agenda
$all_rows = mysql_num_rows(mysql_query("SELECT * FROM vista" . $condizione));

// Tramite una semplice operazione matematica definisco
// il numero totale di pagine
$all_pages = ceil($all_rows / $x_pag);

// Calcolo da quale record iniziare
$first = ($pag - 1) * $x_pag;


$query="select * from vista LIMIT $first, $x_pag" . $condizione;
//print $query;

$result=mysql_query($query, $db);
$i=0;
while ($row = mysql_fetch_array($result))
{
$i=$i+1;

$idEdizione=$row["idEdizione"];
$titoloO=$row["titoloOriginale"];
$titoloT=$row["titoloTradotto"];
$autore=$row["autoreNome"] . " " . $row["autoreCognome"];
$editore=$row["editoreNome"];
$annoEdizione=$row["annoEdizioneTradotta"];

print "<tr>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione&condizione=$condizione'>$i</a></td>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione&condizione=$condizione'>$titoloO</a></td>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione&condizione=$condizione'>$autore</a></td>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione&condizione=$condizione'>$titoloT</a></td>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione&condizione=$condizione'>$annoEdizione</a></td>";
print "<td><a href='dettaglio.php?idEdizione=$idEdizione&condizione=$condizione'>$editore</a></td>";
print "</tr>";
}

print "</table>";


print "<p><a href='stampa.php?condizione=$condizione' target='_blank'>Anteprima di stampa</a>";


if ($all_pages > 1){
  if ($pag > 1){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . $pag - 1 . "\">";
    echo "Pagina Indietro</a>&nbsp;";
  } 
  if ($all_pages > $pag){
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . $pag + 1 . "\">";
    echo "Pagina Avanti</a>";
  } 
}

mysql_close($db);

print "</center>";

print "</body>";
 

Discussioni simili