Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35

Discussione: confronto dati

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929

    confronto dati

    ciao a tutti,

    mi dareste una mano a costruire un piccolo script che controlla le immagini.

    Mi spiego meglio,
    ho una cartella immagini php dovrebbe leggere le immagini presenti e controllare se nella tabella immagini del database esiste quel nome se esiste ok altrimenti mi avverte e cancella l'immagine

    ho pensato di fare questo perchè ho circa 25.000 file di immagini e dovrei controllarle a mano

    grazie mille

  2. #2
    Allora fai la query dalla tabella database.
    Usi un ciclo for per scandire ogni riga del risultato.
    All'interno di esso fai un controllo del genere:

    if (file_exists("../percorso/".$img_old)) {
    unlink("../percorso/".$img_old);
    }

    Magari prima della funzione unlink che cancella il file, ci metti un output che chieda conferma.

  3. #3
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    ciao

    potresti leggere le immagini contenute nella cartella con readdir,
    all'interno del ciclo while poi fai una select con il nome del file all'interno del db. Se il numero di righe estratte dal db è uguale a 0 vuol dire che l'immagine non esiste nella tabella e la cancelli con unlink.
    Es.:
    Codice PHP:
    if ($handle opendir('.')) {
        while (
    false !== ($file readdir($handle))) { 
            if (
    $file != "." && $file != "..") { 
                
    $sql "select nome_img from tabelle where nome_img = '$file';";
                
    $res mysql_query($sql);
                if(
    mysql_num_rows($res) == 0){
                   
    unlink($file);
                }
            } 
        }
        
    closedir($handle); 

    ho scritto il codice ma è per darti un'idea

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    grazie mille secondo voi cosi va bene

    codice:
    <?php require_once('../../Connections/conn.php');
     if ($handle = opendir('"../../public/images')) { 
        while (false !== ($file = readdir($handle))) {  
            if ($file != "." && $file != "..") {  
                $sql = "select * from listino where articolo = '$file';"; 
                $res = mysql_query($sql); 
                if(mysql_num_rows($res) == 0){ 
                   // qui sposto l'immagini dentro "../../public/fuoriuso" e poi la cancello
    			   rename("../../public/images/$file","../../public/fuoriuso/$file"); 
    			   unlink("../../public/images/$file"); 
                }
            }  
        } 
        closedir($handle);  
    }
    ?>
    ho paura ad usarlo perchè poi è un pò impossibile tornare indietro

  5. #5
    se hai paura fai prima un test facendolo lavorare senza fare modifiche. magari anzichè fargli fare il rename e l'unlink, fatti visualizzare sul browser le stringhe:

    "../../public/images/$file"
    "../../public/fuoriuso/$file"

    se tutto corrisponde, la lanci in versione distruttiva.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    ops ricevo questo errore!!
    codice:
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\appserv\www\incisoria\admin\prodotti\controlla.php on line 7
    
    Warning: rename(../../public/images/1010.jpg,../../public/fuoriuso/1010.jpg): No such file or directory in c:\appserv\www\prodotti\controlla.php on line 9

  7. #7
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    hai aperto una conessione al db?
    se vuoi usa questa funzioncina piccola piccola
    Codice PHP:
    //crea la connessione al db
    function dbconnect ($dbname,$user,$pwd,$host) {
        if (!
    mysql_connect($host,$user,$pwd))
        {
            echo 
    "could not connect to database\n";
            exit;
        }
        
    mysql_select_db($dbname);
    }

    dbconnect("mio_db","mio_user","mia_pwd","mio_host"); 


    poi segui il consiglio di OhMyGod, così se non fai errori irreversibili

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    il file di connessione già l'ho fatto e funziona per tutti gli altri script

    codice:
    $hostname_conn = "localhost";
    $database_conn = "Sql71161_1";
    $username_conn = "";
    $password_conn = "";
    $conn = mysql_pconnect($hostname_conn, $username_conn, $password_conn) or trigger_error(mysql_error(),E_USER_ERROR);

  9. #9
    codice:
    if ($handle = opendir('"../../public/images')) {
    mi pare ci siano delle virgolette improprie....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    la query ti restituisce qualcosa?

    quell'errore dipende dal fatto che la variabile $res è un argomento non valido

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.