Mi servirebbe un consiglio sull'eliminazione di file ormai obsoleti all'interno di una specifica cartella.
Sostanzialmente la situazione è questa.
Ho due tabelle MySql: una File, all'interno della quale c'è tutta la lista di file a cui è associato un ID; una seconda chiamata File_Utente, all'interno della quale c'è l'ID del File associato a un utente.
Come prima cosa stavo pensando di creare una lista che mi facesse visualizzare tutti i FILE che non sono più associati a FILE_UTENTE.
Codice PHP:
SELECT File.IDFile, File.Nome
FROM File
LEFT JOIN File_Utente
ON File.IDFile = File_Utente.IDFile
WHERE File_Utente.IDFile IS NULL
ORDER BY File.Nome ASC
Con un ciclo while stampo l'elenco a cui associo una checkbox per selezionare:
Codice PHP:
<input type="checkbox" name="item[]" value ="<?=$rs["IDFile"] ?>">
[...]
<input type="submit" name="cancellaselezione" class="ares" Value="Cancella selezione"></form>
Da qui il mio dubbio: come posso cancellare le immagini, presenti nella cartella /immagini/file, di questi file da cancellare?
Io stavo pensando:
Codice PHP:
if ($op=="cancellaselezione") {
$basedir = 'immagini/file';
$fileregex='/\.(gif)$/';
f ($basedir and is_dir($basedir) and $fileregex) {
$all = opendir($basedir);
while ($file = readdir($all)) {
if (preg_match($fileregex,$file)) {
$MySql = "SELECT * FROM File WHERE Img = '".pars($file)."' AND IDFile = $IDFile";
$Result = mysql_query($MySql);
if (!($rs = mysql_fetch_array($Result))) {
unlink($basedir.'/'.$file);
echo '<font color=red>';
echo $file;
echo ' cancellato!</font>';
}
$rs->close;
echo '<br>';
}
}
}
closedir($all);
unset($all);
In questo modo, però, mi cancella tutti i file in GIF.
E seconda cosa: come posso ampliare $fileregex anche ad altri formati (png, jpg, jpeg ecc)?