- Home
- Categorie
- Coding e Sistemistica
- Coding
- controllo foto su db
- 
							
							
							
							
							
controllo foto su dbUn 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]