Visualizzazione risultati 1 fino 5 di 5

Discussione: Post su più pagine

  1. #1
    Guest

    Predefinito 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 =))

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    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...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    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. :)

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    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...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    Guest

    Predefinito

    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
    Ultima modifica di mod5 : 08-10-2008 alle ore 17.52.54

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •