Impaginazione dei risultati delle query MySQL

Man mano che il database cresce, mostrare tutti i risultati di una query su una singola pagina non è più pratico. È qui che entra l'impaginazione PHP e MySQL torna utile. Puoi visualizzare i risultati su più pagine, ciascuna collegata alla successiva, per consentire ai tuoi utenti di sfogliare il contenuto sul tuo sito web a pezzetti.





01 di 04

Impostazione delle variabili

Il codice seguente si connette prima al database. Quindi devi sapere quale pagina di risultati visualizzare. Il if (!(isset($pagenum))) codice controlla se il numero di pagina ($ esilio) non è impostato e, in tal caso, lo imposta su 1. Se è già impostato un numero di pagina, questo codice viene ignorato.

Tu esegui la query. Il $dati la riga deve essere modificata per essere applicata al tuo sito e per restituire ciò che ti serve per contare i risultati. Il $righe riga quindi conta semplicemente il numero di risultati per la tua query.



Successivamente, definisci $righe_pagina , che è il numero di risultati che desideri visualizzare su ciascuna pagina prima di passare alla pagina successiva dei risultati. Puoi quindi calcolare il numero totale di pagine che hai ($ ultimo) dividendo la quantità totale di risultati (righe) per il numero di risultati desiderati per pagina. Usa CEIL qui per arrotondare tutti i numeri al numero intero successivo.

Successivamente, il codice esegue un controllo per assicurarsi che il numero di pagina sia valido. Se il numero è inferiore a uno o maggiore del numero totale di pagine, viene reimpostato sul numero di pagina con contenuto più vicino.



Infine, imposti l'intervallo ($ massimo) per i risultati utilizzando ilfunzione LIMITE. Il numero iniziale è determinato moltiplicando i risultati per pagina per uno in meno rispetto alla pagina corrente. La durata è il numero di risultati visualizzati per pagina.

02 di 04

Codice per l'impostazione delle variabili di impaginazione

// Si collega al tuo database

mysql_connect('your.hostaddress.com', 'username', 'password') or die(mysql_error());

mysql_select_db('address') o die(mysql_error());



//Questo controlla se c'è un numero di pagina. In caso contrario, verrà impostato a pagina 1

if (!(isset($pagenum)))



{

$esiliato = 1;



}

//Qui contiamo il numero di risultati



//Modifica $data in modo che sia la tua query

$data = mysql_query('SELECT * FROM topsites') or die(mysql_error());

$righe = mysql_num_righe($dati);

//Questo è il numero di risultati visualizzati per pagina

$righe_pagina = 4;

//Questo ci dice il numero di pagina della nostra ultima pagina

$ultimo = ceil($righe/$righe_pagina);

//questo assicura che il numero di pagina non sia inferiore a uno o superiore al nostro numero massimo di pagine

se ($pagina<1)

{

$esiliato = 1;

}

elseif ($pagenum > $last)

{

$esilio = $ultimo;

}

//Questo imposta l'intervallo da visualizzare nella nostra query

$max = 'limite ' .($numero_pagina - 1) * $righe_pagina.',' .$righe_pagina;

03 di 04

Query e risultati

Questo codice esegue nuovamente la query precedente, solo con una leggera modifica. Questa volta include il $ max variabile per limitare i risultati della query a quelli che appartengono alla pagina corrente. Dopo la query, visualizzi i risultati normalmente utilizzando la formattazione che desideri.

Quando vengono visualizzati i risultati, viene mostrata la pagina corrente insieme al numero totale di pagine esistenti. Questo non è necessario, ma è una bella informazione da sapere.

Successivamente, il codice genera la navigazione. Il presupposto è che se sei sulla prima pagina, non hai bisogno di un collegamento alla prima pagina. Poiché è il primo risultato, non esiste una pagina precedente. Quindi il codice controlla (se ($pagina == 1) ) per vedere se il visitatore è a pagina uno. Se è così, allora non succede nulla. In caso contrario, PHP_SELF e i numeri di pagina generano collegamenti sia alla prima pagina che alla pagina precedente.

Fai quasi la stessa cosa per generare i collegamenti sull'altro lato. Tuttavia, questa volta stai controllando per assicurarti di non essere nell'ultima pagina. In tal caso, non è necessario un collegamento all'ultima pagina, né esiste una pagina successiva.

04 del 04

Codice per i risultati di impaginazione

//Questa è di nuovo la tua query, la stessa... l'unica differenza è che aggiungiamo $max

$data_p = mysql_query('SELECT * FROM topsites $max') or die(mysql_error());

//Qui è dove visualizzi i risultati della tua query

while($info = mysql_fetch_array($data_p))

{

Stampa $info['Nome'];

eco '
';

}

eco '

';

// Mostra all'utente in quale pagina si trova e il numero totale di pagine

echo ' --Page $ ultima - pagina

';

// Per prima cosa controlliamo se siamo a pagina uno. Se lo siamo allora non abbiamo bisogno di un collegamento alla pagina precedente o alla prima pagina, quindi non facciamo nulla. In caso contrario, generiamo collegamenti alla prima pagina e alla pagina precedente.

se ($pagina == 1)

{

}

altro

{

eco ' <<-First';

eco ' ';

$precedente = $pagenum-1;

eco ' <-Previous';

}

//solo un distanziatore

eco ' ---- ';

//Questo fa lo stesso come sopra, controlla solo se siamo nell'ultima pagina e quindi genera i collegamenti Successivo e Ultimo

if ($awaynum == $ultimo)

{

}

altro {

$successivo = $numeropagina+1;

eco 'Avanti ->';

eco ' ';

eco 'Ultima ->>';

}

?>