• Super User

    Fwrite e "a capo"

    Salve a tutti!:ciauz:
    Sto usando le funzione di fwrite e fopen per scrivere e leggere da un file di testo nel quale vado a depositare, con un submit, il testo presente in una text-area digitato dall'utente.
    Ciò che non riesco a capire ne a fare è come mandare a capo nel file di testo.
    Ho provato con \n ma mi crea tanti piccoli square ( [][][] ) e non va a capo.
    L'unica idea per mettere a video i dati staccati era aggiungere un <br /> ma così non mi piace.

    [PHP]<?php
    //legge sul file di testo easylog.txt
    function leggiLog(){

    $fileRead=fopen("easyLog.txt","r");
    $fileSize=filesize("easyLog.txt");
    $log=fread($fileRead,$fileSize);
    fclose($fileRead);
    echo "
        <form method='post' action='".scriviLog()."'>
            <label>Nuova stringa:</label><input type='text' name='textLog'></input>
            <input type='submit' value='aggiungi' name='submit'/>
        </form>    
        <div id='logDiv' style='border:1px solid #000000;'>
            $log;
        </div>
        ";
    }
    

    //scrive sul file di testo easylog.txt
    function scriviLog(){
    if((isset($_POST['submit'])) || ($_POST['textLog']!="")){
    $addLog=$_POST['textLog'];
    $fileWrite=fopen("easyLog.txt","a");
    fwrite($fileWrite,$addLog."\n");
    fclose($fileWrite);
    }
    }?>[/PHP]

    Adesso:
    oltre al fatto che non mi va a capo non ho capito come refreshare la pagina dopo che il dato è stato inviato.
    Ho provato con header ma mi da l'errore che l'ho gia usato:
    **Cannot modify header information - headers already sent by (output started at C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\easysystem\login.php:27) in...
    **


  • Super User

    ok ho risolto il refresh cambiando l'impostazione della funzione:
    [php]
    <?php
    //scrive e legge da file di testo easylog.txt
    function creaLog(){
    $fileRead=fopen("easyLog.txt","r");
    $fileSize=filesize("easyLog.txt");
    $textlog=fread($fileRead,$fileSize);
    fclose($fileRead);
    echo "
    <form method='post' onsubmit='".$_SERVER['REQUEST_URI']."'>
    <label>Nuova stringa:</label><input type='text' name='textLog'></input>
    <input type='submit' value='aggiungi' name='submit'/>
    </form>
    <div id='logDiv' style='border:1px solid #000000;'>
    $textlog;
    </div>
    ";
    if((isset($_POST['submit'])) || ($_POST['textLog']!="")){
    $addLog=$_POST['textLog'];
    $fileWrite=fopen("easyLog.txt","a");
    fwrite($fileWrite,$addLog."\n");
    fclose($fileWrite);
    }
    }?>
    [/php]Ora mi rimane che non so come andare a capo nel .txt ad ogni invio del submit


  • User Attivo

    se il server e' windows per andare a capo in un file ci devi mettere "\n\r"


  • Super User

    No ecco:
    ora sono riuscito a mandare a capo in scrittura il testo con \r\n.
    Ma non mi refresha la pagina °_°


  • Super User

    Ah grazie Olaola ho scritto il messaggio un secondo dopo il tuo!
    Senti ora ho una domanda diversa ma sempre simile.
    Nel file di testo mi va a capo ma nell'html no!
    Non so come fargli fare un ciclo che per ogni riga deve mettere un <br/>
    help? 😮


  • User Attivo

    in che senso nell'html non ti va a capo? cerchi di includere il file di log in un documento html?


  • Super User

    [PHP]<?php
    //scrive e legge da file di testo easylog.txt
    function creaLog(){
    $fileRead=fopen("easyLog.txt","r");
    $fileSize=filesize("easyLog.txt");
    $textlog=fread($fileRead,$fileSize);
    echo "<form method='post' onsubmit='".$_SERVER['REQUEST_URI']."'>
    <label>Log procedurale:</label></input>
    <textarea style='width:50%; height:80%; display:block;' name='textLog'>$textlog;
    </textarea>
    <input type='submit' value='Salva' name='submit'>
    </form>";
    if((isset($_POST['submit']))){
    $data=date("d-m-y, G:i");
    $addLog=$data." ".$_POST['textLog'];
    $fileWrite=fopen("easyLog.txt","w");;
    fwrite($fileWrite,$addLog."\r\n");
    fclose($fileWrite);
    }
    fclose($fileRead);
    }?>[/PHP]

    Ecco qui. Non riesco a risolvere questo problema.
    (ho modificato intanto il php).
    Praticamente voglio che nella textarea compaia ciò che è scritto nel file di testo.
    In più voglio avere la possibilità di modificare il file di testo semplicemente aggiungendo e scrivendo nella textarea con consecutivo click sul submit.
    Non so xkè ma nn mi funziona °_°


  • Super User

    Ciao karedas,prova così:
    [php]<?
    $textlog=nl2br(fread($fileRead,$fileSize));
    ?>[/php]
    Ciao 😉


  • Super User

    Grazie li ci sono riuscito.
    Ora la mia preoccupazione è quella che quando vado a cliccare su "SALVA" dalla pagina html , non riesco a sovrascrivere il file di testo come vorrei.
    [PHP]..
    if((isset($_POST['submit']))){
    $data=date("d-m-y, G:i");
    $addLog=$data." ".$_POST['textLog'];
    $fileWrite=fopen("easyLog.txt","a");
    fwrite($fileWrite,$addLog."\r\n");
    fclose($fileWrite);
    }
    ...[/PHP]

    Questa porzione di codice non fa altro che duplicare il testo gia presente e riappiopparmelo sotto. Io invece voglio sovrascriverlo non avere un loop doppio ! :rk01_annegare:

    (ah e poi non è che sapresti rispondermi sul come refreshare la stessa pagina dopo il submit? ) :Trilly-95-77:


  • Super User

    up!


  • Super User

    nessuno mi sa aiutare? :°(


  • Super User

    Cambia semplicemente il modo d'apertura da "a" a "w+" 😉
    Ciao!


  • User Attivo

    penso che vada bene anche a+ 🙂 saluti


  • Super User

    @Skyline said:

    penso che vada bene anche a+ 🙂 saluti
    No,a+ aggiunge i dati in coda 😉
    Ciao!


  • User Attivo

    si vero, che sbadato, appena arrivato e faccio già confusione 😄


  • Super User

    No così non mi funziona,o meglio scrive ma lo fa in modo errato:

    [PHP] function creaLog(){
    //scrittura
    if((isset($_POST['submit']))){
    $data=date("d-m-y");
    $addLog=$data."\n".$_POST['textLog'];
    $fileWrite=fopen("easyLog.txt","w+");
    fwrite($fileWrite,$addLog."\r\n");
    fclose($fileWrite);
    }
    //lettura
    $fileRead=fopen("easyLog.txt","r");
    $fileSize=filesize("easyLog.txt");
    $textlog=(fread($fileRead,$fileSize));
    echo "<form method='post' action='".$_SERVER['REQUEST_URI']."'>
    <label>// ZONA BUGGATA IN FASE DI ELABORAZIONE :: Log procedurale:<hr>\n</label></input>
    <textarea cols='100' rows='20'style='display:block;
    padding:5px;' name='textLog'>$textlog
    </textarea> \n
    <hr>
    <input type='submit' value='Salva' name='submit'>
    </form>";
    }[/PHP]

    Se metto scrittura con w+ la funzione mi copia e sdoppia l'intero contenuto del file .txt
    Se metto a+ non capisco il motivo mi combina questo:
    mi raddoppia la data + in alto nel file di testo e dove c'è l'apostrofo mi mette delle slash ad ogni submit


  • Super User

    Up up ri up! 😮


  • Super User

    nessuno mi sa aiutare? =(