Paginazione dei dati estratti da un db MySQL

davidec84

Nuovo Utente
19 Nov 2007
9
0
0
Salve, ho seguito il tutorial presente su mrwebmaster su questo link.

Ho notato che qualora volessi creare una queri con condizione variabile es.

Codice:
$condizione = " WHERE autore = "Manzoni ";

$all_rows = mysql_num_rows(mysql_query("SELECT autore FROM LIBRI" . $condizione));

la prima pagina da i risultati sperati, ma appena passo alla seconda la variabile $condizione si svuota, come devo fare per mantenere il valore?

Grazie
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
devi imporre la stessa condizione anche alla query di paginazione:
PHP:
"SELECT autore FROM LIBRI ". $condizione. " LIMIT $first, $x_pag"
 

davidec84

Nuovo Utente
19 Nov 2007
9
0
0
Re:

SI, fatto. Ma il problema è che la variabile $condizione, appena cambio pagina, si svuota.

$condizione è popalata da valori che provengono dal modulo di ricerca con il metodo post.
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Allora devi passare il valore tramite sessione, in questo modo lo avrai sempre disponibile.
 

davidec84

Nuovo Utente
19 Nov 2007
9
0
0
Disperato

Ho provato così, ma senza nessun risultato.

Codice:
<?php
session_name('CERCALIBRI');
session_start();

if ($_SERVER['HTTP_REFERER'] = "http://127.0.0.1/sessione/trova_libri.php"){
$_SESSION['titolo']= $_POST['titolo'];
$_SESSION['editore']= $_POST['editore'];
$_SESSION['autore']= $_POST['autore'];
$_SESSION['soggetto']= $_POST['soggetto'];
$_SESSION['materia']= $_POST['materia'];
$_SESSION['collana']= $_POST['collana'];
}

?>
<HTML>
<HEAD>
<TITLE>Biblioteca Comunale di Trabia</TITLE>

<script type="text/javascript">

  var stile = "top=10, left=10, width=350, height=250, status=no, menubar=no, toolbar=no, scrollbar=yes";
     function Popup(apri) {
        window.open(apri, "", stile);
     }

</script>

</HEAD>
<BODY>
<h1 align="center"><font color="#5d9048">Comune di Trabia - Database Libri</font></h1>
<?php

include 'cnn_bibliodec_loc.php'; //connessione locale

// imposto quanti risultati x pagina
$rowsPerPage = 20;
// impostiamo di default di mostrare x prima la prima pagina
$pageNum = 1;

// se $_GET['page'] è definito, lo si usa come page namber
if(isset($_GET['page']))
{
    $pageNum = $_GET['page'];
}

// conto l' offset
$offset = ($pageNum - 1) * $rowsPerPage; 



$sqlbase = "SELECT DISTINCT LIBRI.disponibile as Disp, 
LIBRI.numingr AS Num_Ingr, LIBRI.titolo AS Titolo, LIBRI.sottotitolo AS Sottotitolo,
 LIBRI.posizione AS N_Collocazione, EDITORI.editore AS Editore, COLLANE.collana AS Collana, 
LIBRI.progrcollana AS Progr_Collana, SEZIONISPECIALI.sezspeciale AS Sezione_Speciale, 
LIBRI.idlibro as Id ";

$from = " FROM       SOGGETTI RIGHT JOIN (  SEZIONISPECIALI RIGHT JOIN ( MATERIE RIGHT JOIN 
((( COLLANE RIGHT JOIN ( EDITORI RIGHT JOIN ( LIBRI LEFT JOIN INTMATERIE  ON LIBRI.idlibro = 
INTMATERIE.idlibro) ON EDITORI.ideditore = LIBRI.ideditore) ON COLLANE.idcollana = LIBRI.idcollana) 
LEFT JOIN (AUTORI RIGHT JOIN  INTAUTORI ON AUTORI.idautore = INTAUTORI.idautore) ON LIBRI.idlibro
 = INTAUTORI.idlibro) LEFT JOIN INTSOGGETTI ON LIBRI.idlibro = INTSOGGETTI.idlibro) ON 
