Visualizzazione risultati 1 fino 18 di 18

Discussione: PHP per scaricare il contenuto di una textarea in .txt?

  1. #1
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Unhappy PHP per scaricare il contenuto di una textarea in .txt?

    Ciao a tutti, avrei bisogno del vostro aiuto. Praticamente vorrei che tramite un pulsante (submit o come volete voi) si possa scaricare in formato ".txt" o ".html" il contenuto scritto all'interno di un textarea. Ho cercato per mari e per monti ma senza ottenere i risultati che mi aspettavo. Mi potreste suggerire qualche link o direttamente il codice competo per far ciò? Un abbraccio a tutti e spero vivamente che qualcuno di voi sia in grado di soddisfare questo mio problema.

    Saluti ;).

  2. #2
    Guest

    Predefinito

    ti do la traccia

    1) nella pagina dove sta la textarea ci piazzi uno script javascript che al clic su un pulsante "scarica" viene invocato. 'sto script recupera il testo della textarea e lo passa a uno script PHP mettendolo come parametro di una richiesta GET o POST. Per come implementare la richiesta GET o POST ti consiglio una metodica AJAX (trovi in rete un mare di esempi). Se il testo è lunghetto ti conviene fare la richista comunque come POST.

    2) lo script PHP mette il testo ricevuto nella variabile $testo (o usa direttamente $_REQUEST["nomedelparametro"]) e lo spedisce forzandone il download con una cosa del genere

    Codice PHP:
    header("Content-Type: application/force-download");
    header("Content-Disposition: attachment; filename=\"nomechevuoidarealfile.txt\");
    echo
    $testo;
    sono andato un po a braccio, ma dovrebbe funzionare
    Ultima modifica di pastamadre : 15-12-2012 alle ore 22.01.55

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,791

    Predefinito

    Citazione Originalmente inviato da topdeskle Visualizza messaggio
    Ho cercato per mari e per monti ma senza ottenere i risultati che mi aspettavo.
    Una buona query di ricerca è "forzare download php", sia nel forum, sia su google.

    @pastamadre: occhio ai doppi apici .

    Ciao!
    Ultima modifica di alemoppo : 15-12-2012 alle ore 22.14.18

  4. #4
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Uhm, non voglio permettere di scaricare codici PHP, ma semplicemente un testo scritto in HTML all'interno di una textarea con un bottone :D. Se mi passate link diretti o guide, ne sarei fiero.

    Saluti ;).

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,791

    Predefinito

    Crei un form con una textarea che rimanda ad una pagina PHP.

    Se il form è una cosa del tipo:
    Codice HTML:
    <form action="download.php" method="post">
    <textarea name="testo"></textarea>
    <input type="submit" value="scarica">
    </form>
    La pagina download.php dovrà essere una cosa del tipo:

    Codice PHP:
    <?php
    header
    ('Content-disposition: attachment; filename=gen.txt');
    header('Content-type: text/plain');
    echo
    $_POST['testo'];
    ?>
    http://stackoverflow.com/questions/4...force-download

    Ciao!
    Ultima modifica di alemoppo : 17-12-2012 alle ore 13.23.19

  6. #6
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Okay, funziona, ma solo se ho un solo submit. Il problema è che ho più bottoni e quindi se clicco su "scarica", mi da un file vuoto. Cosa mi consigliate? Avrei pensato ad un OnClick, ma non so come si fa :( . Fatemi sapere, ciao :D.

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,791

    Predefinito

    Più bottoni??

    Potresti usare .submit() (ovviamente funziona solo con js abilitato)

    Ciao!
    Ultima modifica di alemoppo : 17-12-2012 alle ore 21.15.26

  8. #8
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Nel senso che se ho questi tipi di bottoni:


    Se ci sono tutti quei bottoni sotto la textarea (button) non funziona il tasto "scarica" e mi scarica solo un file .txt vuoto. Se invece c'è solo e unicamente il pulsante "scarica", il codice che mi hai passato (completo) all'inizio, funziona a meraviglia: la mia questione di adesso è= come faccio a fare funzionare il pulsante "scarica" senza togliere tutti gli altri? Ho pensato che forse un onClick potrebbe migliorare le cose, ma non saprei se è veramente così e se lo è come fare. Fammi sapere.

    Ciao e buone feste :)
    Ultima modifica di topdeskle : 18-12-2012 alle ore 11.01.21

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,791

    Predefinito

    Devi usare .submit() come ti ho scritto sopra. Il form può avere solo un input type="submit". Gli altri li devi emulare con l'onClick dove dentro fai eseguire submit, come c'é anche nel link che ti ho passato.

    Buone feste.

    Ciao!

  10. #10
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Codice:
    <input type="submit" onclick=".submit()" value="Submit form">
    Ho messo questo, ma non funziona

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,791

    Predefinito

    Devi leggere il funzionamento nel link che ho postato sopra. Non ha senso utilizzarlo così.

    Ciao!

  12. #12
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Ciao, ho inserito lo script, ho impostato il tipo di form nello script e poi ho inserito i submit ma continua a non funzionare. Sbaglio qualcosa? Grazie e ciao :D.

  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,791

    Predefinito

    Non devi "inserire lo script". Devi capire come funziona, e quindi adattarlo al tuo caso.
    Chiedi pure le righe / i comandi che non capisci.

    Ciao!

  14. #14
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Io di javascript ne capisco poco e niente ...se hai voglia mi potresti spiegare nei dettagli ?


    Grazie

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,791

    Predefinito

    Prendendo l'esempio:
    Codice HTML:
    <html>
    <head>
    <script>
    function formSubmit()
    {
    document.getElementById("frm1").submit();
    }
    </script>
    </head>
    <body>
    
    <form id="frm1" action="form_action.asp">
    First name: <input type="text" name="fname"><br>
    Last name: <input type="text" name="lname"><br>
    <input type="button" onclick="formSubmit()" value="Submit form">
    </form>
    
    </body>
    </html>
    Ovvero, definisce la funzione "formsubmit()", e la richiama quando si preme il pulsante (ovvero, all'onClick).
    Nota che non era necessario creare una funzione, ma si poteva anche scrivere direttamente il codice della funzione nell'onClick. Questo complica un attimo gli apici, ma è meno codice da scrivere.

    Dentro la "formSubmit()", preleva il form tramite id: se noti, il form ha:
    Codice:
    id="frm1"
    Quindi, con
    Codice:
    document.getElementById("frm1")
    preleva il form tramite l'id. Poi richiama il metodo del form .submit() che procederà ad inviare i dati del form.
    Si potrebbe prelevare il form anche con:
    Codice:
    document.forms[0]
    , dove forms[] è un array dove son contenuti tutti i form della pagina. Se hai solo un form, sarà nella posizione 0, quindi forms[0].
    È possibile anche prelevare il form attribuendogli un name, quindi con:
    Codice:
    document.nomeform


    A te penso che manchi l'id del form, se hai copiato lo scrpt sopra.

    Ciao!
    Ultima modifica di alemoppo : 18-12-2012 alle ore 16.03.22

  16. #16
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Codice:
    <script>
    function formSubmit()
    {
    document.getElementById("texteditorform").submit();
    }
    </script>
    <form id="texteditorform" name="formeditor" action="cssejs/downloadhtmlcodepreview.php" method="POST" target="_blank">
    <textarea id="texteditorhtml" name="editorhtml" cols="65" rows="12"></textarea>
    <input type="button" id="azioni" value="Vedi il risultato" onclick="verHTML(this.form)">
    <input type="button" onclick="copia('formeditor.editorhtml')" value="Seleziona" name="sele">
    <input type="button" onclick="formSubmit()" value="Submit form">
    </form>
    Ciao, ho messo quei codici in quel modo ma non vanno, mi danno sempre un file vuoto.

  17. #17
    Guest

    Predefinito

    La pagina cui ti riferisci è http://topdeskle.altervista.org/htmlcodepreview.php?

    Puoi fare una prova?

    Al posto di

    Codice PHP:
    <input type="button" onclick="formSubmit()" value="Submit form">
    metti

    Codice PHP:
    <input type="submit" value="Submit form">
    crea (o sostituisci) il file cssejs/downloadhtmlcodepreview.php con

    Codice PHP:
    <?php
    header
    ('Content-disposition: attachment; filename=gen.txt');
    header('Content-type: text/plain');
    echo
    $_POST['editorhtml'];
    ?>
    e poi prova a fare click su SUBMIT FORM
    Ultima modifica di simpleticket : 18-12-2012 alle ore 19.18.43

  18. #18
    topdeskle non è connesso Utente giovane
    Data registrazione
    12-03-2012
    Messaggi
    42

    Predefinito

    Non capisco come sia possibile dato che l'ho fatto come hai detto tu ma non ha funzionato, adesso ho riprovato e ri-funziona. Grazie simpleticket :D.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •