-
Post su più pagine
Salve, sono alle prese con la creazione di un semplice blog/guestbook con memorizzazione su database.. ora, ho realizzato il tutto e funziona alla perfezione, ma mi sono posto una domanda: come fare se i post superano un "tot numero"?
E' sconveniente, ad esempio, avere 200 post su un'unica pagina, quindi, il mio problema è: come fare, ad esempio, a visualizzare 10 post per pagina dinamicamente?
Cercando qua e là ho capito che la soluzione sarebbe l'utilizzo dei cicli (o qualcosa di simile), ma sono totalmente ignorante in materia..
La funzione del blog/guestbook è semplice:
Registra i dati tramite form su una tabella e poi li visualizza su di una pagina tramite richiamo dei dati dal database.
Ringrazio anticipatamente per l'aiuto
(p.s.: so che ci sono migliaia di guestbook/blog script in php+mysql, quindi non scrivetemi "puoi scaricare questo.. quello..quell'altro, grazie =))
-
Non conosco i dettagli del tuo guestbook, ma puoi risolvere il problema in un semplice modo: aggiungendo la clausola LIMIT alle tue query.
In altre parole, se per estrarre i post nella home page del blog usi questa query:
SELECT * FROM post ORDER BY data DESC
dovrai aggiungere la clausola LIMIT <post iniziale>, <numero post>, ad esempio:
SELECT * FROM post ORDER BY data DESC LIMIT 0, 10
Alla fine della pagina aggiungerai un link alla "pagina successiva", in quella pagina eseguirai la query che estrae i successivi 10 record, così:
SELECT * FROM post ORDER BY data DESC LIMIT 10, 10
... e così via.
Stammi bene...
-
si, uso l'incrementazione di un valore numerico, quindi il tuo consiglio è ottimo.. ti ringrazio tantissimo... anche se non è proprio funzionale al max, perchè cosi' devo sapere il numero esatto di post (cosa fittizia, essendo un guestbook/blog, e possono aumentare/diminuire..) e creare una pagina ogni volta che raggiungo 10 post.. quindi, anche se facessi un conteggio dei post tramite data, id, o quel che sia, come fare per non dover creare necessariamente 1 pagina ogni 10 post, considerando che si possono anche cancellare?
Ri-grazie anticipatamente. :)
-
Puoi conoscere il numero esatto di post facendo un'altra query (non sarà il massimo perché le query raddoppiano, però è il modo più semplice...):
SELECT COUNT(*) AS conteggio FROM post
Ti restituirà una tabella 1 campo x 1 record dove puoi leggere il numero di post inseriti, e in base a quello decidere se e come costruire i link "pagina precedente" e "pagina successiva".
Altra cosa: le query scritte sopra non ti richiedono di conoscere l'ID del messaggio che visualizzi. È già specificato che con la prima query si visualizzano i primi 10 messaggi in ordine cronologico inverso, e con la seconda query i successivi 10.
Infine, sopra ho scritto "creare un'altra pagina", ma in realtà basta modificare ancora il template in modo che preveda un parametro "start": sarà impostato a 0 (quindi all'inizio del file) se non definito, oppure all'ultimo record visualizzato. In altre parole, usando PHP, il codice sarà più o meno questo:
Codice PHP:
// determina il numero dei post
$query = "SELECT COUNT(*) AS conteggio FROM post";
$result = mysql_query ($query, $db);
$n_post = mysql_fetch_array ($result)['conteggio'];
// determina il post iniziale e il numero di post visualizzati
if (isset ($_GET['start']))
$start = $_GET['start'];
else
$start = 0;
$post_per_page = 10;
// elabora i post selezionati
$query = "SELECT * FROM post ORDER BY data DESC LIMIT $start, $post_per_page";
$result = mysql_query ($query, $db);
while ($line = mysql_fetch_array ($result))
{
// ... elabora i post come preferisci
}
// link alla pagina precedente (se da utilizzare)
if ($start >= $post_per_page)
echo ('<a href="?start=' . ($start - $post_per_page) . '">Pagina precedente</a>');
// link alla pagina successiva (se da utilizzare)
if ($start + $post_per_page < $n_post)
echo ('<a href="?start=' . ($start + $post_per_page) . '">Pagina successiva</a>');
Stammi bene...
-
Ciao... altro che "demential".. sei un genio! :)
Ho modificato alcune parti del tuo codice, adattando al mio sito e funziona tutto!!
Quindi, per questo, ti venerero' come nuovo "mio dio" :)
Grazie mille!!
Unica cosa che non è "carina esteticamente" è che da "start=0" passa a "start=2" a "start=4" se imposto come $post_per_page, ad esempio, il valore 2 (cosa che comunque non incide in alcun modo con quello che volevo fare..) .. ma me ne frego e ti venero lo stesso :P
Grazie mille di nuovo.
-mod