Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    5

    Php scrivere dati su file flat (txt) in ordine decrescente

    //salve a tutti! anticipo il mio ringraziamento a chiunque sia disposto ad aiutarmi.. Mi spiego in poche riche.. Sono un principiante e dovendo realizzare una pagina guestbook mi sono servito di un codice php che verifica i dati di un form e, verificate le condizioni, scrive nel file txt. E' alle stringhe di codice postato che spetta l'apertura e la scrittura del file txt. Quello che non mi riesce è fargli scrivere i dati in ordine decrescente. Cioè dire, vorrei che i messaggi del form venissero visualizzati a partire dal più recente e dunque cerco un modo per far sì che la funzione scriva a partire dalla testa del file. Ho fatto mille ricerche ma nulla.. Qualcuno sa dirmi se sia o no possibile variare le modalità di scrittura? So che con database mysql si può.. Ancora grazie..

    $guestbook = fopen($db_testo, "a");
    $txt='<tr><td><font face="Georgia" color="#660066">E-mail:<font face="Georgia">'.$utente.'</font>

    ';
    $txt .='<p align="center"><font face="Georgia" color="#660066">'.$messaggio .'</font></p>
    ';
    $txt .= '<font face="Georgia" size="1">Scritto il: ' . $data_ora . '</font><hr></td></tr>';
    fwrite($guestbook, $txt);
    fclose($guestbook);
    echo 'Grazie per averci scelto!Chiudi finestra';

  2. #2
    Utente bannato
    Registrato dal
    Oct 2009
    Messaggi
    20
    Mettili in un array e poi stampali al contrario con un ciclo for :-)

    tipo cosi:

    codice:
    $i=0;
    $guestbook = fopen($db_testo, "a");
    $UTENTI[$i]=$utente;
    $MESSAGGI[$i]=$messaggio;
    $DATE_ORE[$i]=$data_ora;
    $i=$i+1;
    ....

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    5
    Grazie mille gamola! sei stato davvero utile.. Davvero tante grazie.. In sostanza dici di fare qualcosa del genere?

    $i=0;
    $guestbook = fopen($db_testo, "a");
    $txt[$i]='<tr><td><font face="Georgia" color="#660066">E-mail:<font face="Georgia">'.$utente.'</font>

    ';
    $txt[$i]='<p align="center"><font face="Georgia" color="#660066">'.$messaggio .'</font></p>
    ';
    $txt[$i]='<font face="Georgia" size="1">Scritto il: ' . $data_ora . '</font><hr></td></tr>';
    $i=$i+1;

    fwrite($guestbook, $txt);
    fclose($guestbook);
    echo 'Grazie per averci scelto!Chiudi finestra';

  4. #4
    Utente bannato
    Registrato dal
    Oct 2009
    Messaggi
    20
    non proprio cosi,

    dovresti fare esattamante la seguente cosa:

    inserire in coda al file una riga contenente la voce del guestbook da visualizzare cosi


    $guestbook = fopen($db_testo, "a");
    $txt='<tr><td><font face="Georgia" color="#660066">E-mail: <font face="Georgia">'.$utente.'</font>

    <p align="center"><font face="Georgia" color="#660066">'.$messaggio .'</font></p>
    <font face="Georgia" size="1">Scritto il: ' . $data_ora . '</font><hr></td></tr>';
    fwrite($guestbook, $txt.'\n');
    fclose($guestbook);



    fare poi un'altra funzione che legge tutto il file riga per riga mettendone il contenuto
    in un array tramite un indice $i

    $guestbook = fopen($db_testo, "r"); // apro in lettura
    $i=0;
    while(non finisce il file)
    {
    $txt[$i] = riga letta del file...
    $i++;
    }


    e poi stampare l'array dall'ultimo elemento al prima... se sai programmare almeno un pochino non dovrebbe essere difficile :-)

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    5
    Carissimo gamola.. è un grazie ad oltranza il mio.. in php sono un principiante.. non ho ancora avuto il tempo di studiarne sintassi ecc.. ecc.. Devo inserire solo quello che mi hai postato?

    Un'altra cosa.. ho inserito la funzione onsubmit di modo che l'action del form si apra nella finestrella che ho chiamato window. Quando lo script, avendo verificato che i dati immessi siano corretti, completa la scrittura dà una echo con un link "chiudi" che riporta alla pagina del form così riaggiornata con il messaggio appena inserito. Ora.. in realtà l'aggiornamento lo fa nella finestrella window e non nella finestra madre. Ho provato ad impostare in vari modi il target ma si apre al max in un'altra finestra. Comunque devo proprio farti i miei complimenti.. Sei davvero un gran intenditore.. Ne hai fatto una professione?

  6. #6
    Utente bannato
    Registrato dal
    Oct 2009
    Messaggi
    20
    ovviamente il codice php non è completo... era solo per darti un'idea! :-)

    per il resto dovrei vedere il sorgente per capire il problema dell'apertura della finestra.

    Per il resto sono un misero programmatore... almeno questo facevo prima della crisi :-(

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    5
    Tu modesto programmatore! eheheh per essere modesto ne sai di cose! La crisi ha tagliato fuori anche te? non dirmi.. Cmq se non ti dispiace ti posto l'intero codice.. Ti sarei davvero grato se potessi risolvermi il problema..

    Questo nel file guest.php ( le condizioni)

    $guestbook = fopen($db_testo, "a");
    $txt='<tr><td><font face="Georgia" color="#660066">E-mail:<font face="Georgia">'.$utente.'</font>

    ';
    $txt .='<p align="center"><font face="Georgia" color="#660066">'.$messaggio .'</font></p>
    ';
    $txt .= '<font face="Georgia" size="1">Scritto il: ' . $data_ora . '</font><hr></td></tr>';
    fwrite($guestbook, $txt);
    fclose($guestbook);
    echo 'Grazie per averci scelto!Chiudi finestra';
    }

    ?>

    Questo nel file guestbook.php ed è la parte iniziale del codice del form (la pagina del guestbook)

    <form action="guest.php" method="post" name="guestbook" target="mywindow" id="guestbook" onsubmit="window.open('guest.php','mywindow','widt h=400,height=200')">

  8. #8
    Utente bannato
    Registrato dal
    Oct 2009
    Messaggi
    20
    Verrebbe cosi:

    codice:
    <?php
    $guestbook = fopen($db_testo, "a");
    $txt='<tr><td><font face="Georgia" color="#660066">E-mail: <font face="Georgia">'.$utente.'</font>
    
    <p align="center"><font face="Georgia" color="#660066">'.$messaggio .'</font></p>
    <font face="Georgia" size="1">Scritto il: ' . $data_ora . '</font><hr></td></tr>';
    fwrite($guestbook, $txt.'\n');
    fclose($guestbook);
    
    $guestbook = fopen($db_testo, "r"); // apro in lettura
    $i=0;
    while(!feof($guestbook))
    {
     $gb[$i] = stream_get_line($guestbook,65535,'\n'); // legge una riga dal file
     $i++;
    }
    $n = $i-1;
    for($i=$n;$i>=0;$i--) echo $gb[$i];
    ?>
    per l'apertura della finestra non saprei dirti... non sopporto javascript :-)

    ciao!

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    5
    Cavoliii grazieeee!!! Lo provo subito.. D'accordo per il JS.. Tranquillo.. ehhehe hai già fatto abbastanza.. Alla fine ho evitato il refresh della pagina madre ed ho impostato solo la chiusura della finestrella.. Del resto all'apertura di quest'ultima il programmino ha già scritto sul file flat.. A preoccuparsi del refresh sarà l'utente Ti auguro una buona domenica gamola

    Prova: Ho implementato il codice ma mi continua a dare errori..cerco di correggere ma me ne dà altri in altre righe. Cosa non va? Ti manderò un panettone a Natale! Se uso il valore "w" (che inserisce il punt all'inizio del file) al posto di "a" non c'è un modo per non fargli cancellare ogni volta tutto?

    Parse error: syntax error, unexpected $end in /membri/Guestbook/guest.php on line 67

    [...]

    if($utente==""){

    echo "Scrivi il tuo nome..";

    }elseif($messaggio==""){

    echo "Nessun messaggio? Scrivi qualcosa..";

    }elseif($email==""){

    echo "Ehm..scrivi il tuo indirizzo e-mail..";

    }else{

    //se tutto è corretto procedo a scrivere le

    //informazioni sul database di testo

    $guestbook = fopen($db_testo, "a");
    $txt='<tr><td><font face="Georgia" color="#660066">E-mail:<font face="Georgia">'.$utente.'</font>

    ';
    $txt .='<p align="center"><font face="Georgia" color="#660066">'.$messaggio .'</font></p>
    ';
    $txt .= '<font face="Georgia" size="1">Scritto il: ' . $data_ora . '</font><hr></td></tr>';
    fwrite($guestbook, $txt.'\n');
    fclose($guestbook);
    $guestbook = fopen($db_testo, "r"); // apro in lettura
    $i=0;
    while(!feof($guestbook))
    {
    $gb[$i] = stream_get_line($guestbook,65535,'\n'); // legge una riga dal file
    $i++;
    }
    $n = $i-1;
    for($i=$n;$i>=0;$i--) echo $gb[$i];
    ?>

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.