MATERIE.idmateria = INTMATERIE.idmateria) ON SEZIONISPECIALI.idsezspeciale = LIBRI.idsezspeciale) 
ON SOGGETTI.idsoggetto = INTSOGGETTI.idsoggetto ";

//criteri di ricerca

$condizione = " WHERE LIBRI.idlibro > 0 ";

if ($_SESSION['titolo'] ){
$condizione .=" and LIBRI.titolo LIKE '%". $_SESSION['titolo'] ."%' ";
}

if ($_SESSION['editore'] ){
$condizione .=" and EDITORI.editore LIKE '%". $_SESSION['editore'] ."%' ";
}

if ($_SESSION['autore'] ){
$condizione .=" and AUTORI.autore LIKE '%". $_SESSION['autore'] ."%' ";
}

if ($_SESSION['soggetto'] ){
$condizione .=" and SOGGETTI.soggetto LIKE '%". $_SESSION['soggetto'] ."%' ";
}

if ($_SESSION['materia'] ){
$condizione .=" and MATERIE.materia LIKE '%". $_SESSION['materia'] ."%' ";
}

if ($_SESSION['collana'] ){
$condizione .=" and COLLANE.collana LIKE '%". $_SESSION['collana'] ."%' ";
}

$condizione .=" ORDER BY LIBRI.titolo ";

echo $_SESSION;
$lettura_risultati=mysql_query($sqlbase. $from . $condizione .
" LIMIT $offset, $rowsPerPage");

echo $_SESSION['from'] . "<br />";
echo "{$_SESSION['condizione']}" . '<br />';

echo "<table border=3 width=900px align=center>";  
echo "<tr align=\"center\"><td><h3>Disponibile</h3></td><td><h3>Numero Ingresso</h3></td><td><h3>Titolo</h3></td><td><h3>Editore</h3></td><td><h3>Scheda</h3></td></tr>";
$flag=0;
  while($scatola_temporanea=mysql_fetch_array($lettura_risultati)){
  	 	 
	 if ($flag==0){
	 $colore="#5d9048";
	 $testo="ffffff";
	 $flag=1;}
	 else
	 {$colore="#c0c0c0";
	 $testo="000000";
	 $flag=0;}
	 
	 $disponibile=$scatola_temporanea['Disp'];
	 
	 if ($disponibile == "-1")
	 {$disponibile ="Si";}
	 else
	 {$disponibile ="No";}
	 
	 $numingr=$scatola_temporanea['Num_Ingr'];
     $titolo=$scatola_temporanea['Titolo'];
     $editore=$scatola_temporanea['Editore'];
     $idlibro=$scatola_temporanea['Id'];
$link = "scheda_libro.php?idlibro=". $idlibro; 
	 echo "<tr bgcolor=\"$colore\"><td><b><font color=\"$testo\">$disponibile</font></b></td><td><b><font color=\"$testo\">$numingr</font></b></td><td><b><font color=\"$testo\">$titolo</font></b></td><td><b><font color=\"$testo\">$editore</font></b></td><td><a href=\"javascript:Popup('$link')\">Link</a></td></tr>";
} //fine ciclo while che scorre la query e piazza i risultati nell'array temporaneo
	 echo "</table><br />";

// quanti valori abbiamo nel DB
$query   = "SELECT COUNT(LIBRI.idlibro) AS numrows ". $from . $condizione;
$result  = mysql_query($query) or die('Error, query failed');
$row     = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];

// quante pagine sono?
$maxPage = ceil($numrows/$rowsPerPage);
echo "<table align=center border=1 width=900px><tr><td align=center>";
// crea link per accedere ad ogni pagina
$self = $_SERVER['PHP_SELF'];


// Creo i links Previous e Next
// e quelli First page e Last page
 

if ($pageNum > 1)
{
$page  = $pageNum - 1;
   $prev  = " <a href=\"$self?page=$page\">[Precedente]</a> ";
   $first = " <a href=\"$self?page=1\">[Prima Pagina]</a> ";
}
else
{
   $prev  = '&nbsp;'; // se siamo nella 1° pag non mostriamo Prev
   $first = '&nbsp;'; // e neanche il link alla 1° pag
}

