• User

    Unlink per la cancellazione dei file

    Salve a tutti, ho problemi con la funzione unlink per la cancellazione dei file.
    La situazione è questa: un form di upload permette all'utente di caricare i file che vengono spostati nella cartella giusta con la funzione move_uploaded_file. I nomi dei file caricati vengono registrati nella tabella "file" del db sql che associa ad ognuno di essi un identificatore univoco (auto increment). Prima di effettuare lo spostamento viene ovviamente generato un nuovo nome per il file (diverso da tutti gli altri) sfruttando l'auto increment generato dal db attraverso la funzione mysql_insert_id. Il nuovo nome viene salvato nella tabella "file". In termini di php:

    [PHP]$file_name=$_FILES["filename"]["name"];
    $data=date("Y-m-d");

    $query="INSERT
    INTO files (nome, nuovoNome, data)
    VALUES ('$file_name', 'temp', '$data')";

    mysql_query($query) or die ("Query non valida: ".mysql_error());

    $id=mysql_insert_id(); //auto increment generato dalla query precedente
    $new_file_name=$id.$file_name;

    $query2="UPDATE files
    SET nuovoNome='$new_file_name'
    WHERE id='$id'";

    mysql_query($query2) or die ("Query non valida: ".mysql_error());

    move_uploaded_file($_FILES["filename"]["tmp_name"], $dir.'/'.$new_file_name);[/PHP]

    Fatto questo, se provo a cancellare uno qualunque dei file caricati con la funzione unlink(percorso/nuovoNome) non succede nulla. Il nuovoNome viene prelevato dalla tabella "file". Ho provato a usare sia il percorso assoluto sia quello relativo oppure a spostarmi nella cartella giusta con chdir e poi a invocare la unlink ma il risultato è sempre lo stesso.
    Grazie mille per il vostro aiuto, ciao.


  • ModSenior

    Ciao Beetlejuice,

    La funzione restituisce TRUE o FALSE?


  • User

    Grazie per la pronta risposta Darkita ma sono un imbecille: la unlink funziona benissimo ma avevo dimenticato di incrementare il contatore del ciclo while che richiama la unlink sui nomi dei file da cancellare memorizzati in un array (che usa lo stesso contatore). E' che 90 volte su 100 uno usa il for e poi capitano ste cose. Grazie ancora e scusa per il tempo perso.