Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Fopen e company

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    7

    Fopen e company

    Ciao a tutti, innanzitutto sono felice di essermi iscritto al forum e quindi saluto tutti.
    Detto questo... sto smanettando con la funzione "fopen" con l'obiettivo di poter modificare un file di testo (a dirla tutta un file XML) ... il problema è che riesco o ad aggiungere in coda.. o in testa...
    Quello che invece necessitò è la possibilità di poter leggere e scrivere nella textarea e salvare le modifiche anche se queste sono nel bel mezzo del file.
    Qualcuno ha un idea a proposito? Premetto che ho tentato con tutti gli attributi di fopen.
    Lo script bene o male è il seguente:

    **************************
    <?php
    $fn = "example.xml";
    $file = fopen($fn, "r");
    $size = filesize($fn);

    if($_POST['addition']) fwrite($file, $_POST['addition']);

    $text = fread($file, $size);
    fclose($file);
    ?>
    <form action="<?=$PHP_SELF?>" method="post">
    <textarea cols="120" rows="80" name="addition"><?=$text?></textarea>


    <input type="hidden" name="addition2"/>
    <input type="submit"/>
    </form>
    ***************************

  2. #2
    Innanzitutto non puoi aprire il file in sola lettura e poi prendere di scriverci qualcosa dentro.
    Al limite aprilo in lettura e scrittura.

    $file = fopen($fn, "r+");

    così facendo, però, il puntatore viene posizionato all'inizio del file, quindi se scrivi qualcosa, sovrascrivi ciò che è presente all'inizio del file.
    Quindi vai prima alla fine del file e poi esegui

    if($_POST['addition']) fwrite($file, $_POST['addition']);

    A questo punto, però, se hai scritto qualcosa la dimensione contenuta in $size è cambiata. Quindi riavvalora $size e poi fai
    $text = fread($file, $size);

    prima però di leggere dal file ricordati di posizionarti all'inizio del file perché fread inizia a leggere dalla posizione in cui si trova il puntatore.

    fclose($file);

    Prova adesso.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    7
    Ottimo, non è stato neanche necessario riassegnare $size, è stato sufficiente r+, forse era l'unica che nonb avevo ancora provato, pazzesco eheh.
    Grazie mucho!
    Shella.

  4. #4
    Nada!

    Ah, eh BENVENUTA!

  5. #5

    Re: Fopen e company

    Originariamente inviato da Shella
    Ciao a tutti, innanzitutto sono felice di essermi iscritto .....
    Ah, scusa BENVENUTO!


    P.S.: mi ha tratto in inganno il tuo nick.

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.