if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
   $next = " <a href=\"$self?page=$page\">[Prossima]</a> ";
   $last = " <a href=\"$self?page=$maxPage\">[Ultima Pagina]</a> ";
}
else
{
   $next = '&nbsp;'; // siamo nell' ultima pag, nn mostriamo Next
   $last = '&nbsp;'; // siamo nell' ultima pag, nn mostriamo il link Last 
}

// mostra i links di navigazione
// mostra i links di navigazione
echo $first . $prev .
" Stai guardando la pagina $pageNum di $maxPage pagine " . $next . $last;

echo "</td></tr></table>";


// ... fine!
?>

</BODY>
</HTML>
 

davidec84

Nuovo Utente
19 Nov 2007
9
0
0
Risolto

Risolto in maniera definitiva, vi riporto l'esempio:

Codice:
<?php
session_start();

if(isset($_REQUEST['titolo']))
{
$_SESSION['Titolo'] = $_REQUEST['titolo'];
}

if (isset($_REQUEST['editore']))
{
$_SESSION['Editore']=$_REQUEST['editore'];
}

if (isset($_REQUEST['autore']))
{
$_SESSION['Autore']=$_REQUEST['autore'];
}

if (isset($_REQUEST['soggetto']))
{
$_SESSION['Soggetto']=$_REQUEST['soggetto'];
}

if (isset($_REQUEST['materia']))
{
$_SESSION['Materia']=$_REQUEST['materia'];
}

if (isset($_REQUEST['collana']))
{
$_SESSION['Collana']=$_REQUEST['collana'];
}
?>

<HTML>
<HEAD>
<TITLE>Biblioteca Comunale di Trabia</TITLE>

<script type="text/javascript">

  var stile = "top=10, left=10, width=350, height=250, status=no, menubar=no, toolbar=no, scrollbar=yes";
     function Popup(apri) {
        window.open(apri, "", stile);
     }

</script>

</HEAD>
<BODY>
<h1 align="center"><font color="#5d9048">Comune di Trabia - Database Libri</font></h1>
<?php

include 'cnn_Sql130692_3.php'; //connessione locale

// imposto quanti risultati x pagina
$rowsPerPage = 20;
// impostiamo di default di mostrare x prima la prima pagina
$pageNum = 1;

// se $_GET['page'] è definito, lo si usa come page namber
if(isset($_GET['page']))
{
    $pageNum = $_GET['page'];
}

// conto l' offset
$offset = ($pageNum - 1) * $rowsPerPage; 



$sqlbase = "SELECT LIBRI.disponibile as Disp, 
LIBRI.numingr AS Num_Ingr, LIBRI.titolo AS Titolo, LIBRI.sottotitolo AS Sottotitolo,
 LIBRI.posizione AS N_Collocazione, EDITORI.editore AS Editore, COLLANE.collana AS Collana, 
LIBRI.progrcollana AS Progr_Collana, SEZIONISPECIALI.sezspeciale AS Sezione_Speciale, 
LIBRI.idlibro as Id ";

$from = " FROM       SOGGETTI RIGHT JOIN (  SEZIONISPECIALI RIGHT JOIN ( MATERIE RIGHT JOIN 
((( COLLANE RIGHT JOIN ( EDITORI RIGHT JOIN ( LIBRI LEFT JOIN INTMATERIE  ON LIBRI.idlibro = 
INTMATERIE.idlibro) ON EDITORI.ideditore = LIBRI.ideditore) ON COLLANE.idcollana = LIBRI.idcollana) 
LEFT JOIN (AUTORI RIGHT JOIN  INTAUTORI ON AUTORI.idautore = INTAUTORI.idautore) ON LIBRI.idlibro
 = INTAUTORI.idlibro) LEFT JOIN INTSOGGETTI ON LIBRI.idlibro = INTSOGGETTI.idlibro) ON 
