link in paginazione

lucavalentino

Utente Attivo
15 Lug 2006
114
0
16
Dovrei fare dei collegamenti tipo 1|2|3|4|[...] dove ad ogni numero deve corrispondere un link alla stessa pagina iniziale insomma http://localhost/alunni/cerca.php?pagina=2 dove per esempio pagina=2 fa alla pagina due della prima cioè nel mio caso cerca.php.

Non riesco a far vedere gli altri record del database. Mi ritorna la pagina dicendo che la variabile post non è inizializzata.
Forse perchè ho messo la paginazione nel file cerca dove recupero ogni volta attraverso il post la parola da trovare e controllo se è inizializzata per questo non visualizza gli altri record
PHP:
<?php
    .......
    $x_pagina =15; //record per pagina
    $paginacor = $_GET['pagina']; //pagina corrente
    if (!$paginacor)
    {    $paginacor = 1;     }

    if(is_null($_POST['cerca']))
    {
?>
        <div id="corpo">
            <p>Il testo cercato non ha prodotto risultato.</p>
            <p>Provare con una parola differente.</p>
        </div>
<p>
<?php
    }
    else
    {
        $cerca = cercaCompleta($_POST['cerca']); //richiamo la funzione sql cerca
        $totrecord = num_rows($cerca);
        paginazione($x_pagina, $paginacor, $totrecord);
            
        $partireda = (($paginacor * $x_pagina)-$x_pagina)* -1;
        $ricerca = limitcercaCompleta($_POST['cerca'], 0, $x_pagina); //richiamo la funzione sql cerca con il limit
        Stamparecord($ricerca);
        linkpaginazione($paginacor, $x_pagina, $totrecord);    
    }
...
?>
gia visto questi esmpi:
 
Ti consiglio di usare invece che:
Codice:
if(is_null($_POST['cerca']))

la dicitura
Codice:
$cerca = null;

if(!is_set($_POST['cerca']))
{

}

else
{
$cerca = $_POST['cerca']; //magari controlla che nessuno tenti un XSS ;)
}

//Poi prosegui con i tuoi controlli
if(is_null($cerca)) 
{
...
}

else
{
...
}
 
non
PHP:
if(!is_set($_POST['cerca']))
ma:
PHP:
if(!isset($_POST['cerca']))
inoltre sarebbe meglio passare il valore POST a una variabile da passare per get se la pagina non è la prima, altrimenti il parametro di perde con il cambio pagina.
 
PHP:
<?php
    .......
    $x_pagina =15; //record per pagina
    $paginacor = $_GET['pagina']; //pagina corrente
    if (!$paginacor)
    {    $paginacor = 1;     }

    if(is_null($_POST['cerca']))
    {
?>
        <div id="corpo">
            <p>Il testo cercato non ha prodotto risultato.</p>
            <p>Provare con una parola differente.</p>
        </div>
<p>
<?php
    }
    else
    {
        $cerca = cercaCompleta($_POST['cerca']); //richiamo la funzione sql cerca
        $totrecord = num_rows($cerca);
        paginazione($x_pagina, $paginacor, $totrecord);
            
        $partireda = (($paginacor * $x_pagina)-$x_pagina)* -1;
        $ricerca = limitcercaCompleta($_POST['cerca'], 0, $x_pagina); //richiamo la funzione sql cerca con il limit
        Stamparecord($ricerca);
        linkpaginazione($paginacor, $x_pagina, $totrecord);    
    }
...
?>
Non è che mi si blocca e che quando vado alla pagina che non sia la prima mi va ad eseguire if(is_null($_POST['cerca']))
 
la prima pagina riceve la chiave di ricerca per POST:
PHP:
if(is_null($_POST['cerca']))
la seconda pagina viene prodotta da una querystring:
PHP:
$paginacor = $_GET['pagina']

quindi direi di fare così, nella prima pagina ti crei una sessione in cui conservi il parametro di ricerca:

PHP:
if(isset($_POST['cerca'])){$_SESSION['cerca']=$_POST['cerca'];}

Se la sessione non è attiva non effettui il controllo:

PHP:
<?php
//.......
if(!isset($_SESSION['cerca'])){
if(is_null($_POST['cerca']))
    {
?>
        <div id="corpo">
            <p>Il testo cercato non ha prodotto risultato.</p>
            <p>Provare con una parola differente.</p>
        </div>
<p>
<?php
    }
}
//...
?>

Quando puoi effettui una nuova ricerca, crei una nuova sessione contenente il nuovo parametro passato per POST
 

Discussioni simili