Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    modifica script guestbook

    Ciao a tutti.

    Tempo fa ho trovato uno script molto semplice ma efficiente per un guestbook che archivia i dati su file di testo. La script ha un problema però, anzichè visualizzare l'ultimo messaggio in cima alla lista in prima pagina lo mette in cima alla prima pagina utile ovvero quella non ancora piena (il numero di messaggi per pagina si imposta da un file config.php). Credo che l'errore risieda nella parte che si occupa della paginazione che vi riporto di seguito:

    Codice PHP:
    <?php 

    // Estrazione dati e paginazione


    // Estrazione dei messaggi e stampa su schermo  
    $mess_pag=array_slice($rows_file,$inizio,$risultati_per_pagina);
    $mess_pag=array_reverse($mess_pag);
    $cont1=count($mess_pag);
    $cont2=0;

    while (
    $cont2<$cont1) {
    $mess=$mess_pag[$cont2];
    $info=explode("|",$mess);
    $nome=$info[0];
    $email=$info[1];
    $url=$info[2];
    $messaggio=$info[3];
    $data=$info[4];
    $orario=$info[5];

    // Creazione della tabella contenente tutti i dati del messaggio

    if  (($email=="") & ( $url==""))
    {
    $riga="<tr><td bgcolor=\"#CFE7D3\"><font class=\"carattere2\">[b]$nome[/b] | data: $data | ore: $orario</font></td></tr>";
    $riga.="<tr><td><font class=\"carattere2\">$messaggio</td></tr>";
    }
    if  ( (!(
    $email=="")) & ( $url==""))
    {
    $riga="<tr><td bgcolor=\"#CFE7D3\"><font  class=\"carattere2\">[b]$nome[/b] | data: $data | ore: $orario</font><a href=\"mailto:$email\" title=\"Indirizzo email di $nome\"><img src=\"immagini/email.gif\"  border=\"0\"  align=\"absmiddle\"></a></td></tr>";
    $riga.="<tr><td><font class=\"carattere2\">$messaggio</td></tr>";
    }
    if  ( (
    $email=="") & (!( $url=="")) )
    {
    $riga="<tr><td bgcolor=\"#CFE7D3\"><font class=\"carattere2\">[b]$nome[/b] | data: $data | ore: $orario Città: $url</font></td></tr>";
    $riga.="<tr><td><font class=\"carattere2\">$messaggio</td></tr>";
    }
    if  ( (!(
    $email=="")) & (!( $url=="")) )
    {
    $riga="<tr><td bgcolor=\"#CFE7D3\"><font class=\"carattere2\">[b]$nome[/b] | data: $data | ore: $orario<a href=\"mailto:$email\" title=\"Indirizzo email di $nome\"><img src=\"immagini/email.gif\"  border=\"0\"  align=\"absmiddle\"></a> Città: $url</font></td></tr>";
    $riga.="<tr><td><font class=\"carattere2\">$messaggio</td></tr>";
    }
    echo 
    $riga;
    $cont2++;
    }

    ?>
    Qualcuno può aiutarmi? cerco il sito dell'autore, ma non lo trovo
    Grazie
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  2. #2
    up!
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  3. #3
    credo che abbiate pochi elementi per aiutarmi, quindi provo a ripetere l'intera questione per vedere di chiarirmela anche io nella testa:

    $mess_pag è l'array che comprende gli elementi estratti dall' array $row_file che non è altro che l'array i cui elementi sono le righe del file di testo del database (una riga un messaggio).

    L'estrazione che avviene con array_slice si basa sul seguente criterio (correggetemi se sbaglio): estraggo dall'array $row_file un numero di elementi pari a $risultati_per_pagina a partire da $inizio.

    $inizio è calcolato come $pagina*$risultati_per_pagina - $risultati_per_pagina così se $risultati_per_pagina è 3 (lo imposto io) nella prima pagina si visualizzeranno le prime 3 righe a partire dalla riga 0 (primi tre messaggi) nella seconda pagina i 3 messaggi a partire dalla riga 3 (messaggi dal 4 al 6) ecc.

    Ciascuno di questi sottogruppi di 3 messaggi viene messo di volta in volta a seconda della pagina da visualizzare nell'array $mess_pag e per far vedere come primo messaggio l'ultimo inserito viene usato array_reverse.

    E' tutto chiaro? una possibile soluzione non potrebbe essere utilizzare array_reverse anzichè nella posizione in cui è (ovvero per scaravoltare il sottoinsieme $mess_pag) per scaravoltare direttamente l'array che contiene come elementi le righe del file di testo?

    In questo modo se il file è composto da 10 messaggi sarà (una volta scaravoltato) del tipo

    messaggio10
    messaggio9
    messaggio8
    messaggio7
    messaggio6
    messaggio5
    messaggio4
    messaggio3
    messaggio2
    messaggio1

    per cui per la prima pagina sarà $inizio = 0 e con array_slice sarà $mess_pag (messaggio10, messaggio9, messaggio8)

    Ovviamente sarà necessario eliminare lo scaravoltamento una volta estratti i dati dall'array


    Che dite ci sono?
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.