- Home
- Categorie
- Coding e Sistemistica
- PHP
- controllo foto su db
-
controllo foto su db
Un saluto a tutti ! Allora ho uno script che mi elimina una news passata per GET dal database e anche la foto correlata alla news è sempre passata per GET (es. foto1.jpg). Ora però devo riuscire a controllare se la foto della news serve per altre news oppure solo per questa, perchè se serve non bisogna cancellarla altrimenti si. Lo script che uso per cancellare tutto è :
$delete = mysql_query("DELETE FROM news WHERE idnews=$_GET[id]",$db); $file=$_GET[file]; $url="../moduli/news/img/$file"; $result = unlink($url); ?>
Spero di essermi spiegato in poche parole se l'immagine serve ancora devo cancellare solo la news altrimenti in caso contrario devo cancellare news + foto.
P.S. il db è strutturato con la tabella che si chiama news, poi le foto sono nel campo foto
-
Ho provato così ma non funziona perchè ????
$delete = mysql_query("DELETE FROM news WHERE idnews=$_GET[id]",$db); $file=$_GET[file]; $result = mysql_query("SELECT foto FROM news WHERE idnews != $_GET[id] ",$db); while ($record=mysql_fetch_array($result)){ if ($record['foto'] = $file){ ?> <SCRIPT> window.opener.location.reload(); window.close();</SCRIPT> <? exit(); } } $url="../moduli/news/img/$file"; $result = unlink($url); ?>
Praticamente la prima riga elimina la news, poi per quanto riguarda la foto la 4° riga va a prendere nel db tutte le foto lasciando stare la news che stiamo eliminando ora (ciò dovrebbe farlo con idnews != &_GET[id] )poi col ciclo while se trova una corrispondenza finisce l'esecuzione dello script e chiude la finestra altrimenti se nessunaltra news utilizza quell'immagine viene eliminata.
Il problema è che caricando una foto solo su una news lo script mi cancella solo la news e la foto la lascia sulla cartella(perchè secondo me nel ciclo while mi ci mette anche la news che sto cancellando quindi $record['foto'] = $file risulterà sempre vera.
-
il diverso credo si faccia <> e non != (in SQL)
-
@r3dd3vil said:
Ho provato così ma non funziona perchè ????
$delete = mysql_query("DELETE FROM news WHERE idnews=$_GET[id]",$db); $file=$_GET[file]; $result = mysql_query("SELECT foto FROM news WHERE idnews != $_GET[id] ",$db); while ($record=mysql_fetch_array($result)){ if ($record['foto'] = $file){ ?> <SCRIPT> window.close();</SCRIPT> <? exit(); } else{ $url="../moduli/news/img/$file"; $result = unlink($url); }} ?>
Praticamente la prima riga elimina la news, poi per quanto riguarda la foto la 4° riga va a prendere nel db tutte le foto lasciando stare la news che stiamo eliminando ora (ciò dovrebbe farlo con idnews != &_GET[id] )poi col ciclo while se trova una corrispondenza finisce l'esecuzione dello script e chiude la finestra altrimenti se nessunaltra news utilizza quell'immagine viene eliminata.
Il problema è che caricando una foto solo su una news lo script mi cancella solo la news e la foto la lascia sulla cartella(perchè secondo me nel ciclo while mi ci mette anche la news che sto cancellando quindi $record['foto'] = $file risulterà sempre vera.ehm... != si può fare anche così
per unlink prova a verificare se funzia con questo script
[php]
<?php
$nome_file="miofile.txt.old";//qui devi mettere il nome del tuo file ^_^
if (!file_exists($nome_file)) {
echo "Spiacente, non posso trovare il file $nome_file";
} else {
if (!unlink($nome_file)) {
echo "$PHP_SELF: Errore, impossibile cancellare il file $nome_file";
echo "Controllalo!";
} else {
echo "Il file $nome_file è stato cancellato";
}
}
?>
[/php]
ed inoltre non ti dà nessun errore visivo?
-
Per logica questo che hai scritto tu:
[PHP]
$result = mysql_query("SELECT foto FROM news WHERE idnews != $_GET[id] ",$db);
while ($record=mysql_fetch_array($result)){
if ($record['foto'] = $file){
[/PHP]Andrebbe fatto direttamente nella query, con una cosa tipo questa:
[PHP]
$result = mysql_query("SELECT foto FROM news WHERE idnews != $_GET[id] AND foto = '$file' ",$db);
if ($record=mysql_fetch_array($result))
; // TROVATO UN RECORD
[/PHP]