MATERIE.idmateria = INTMATERIE.idmateria) ON SEZIONISPECIALI.idsezspeciale = LIBRI.idsezspeciale) 
ON SOGGETTI.idsoggetto = INTSOGGETTI.idsoggetto ";

//criteri di ricerca

$condizione = " WHERE LIBRI.idlibro > 0 ";

if ($_SESSION['Titolo'])
{
$condizione .=" and LIBRI.titolo LIKE '%". $_SESSION['Titolo'] ."%' ";
}

if ($_SESSION['Editore'])
{
$condizione .=" and EDITORI.editore LIKE '%". $_SESSION['Editore'] ."%' ";
}

if ($_SESSION['Autore'])
{
$condizione .=" and AUTORI.autore LIKE '%". $_SESSION['Autore'] ."%' ";
}

if ($_SESSION['Soggetto'])
{
$condizione .=" and SOGGETTI.soggetto LIKE '%". $_SESSION['Soggetto'] ."%' ";
}

if ($_SESSION['Materia'])
{
$condizione .=" and MATERIE.materia LIKE '%". $_SESSION['Materia'] ."%' ";
}

if ($_SESSION['Collana'])
{
$condizione .=" and COLLANE.collana LIKE '%". $_SESSION['Collana'] ."%' ";
}

$condizione .=" ORDER BY LIBRI.titolo ";

//echo "Stai cercando con i seguneti criteri: " . $_SESSION['Titolo']." ". $_SESSION['Editore'] . " " .$_SESSION['Autore'] .
//" " . $_SESSION['Soggetto'] . " " . $_SESSION['Materia'] . " " . $_SESSION['Collana'] ."<br /><br />";

$lettura_risultati=mysql_query($sqlbase. $from . $condizione . " LIMIT $offset, $rowsPerPage");

echo "<table border=3 width=900px align=center>";  
echo "<tr align=\"center\"><td><h3>Disponibile</h3></td><td><h3>Numero Ingresso</h3></td><td><h3>Titolo</h3></td><td><h3>Editore</h3></td><td><h3>Scheda</h3></td></tr>";
$flag=0;
  while($scatola_temporanea=mysql_fetch_array($lettura_risultati)){
  	 	 
	 if ($flag==0){
	 $colore="#5d9048";
	 $testo="ffffff";
	 $flag=1;}
	 else
	 {$colore="#c0c0c0";
	 $testo="000000";
	 $flag=0;}
	 
	 $disponibile=$scatola_temporanea['Disp'];
	 
	 if ($disponibile == "-1")
	 {$disponibile ="Si";}
	 else
	 {$disponibile ="No";}
	 
	 $numingr=$scatola_temporanea['Num_Ingr'];
     $titolo=$scatola_temporanea['Titolo'];
     $editore=$scatola_temporanea['Editore'];
     $idlibro=$scatola_temporanea['Id'];
	 
$link = "scheda_libro.php?idlibro=". $idlibro; 

echo "<tr bgcolor=\"$colore\"><td><b><font color=\"$testo\">$disponibile</font></b></td><td><b><font color=\"$testo\">$numingr</font></b></td><td><b><font color=\"$testo\">$titolo</font></b></td><td><b><font color=\"$testo\">$editore</font></b></td><td><a href=\"javascript:Popup('$link')\">Link</a></td></tr>";
} //fine ciclo while che scorre la query e piazza i risultati nell'array temporaneo
	 echo "</table><br />";

// quanti valori abbiamo nel DB
$query   = "SELECT COUNT(LIBRI.idlibro) AS numrows ". $from . $condizione;
$result  = mysql_query($query) or die('Error, query failed');
$row     = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];

// quante pagine sono?
$maxPage = ceil($numrows/$rowsPerPage);
echo "<table align=center border=1 width=900px><tr><td align=center>";
// crea link per accedere ad ogni pagina
$self = $_SERVER['PHP_SELF'];


// Creo i links Previous e Next
// e quelli First page e Last page
 

