Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    35

    Leggere campi da form e salvarli in .txt

    Ciao a tutti, sono niubbissimo del php e inizio adesso con le prime guide ed esercizietti banali...
    Mi sono subito impantanato sul come riuscire a creare un elenco in un file txt, in cui gli utenti di un sito possano registrarsi indicando un paio di dati, ad esempio, nome, email e città di provenienza:

    File clientiMailingList.htm:

    codice:
    <form method="POST" action="inserisci.php">
        <p align="center">NOME <input type="text" size="20" name="nome"></p>
        <p align="center">E-MAIL <input type="text" size="20"name="email"> </p>
        <p align="center">CITTA' <input type="text" size="20"name="citta"></p>
        <p align="center"><input type="submit" name="B1"value="Registrati"></p>
    </form>

    File inserisci.php:

    codice:
    <?php
        $textfile = fopen("clientiMailingList.txt","a");
        $varnome = $_POST["nome"];
        $varemail = $_POST["email"];
        $varcitta = $_POST["citta"];
        $datiform = "$varnome | $varcitta | $varemail \n";
        fwrite($textfile, $datiform);
        echo "Grazie per esserti registrato"
    ?>
    Queste sono le parti di codice dei 2 programmini e funzionano abbastanza correttamente, tranne per il fatto che nel file .txt non mi ritrovo poi i dati inseriti nel form ma solo i caratteri separatori "|"
    Ho riguardato il codice e gli esempi del libro mille volte ma nn trovo l'errore... Chi mi sa dare un'indicazione? Grazie e ciao a tutti!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ho provato il tuo codice e funziona correttamente.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    35
    Mah... forse ero fulminato ieri sera... ho cancellato tutti i file da server e li ho ricaricati e in effetti funziona correttamente...
    Spinto dall'entusiasmo ho provato a modificare il codice adattando un ciclo while preso da un altro esempio per fare in modo che il programa inserisca prima dei campi inseriti dall'utente, il campo "ID" in maniera progressiva:

    es: ID|NOME|EMAIL|CITTA
    1|MARCO|MROSSI@ABC.IT|MILANO

    codice:
    <?php
    $textfile = fopen("clientiMailingList.txt","a");
    while ($rigafile = fgets($textfile,1024)) {
    $campiriga = explode("|", $rigafile);
    $id = $campiriga[0];
    $id = $id + 1;
    }
    
    $varnome = $_POST["nome"];
    $varemail = $_POST["email"];
    $varcitta = $_POST["citta"];
    $datiform = $id . "|" . $varnome . "|" . $varcitta. "|" . $varemail . "\n";
    fwrite($textfile, $datiform);
    echo "Grazie per esserti registrato"
    ?>
    Ho dovuto inizializzare il file di testo con una prima riga di ID = 1 manualmente per dare un senso alla prima parte del codice, ma ciononostante, il campo ID viene creato nel file txt ma resta vuoto; se invece sposto la riga $id = $id + 1 subito dopo la parentesi graffa il campo ID viene settato ed inserito sempre = 1 in ogni riga inserita dall'utente...
    Mi servirebbe un debugger per vedere riga dopo riga come cambia il valore delle variabili... ne esistono per il php?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Il problema è che apri il file in sola scrittura usando a, quindi fgets() fallisce la lettura e non legge nulla, devi usare a+.
    Codice PHP:
    <?php
    $textfile 
    fopen("clientiMailingList.txt","a+");

    while (
    $rigafile fgets($textfile,1024)) {
        
    $campiriga explode("|"$rigafile);
        
    $id $campiriga[0];
    }
    $id++; //così l'incremento lo fai solo sull'ultimo id nel file invece di farlo ad ogni ciclo e poi sovrascriverlo

    $varnome $_POST["nome"];
    $varemail $_POST["email"];
    $varcitta $_POST["citta"];
    $datiform $id "|" $varnome "|" $varcitta"|" $varemail "\n";
    fwrite($textfile$datiform);
    echo 
    "Grazie per esserti registrato";
    ?>

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    35
    Grazie 1000!
    Toglimi una curiosità, "a+" sta per "a+r" ?
    Se si, vale anche il contrario?

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.