PDA

View Full Version : [PHP] Dubbi sul maneggiar i file txt.


Ludo237
14-02-2011, 14:12
Ciao a tutti.
Allora ho creato un piccolo script php per creare una cartella e salvare un file all interno precedentemente uppato da utente.. ora l'ho aperto e l'ho letto :D.
vi posto il codice va


<?php
require 'classi/inc.config.php' ;
require 'classi/inc.login.php' ;

$dimensione = $_POST['dimensione'] ;

$username = $_SESSION['username'] ;

$file_name = date("d-m-Y") ."_" . date("H-i-s") . "_upload number_by_" . $username . "_.txt" ;

$tipi = array("text/plain");

if(!in_array($_FILES["testo"]["type"],$tipi))
{
$errore = "Il file non è di un tipo consentito, sono ammessi solo i seguenti: " . implode(",", $allowed_types) . "." ;
}
else
{
$directory = "file/$username" ;
if (!file_exists($directory) || !is_dir($directory) )
{
mkdir("file/$username/", 0777) ;
}

$upload_dir = "file/$username/$file_name" ;

if(copy($_FILES['testo']['tmp_name'],$upload_dir))
{
$apertura = fopen($upload_dir,"r") ;
$lettura = fread($apertura,filesize($upload_dir)) ;
$chiusura = fclose($apertura) ;
echo $lettura ;
}
}
?>


Ora vorrei capire se è possibile archiviare in un array quello che ho letto del file...

is it possible?
:help:

bobbytre
15-02-2011, 00:56
ma ogni elemento dell'array cosa vuoi che contenga ?
una riga del file ? una parola ? un carattere ?

alemoppo
15-02-2011, 18:12
In effetti non si capisce. Comunque, se vuoi che ad ogni riga sia associato un elemento dell'array (quindi ad esempio viene una cosa del genere:)


array[0] = 'Prima riga del file';
array[1] = 'Seconda riga del file';
array[2] = 'Terza riga del file';
array[3] = 'Quarta riga del file';
///etc etc...


Puoi usare direttamente la funzione file() (http://php.net/manual/en/function.file.php). Invece, se vuoi che ad ogni elemento dell'array ci sia una parola, la soluzione più veloce che mi viene in mente ora è quello di recuperare tutto il contenuto del file con la file_get_contents() (http://php.net/manual/en/function.file-get-contents.php) ed usare la explode() (http://php.net/manual/en/function.explode.php) con carattere separatore uno spazio (' ').

Ciao!

Ludo237
11-03-2011, 15:03
Scusatemi rispondo solo ora :doh: no ho risolto cmq appena riesco posto il codice

edosav
11-03-2011, 18:29
Ciao a tutti, mi scuso con Ludo237 se utilizzo il suo thread ma mi sembra che c'entri abbastanza :stordita:
Innanzitutto premetto che sono agli inizi, ho provato a buttare giù uno script per scrivere su un .txt dei dati mandati da un form ma inesorabilmente mi compare
Parse error: syntax error, unexpected T_VARIABLE in /home/edosavne/public_html/invio.php on line 35
nonostante siano 2 giorni che sto cercando l'errore :fagiano:
questo è il codice che ho scritto nella pagina di elaborazione
<?php
error_reporting(E_ALL);
$testo="";
$cognome=$_POST['cognome'];
$nome=$_POST['nome'];
$from=$_POST['from'];
$to=$_POST['to'];
$data=$_POST['data'];
$mail = $_POST['email'];
$comment=$_POST['comment']
$testo ="Cognome : {$cognome} Nome : {$nome} E-mail : {$mail} Da : {$from} A : {$to} Data : {$data} Commenti : {$comment} ";
(riga 35) $fp=fopen('data/richieste.txt','a+');
fwrite($fp,"{$testo} \n\n");
fclose($fp);
print "La richiesta di preventivo è stata inoltrata.<br>Sarete contattati al più prestoo.";

?>
Nella pagina che indirizza a questo codice ho scritto un form che tramite il post invia tutti i dati che ho inserito nello script, però quando arriva alla riga 35 mi da errore, credo si riferisca al puntatore fp ma come già detto sono veramente agli inizi e mi sfugge il mio errore....

alemoppo
11-03-2011, 23:49
Qui:

$comment=$_POST['comment']

Manca il punto e virgola ( ; ).

Poi, per le variabili, se non erro, non vanno tra { } , a meno che non siano direttamente elementi di array; ad esempio:

$stringa = "blablabla {$arr[0]}...";

E comunque, (personalmente), preferisco fare:

$stringa = 'blablabla = '.$arr[0].'...';
perché nei singoli apici, l'interprete non deve sostituire (e quindi guardare se ci sono) le eventuali variabili all'interno della stringa. Quindi l'esecuzione è (infinitesimamente) più veloce ;)

Ciao!

edosav
12-03-2011, 12:51
Grazie mille!