Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Creare e scrivere un file txt

    Dunque, prima di porre la solita domanda banale mi sono letto questo : Fopen. Spulciando in giro ho anche trovato un esempio semplice con il quale scrivere in un file txt gia esistente dei valori presi da un form.

    Esempio :

    Codice PHP:
    <html>
        <body>
            <form method="post" action="insert2.php">
                <fieldset>
                    <legend>Inserimento dati</legend>
                    Nome: <input type="text" name="nome" />
                    Cognome: <input type="text" name="cognome" />
                    E-mail: <input type="text" name="email" />
                </fieldset>
                <input type="submit" value="Calcola">
            </form>
        </body>
    </html>

    // seconda parte

    <?

    $nome 
    $_POST['nome'];
    $cognome $_POST['cognome'];
    $email $_POST['email'];
    $somecontent $nome."-".$cognome."-".$email."
    "
    ;
    $somecontent .= "\r\n";

    $myFile "test.txt";
    $fh fopen($myFile'at');
    fwrite($fh$somecontent);

    ?>

    Sino a qui tutto chiaro. Il mio problema e' un altro.

    Io dovrei scrivere, in un file txt NON ESISTENTE ( me lo devo creare con php quindi ), un'elenco di mail che sono il risultato di una ricerca precedente fatta in un form.

    Per spiegare piu attentamente la procedura :

    1) l'utente trova un form di ricerca ed inserisce le condizioni.
    2) a video vengono visualizzati una serie di risultati ( in questo caso sono delle mail, ma poco importa)
    3) cliccando un pulsante io devo poter creare un file txt e scriverci dentro l'elenco di risultati ricavati dalla query di ricerca ( che ho gia effettuato ).


    Come posso fare ?? i punti 1 e 2 funzionano gia perfettamente ( se volete vi posto la query di ricerca )

    Grazie a tutti dell'aiuto.

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, hai letto le varie opzioni?

    $myFile = "test.txt";
    $fh = fopen($myFile, 'w'); in questo modo se il file che stai cercando di aprire non esiste lo crea.

  3. #3
    Ecco, sono un lesso, questa cosa mi era sfuggita. L'ho provata in locale e funziona benissimo ( con l'esempio del modulo che ho postato prima ). Ora non mi resta che recuperare le voci dei campi che mi interessano e scriverle nel file. Avevo pensato di fare cosi, ma mi da' errore :


    Codice PHP:
    <?php

    if (!isset variecondizionicondizioni ) {

    //cut cut, qui c'è il form con il quale seleziono i record che mi interessano, 
    //lo ometto in quanto funziona bene ed e' il classico form che punta alla stessa pagina.
    //Se i campi del form sono vuoti appare il form di ricerca, altrimenti ...

    }

    else {

    //recupero i dati dal form, siccome ne ho molti faccio finta di limitare la ricerca a 3 condizioni

    $_POST['economiamenagement'] = isset($_POST['economiamenagement']) ? $_POST['economiamenagement'] : '';
    $_POST['sociologia'] = isset($_POST['sociologia']) ? $_POST['sociologia'] : '';


    //faccio uno query generica selezionando tutti gli utenti

    $ricerca "SELECT utenti.id, cognome, nome, mail, ente 
    FROM utenti JOIN interessi ON utenti.id = interessi.id WHERE utenti.id !='0' "
    ;
     

    //creo un array con le clausule di ricerca

    $condizioni = array(); 

    if(!empty(
    $_POST['economiamenagement'])) 
       
    $condizioni[] = " AND Economia_Management = '" $_POST['economiamenagement'] . "'"
    if(!empty(
    $_POST['sociologia'])) 
       
    $condizioni[] = " AND Sociologia = '" $_POST['sociologia'] . "'"
    if(!empty(
    $_POST['comunicazione'])) 
       
    $condizioni[] = " AND Comunicazione = '" $_POST['comunicazione'] . "'";

    //ora aggiungo alla query generica le condizioni che l'utente ha specificato

    $ricerca $ricerca implode($condizioni);
    $result mysql_query($ricerca) or die(mysql_error()) ;
    $rows mysql_num_rows($result);


    //adesso stampo a video l'elenco di mail che mi interessano, quelle venute fuori dalla ricerca

    while($row mysql_fetch_assoc($result)) {
    echo <<<TAB
    $row[mail]

    TAB;



    }

    //qui devo cercare di inserire la funzione del modulo che ho postato nel primo post.

    echo <<<PULS
    <input type="submit" name="scarica" value="Scarica" onsubmit="insert2.php"/>
    PULS;

    }

    ?>

    Il guaio e' che in questo secondo file a cui vado a puntare ho provato a mettere le condizioni di ricerca presenti sopra, ma mi viene fuori una serie di errori indefiniti ...

    Come posso fare ? Secondo me la soluzione migliore sarebbe inserire una funzione nella pagina precedente ( visto che c'è gia la query di ricerca ) e poi dirgli di salvarla in qualche modo .. ma non ho la minima idea su come procedere.
    :master:


    Grazie ancora a tutti per l'aiuto

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    che errori vngono visualizzati?

  5. #5
    codice:
    Notice: Undefined index: nome in C:\wamp\www\dbguerini\insert2.php on line 3 
    Notice: Undefined index: cognome in C:\wamp\www\dbguerini\insert2.php on line 4 
    Notice: Undefined index: email in C:\wamp\www\dbguerini\insert2.php on line 5
    Io avevo pensato ad una cosa cosi per il file, ma non mi e' chiaro se riesce a prendere i valori o meno dalla pagina precedente.

    Codice PHP:
    <?php 

    while($row mysql_fetch_assoc($result)) {

    $somecontet$row["mail"];
    $somecontent .= "\r\n"
    }

    $myFile "utenti_mailing_list.txt"
    $fh fopen($myFile'w'); 
    fwrite($fh$somecontent); 

    ?>

  6. #6
    Ma penso che sia proprio il ragionamento che non torna. Nel senso :

    Codice PHP:
    //qui devo cercare di inserire la funzione del modulo che ho postato nel primo post. 
    echo <<<PULS 
    <input type="submit" name="scarica" value="boh" onsubmit="civuoleunafunzione()"/>
     
    PULS
    Secondo me e' necessario mettere in questa stessa pagina una funzione che richiama il campo mail dalla query fatta che mostra i risultati a video e che va ad inserire questo elenco di valori nel file txt. Della serie :

    1) Prendi la query precedente
    2) while($row = mysql_fetch_assoc($result)) , ossia finche sono dentro quella query e row e' l'associazione per i singoli campi
    3) Prendi il campo mail ed eventualmente inseriscilo in un array
    4) apri il file txt o crealo se non esiste
    5) scrivi sul foglio txt ogni elemento dell'array

    In particolare il passaggio :

    Codice PHP:
    $somecontet$row["mail"]; 
    $somecontent .= "\r\n";
    // secondo me manca un implode dopo il "\r\n" perche se ci sono 4 valori di row['mail'] 
    // comunque me ne scriverebbe solo uno in questo caso 

  7. #7
    Sono riuscito a risolvere. Provo a postare come ho fatto visto che funziona tutto perfettamente e magari a qualcuno potrebbe servire :


    Codice PHP:
    <?php 
    // Qui mi carico l'array che ho creato nel form precedente. L'array contiene già l'elenco delle // mail che voglio scrivere nel txt

    $elencodellemail $_POST['elencomail'];

    //Questo mi serve per il ciclo for
     
    $numero count($elencodellemail)-1;

    //Imposto la variabile che contiene il nome del file che vado a creare e la directory in cui 
    //lo voglio mettere

    $myFile "../estrazioni_mailing_list/utenti_mailing_list.txt";

    //Se il file esiste ci scrivo sopra, altrimenti lo creo con il nome stabilito in myFile

    $fh fopen($myFile'w'); 

    for (
    $i=0$i $numero$i++) {

    // Se la mail che sto prendendo in considerazione non è vuota allora la scrivo nel file txt, altrimenti 
    //non faccio nulla ed incremento il contatore

    if ($elencodellemail[$i] != '') {
    fwrite($fh$elencodellemail[$i]);
    fwrite($fh";\r\n");
    }

    }






    ?>

  8. #8
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    errore...
    Codice PHP:
    $fh fopen($myFile'w'); 
    cerca dio scrivere su un file esistente.

    Codice PHP:
    $fh fopen($myFile'w+'); 
    forza la creazione del file qual' ora non esistesse...

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  9. #9
    Nel mio caso penso possa andare bene anche " w " . Entrambi cercano di crearlo se non esiste, solo che w+ e' fatto anche per leggere dal file, mentre w no.

    w:

    codice:
    Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
    w+ :

    codice:
    Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
    Comunque grazie per l'osservazione, sicuramente dovro' usare anche w+ in seguito !

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.