ciao, mi trovo di fronte ad un dubbio su file...
io eseguo un operazione di per cancellare delle righe da un file .
La mia procedura è quella di :
contare le righe presenti sul file
esploderle una ad una
verificare il dato inserito dall'utente con quello presente in una cella dell'array che contiene la riga del file.
se la cella corrisponde salvo un valore in un altro array
alla fine di tutte le mie verifiche sovrascrivo il file che ho con quello nuovo (ossia quello contenente tutte le righe meno quella appena cancellata).
lo script funziona bene, cancella la riga e sovrascrive il file...
Ho notato che quando esiste solo una riga nel file lo script mi segnala un errore (dal file log che vado a scrivere e dalla mail che mi arriva), ma questo non è un errore calcolato nel senso che la riga la cancella ma la funzione fwrite()mi restituisce false.
Qualcuno sa il perchè ?
vi posto il codice
Codice PHP:
else if ($cancella == "si"){
$array_f = $_SESSION['tabellare'];//carico nella variabile i valori di confronto
//--->apro il file per cancellare la riga********************************************
$file ="ciccio.csv";//determino la path del file + nome file
//echo "nome files = " .$file."
";
$leggo = file ($file);
$leggo_righe = file($file);//leggo ed inserisco le righe del file in un array
$elements = count($leggo_righe);//conto le righe presenti
for ($i = 0 ; $i < $elements ; $i++) {//ciclo per quante righe sono presenti nel file
$esplosione = explode(";", $leggo_righe[$i]);//esplodo le singole righe in un array
$contoesplosioni = count ($esplosione);
for ($c = 0 ; $c < $contoesplosioni; $c++){//ciclo per quanti sono i valori presenti nell'esplosione
if ( ($esplosione[0] == $idanag)&&($esplosione[1] == $numero) ) {//controllo se i campi sono presenti nell'array di controllo
$str="";//se si creo una variabile vuota
}else {//oppure
$str = implode(";", $esplosione);//inserisco nella variabile il valore della riga esplosa ricomponendola con il carattere separatore;
}
$leggo_righe[$i] = $str;//sovrascrivo nella variabile i valori appena controllati
} //chiudo ciclo $c
} //chiudo il ciclo $i
$apro_sovrascrittura = fopen($file, "w");//apro il file in modalità scrittura partendo dalla prima riga per far sovrascrivere
foreach ($leggo_righe as $sovrascrivo) {//creo un ciclo per l'array modificato
$sovrascrittura = fwrite($apro_sovrascrittura, $sovrascrivo);//sovrascrivo il vecchio file con le nuove righe
}//esco da foreach
//--->Fine eliminazione riga nel file***************************************************
$sql_delete = "DELETE";//eseguo il delete per eliminare il record nel database
fclose ($apro_sovrascrittura);
qui ovviamente ce il modulo di invio mail se per caso la funzione restituisca false
Codice PHP:
if (!$sovrascrittura){
/*
*invio la mail agli admin e setto il file log con i dettagli
*/
}
grazie anticipatamente