[risolto] Leggere da un file txt in ordine inverso

  • Creatore Discussione Creatore Discussione Trapano
  • Data di inizio Data di inizio

Trapano

Utente Attivo
27 Set 2012
238
0
16
49
Ciao a tutti.
Ho poco lavoro in questo periodo (come tanti) e annoiandomi, voglio esplorare nuovi orizzonti...

Ho fatto un piccolo guestbook senza db.... semplicemente un form che registra tutto in un file elenco.txt
Un altro file che legge dal file elenco.txt, mi visualizza i commenti.
ecco i file...
form.php
PHP:
<form method="post" action="guestbook/guestbook.php">
Il tuo nome
<br>
<input type="text" name="nome">
<br>
La tua e-mail
<br>
<input type="text" name="email">
<br>
Messaggio
<br>
<textarea name="messaggio" rows="5" cols="18"></textarea>
<br>
<input type="submit" value="Firma il guestbook">
</form>

commenti.php
PHP:
<?
    include("elenco.txt");
?>

Il file guestbook.php che scrive è questo
PHP:
<?
    // Recupero i campi dal modulo
    $nome = $_POST["nome"];
    $email = $_POST["email"];
    $messaggio = $_POST["messaggio"];

    // Recupero la data corrente
    $data = date("d/m/Y H:i:s");

    // Recupero il file di testo in cui scrivere i messaggi
    $file = "elenco.txt";

    // Controlo che i dati siano corretti
    if ($nome == "")
    {
        echo "Inserisci il tuo nome";
    }
    elseif ($email == "")
    {
        echo "Inserisci la tua e-mail";
    }
    elseif ($messaggio == "")
    {
        echo "Inserisci il messaggio";
    }
    else
    {
        // Apro il file di testo e ci srivo dentro
        $guestbook = fopen($file, "a");
        $scrivi = "<b>" . $nome . "<br>" . $email . "</b><br>\r";
        $scrivi .= $messaggio . "<br>\r";
        $scrivi .= "<i>Scritto in data " . $data . "</i><hr>\r";
        fwrite($guestbook, $scrivi);
        fclose($guestbook);

        // Rimando l'utente alla pagina principale
        Header("Location: http://www.home.org");
    }
?>

Però nel file commenti.php, vedo sempre il messaggio più vecchio e devo far scorrere la pagina per vedere quello più recente..
Vorrei visualizzare subito quello recente e poi magari far scorrere per vedere gli altri...
Si può fare?
Grazieeeee
 
Ultima modifica:
Ciao, prova a scrivere così il tuo file commenti.php:

PHP:
<?php
    $file = file('elenco.txt');
    echo implode("\n", array_reverse($file));

    unset($file);
?>

Ti lascio le referenze delle funzioni, così capisci come funziona:


ps: nel tuo guestbook utilizzi il breakline windows, che leggono solo i sistemi microsoft. Ti consiglio il breakline unix invece che viene letto da tutti:
PHP:
        $scrivi = "<b>" . $nome . "<br>" . $email . "</b><br>\n";
        $scrivi .= $messaggio . "<br>\n";
        $scrivi .= "<i>Scritto in data " . $data . "</i><hr>\n";
 

Discussioni simili