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 04Codice 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 04Query 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 04Codice 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 ->>';
}
?>