• User

    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


  • User

    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.


  • User Attivo

    il diverso credo si faccia <> e non != (in SQL)


  • Moderatore

    @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?


  • User Attivo

    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]