if ($pageNum > 1)
{
$page  = $pageNum - 1;
   $prev  = " <a href=\"$self?page=$page\">[Precedente]</a> ";
   $first = " <a href=\"$self?page=1\">[Prima Pagina]</a> ";
}
else
{
   $prev  = '&nbsp;'; // se siamo nella 1° pag non mostriamo Prev
   $first = '&nbsp;'; // e neanche il link alla 1° pag
}

if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
   $next = " <a href=\"$self?page=$page\">[Prossima]</a> ";
   $last = " <a href=\"$self?page=$maxPage\">[Ultima Pagina]</a> ";
}
else
{
   $next = '&nbsp;'; // siamo nell' ultima pag, nn mostriamo Next
   $last = '&nbsp;'; // siamo nell' ultima pag, nn mostriamo il link Last 
}

// mostra i links di navigazione
// mostra i links di navigazione
echo $first . $prev .
" Stai guardando la pagina $pageNum di $maxPage pagine " . $next . $last;

echo "</td></tr></table>";


// ... fine!
?>

</BODY>
</HTML>
 
Discussioni simili
Autore Titolo Forum Risposte Data
L articolo: Paginazione dei dati presenti in un file di testo - informazioni PHP 2
C Paginazione dei dati presenti in un file di testo PHP 2
C Paginazione dei dati presenti in un file di testo PHP 0
D [risolto] Problemi di paginazione dei risultati con una determinata query Classic ASP 4
B Problemi con paginazione dei risultati PHP 1
A paginazione dei risultati di una query PHP 0
I Errore 80040220 nella newsletter con paginazione Classic ASP 0
motleyrulez Paginazione Tabella Bootstrap Javascript 2
B [Java] Paginazione in risposta HTTP Java 0
L [PHP] paginazione con classi vendor PHP 2
K [PHP] Paginazione Wordpress: passare variabile PHP 6
A [PHP] If e Else paginazione ok ci sono risultati no ma avanti lo stesso PHP 15
paloppa [PHP] paginazione con ajax PHP 1
O paginazione php mysql PHP 10
A [PHP] limitare counter paginazione PHP 7
V [ASP] paginazione-risultati-query-grandi-dimensioni Classic ASP 8
A [PHP] Problema paginazione motore di ricerca PHP 48
A [PHP] inserire paginazione su script php/mysql PHP 6
Marcello.Fiore Paginazione jQuery - PHP jQuery 2
elpirata [PHP] Paginazione dati estratti da una query con più condizioni PHP 17
X come modificare paginazione del tutorial PHP 0
MarcoGrazia Problema con bootstrap, saltata tutta la paginazione in IE8 HTML e CSS 1
F paginazione record di una query Classic ASP 5
Luca13 ASP Easy-News paginazione Classic ASP 2
G Problema di Indice e Paginazione PHP 5
M Paginazione di risultati query mysql PHP 2
D Paginazione dati PDO PHP 8
zorro Help paginazione PHP 10
M Problema su numerazione paginazione php PHP 6
L paginazione testo senza troncare le parole PHP 3
L testare una paginazione "Creazione di 1000 dati random in una tabella" PHP 7
L problema paginazione con valori -1 -2 -3 -4 PHP 0
N Paginazione con invio modulo PHP 0
L Paginazione file di testo PHP 3
N Script paginazione PHP 0
N Paginazione PHP 2
felino Pagina di ricerca: la paginazione non funziona WordPress 0
xone Evitare Meta Tag duplicati su paginazione php PHP 2
filippino Paginazione file txt con PHP? PHP 1
felino PHP e Paginazione Jquey PHP 2
H [RISOLTO] paginazione PHP + mysql PHP 15
M Problema Paginazione con Mod_rewrite .htaccess PHP 0
J Paginazione PHP in jQuery UI Tabs jQuery 13
ste80 interazione PHP Access con paginazione PHP 7
W Problema eliminazione ultimo record da ultima pagina di crud con paginazione PHP 2
L Paginazione con pdo. PHP 8
G Paginazione php utilizzando le api di careerjet PHP 0
G Paginazione php utilizzando le api di careerjet WordPress 1
S paginazione PHP 2
L Paginazione file evitare di inserire questi \ o altro nella get PHP 1

Discussioni simili