Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Carimento immagini in db

    Ciao a tutti, sono nuova su questo forum

    Sto creando un form che mi permetta di inserire nel db una serie di dati e alcune immagini. Le immagini le uploado in una cartella e nel db rimane il nome dell'immagine.
    Ho cominciato con due immagini, il problema è che mi carica solo la seconda immagine, e mette il nome dell'immagine in tutti e due i campi del db

    Questo il codice che sto usando:
    codice:
    $errors = check($_REQUEST['record']); 
    		$errors2 = check($_REQUEST['record']); 	
    	if ($errors != "" && $errors2 != "") { 			
    print_form("new_element", $_REQUEST['record'], $errors, $errors2); 		
    } else {   		
    $errors = ""; 		
    	if(trim($_FILES['Immagine']['tmp_name']) != "" && trim($_FILES['Immagine']['tmp_name']) != "none") { 		
    	$ImageName = time(); 			
    	$ImageName .= ".jpg"; 				 				
    $errors = CreateImage($_FILES['Immagine']['tmp_name'], $img_path.$ImageName, $img_width, $img_height, $jpegquality, 1); 			
    } 			
    
    $errors2 = ""; 			
    if(trim($_FILES['Immagine2']['tmp_name']) != "" && trim($_FILES['Immagine2']['tmp_name']) != "none") { 				
            $ImageName2 = time(); 			
    	$ImageName2 .= ".jpg"; 				 				
    $errors2 = CreateImage($_FILES['Immagine2']['tmp_name'], $img_path.$ImageName2, $img_width, $img_height, $jpegquality, 1); 			
    } 		
    	if ($errors != "" && $errors2 != "") print_form("new_element", $_REQUEST['record'], $errors, $errors2);    
       else {   			
    $query = "INSERT INTO ".$table_name." "   			   
              ."SET "   			     
              ."ID_Scheda = Null, "   		
    	  ."Immagine = '".$ImageName."', "   		
              ."Immagine2 = '".$ImageName2."', "   
              ."Titolo = '".addslashes($_REQUEST['record']['Titolo'])."', "   			     
              ."Testo = '".addslashes($_REQUEST['record']['Testo'])."'";   			           	
    $result = mysql_query($query);   		
    	if (!$result) {echo "Errore nell'inserimento della scheda film: ".mysql_error()."
    "
    .$query; exit();}   		
    	print_form("new_element", "", "", "");    
       } 		
    }
    Qualche anima pia sa dirmi dove sbaglio?
    Grazie in anticipo!

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Uahm ...
    perche' mescoli tutto cosi ' ?

    Io farei 1 script per la gestione dell'ulpoad e 1 script per il caricamento e la visualizzazione del form.

    Non mescolate mai componenti di tipo "control" con componenti di tipo "view" .

    Poi non capisco perche' ricrei l'immagine con la funzioneCreateImage; se usi la funzione move_uploaded_file($src,$dest) fai tutto e sposti il file senza usare le lib gd. ( http://php.net/manual/en/function.move-uploaded-file.php ). Ovviamente devi impostare un controllo di tipo il che ti da piu' flessibilità, se un utente uploada un PDF o un txt o un png che succede ? Con controllo di tipo blocchi a priori.

    Inoltre devi fare una bel var_dump($_FILES); prima di tutto per capire effettivamente che struttura dati hai in ingresso per quindi poterla ciclare correttamente.

    EDIT :
    ho visto ora nel codice dove fai la insert .... ne fai 1 sola con le due immagini in caso che la seconda immagine sia apposto. ....
    Per la gestio io di solito lavoro a strati ossia :

    1- controllo dati da post e files
    2- controllo estensione e dim dei files passati e creo 2 var 1 conta gli errori l'altra concatena eventuali messaggi

    3- se il conteggio errori e' 0 proseguo altrimenti gestisco l'errore/eccezione etc....
    4- in caso che non ho errori cerco di spostare i files =>
    4.1 - SE la dir esiste e il File NON esiste(evitare sovrascritture[opzionale])
    4.2 - sposto il file e lo traccio
    4.3 - se un file ha problemi e non puo' essere spostato per un qualsiasi motivo
    4.3.1 - decido che fare, se proseguore con gli altri , cancellare i files tracciati o fermare tutto, dipende da te come devi gestire sta cosa
    5- finita la procedura di spostamento files controllo se ho errori/come li gestisco
    6- concateno la query e la eseguo.

    Un passo alla volta senza mescolare nulla => codice piu' pulito => DIVIDE ET IMPERA => maggiore manuntenibilità !!

  3. #3
    Ciao Virus, grazie per la tua risposta

    Dunque, non sono molto esperta con il codice, questo è uno script che ho trovato e che funziona perfettamente, il problema è che gestisce una sola immagine. Dato che mi serve gestire più immagini, ho cercato di "moltiplicare" l'upload delle immagini. Il fatto è che questo script prevede anche la modifica e la cancellazione delle immagini e dei dati, che è quello che serve a me...

    ho visto ora nel codice dove fai la insert .... ne fai 1 sola con le due immagini in caso che la seconda immagine sia apposto.
    In che senso?

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Quando hai dubbi sui dati usa la funzione var_dump e stampati a video cosa c'e' in una var.
    Cosi' hai la sicurezza.

    Prendere codice prefatto porta sempre a questi casi.

    il mio consiglio e' togliere tutto e iniziare con :

    Codice PHP:

    echo "<pre>" ;
    var_dump($_FILES) ;
    echo 
    "<hr />" ;
    var_dump($_POST) ;
    echo 
    "</pre>" 

    Cosi' vedi cosa arriva a quello script e in che formato e'.
    Poi posta il risultato che vediamo di sistemare il tutto.


    Scusa in quell'affermazione sono stato poco chiaro.
    Intendevo che la insert viene eseguita quando controlli la seconda immagine se la prima non ha errori.
    Io opero in modo differente e separo lo strato di controlli da quello di esecuzione.
    Vuol dire che
    1- imposto delle var booleane o numeriche per tracciare errori.
    2- eseguo i controlli e cambio i valori nelle var in base al risultato dei controlli
    3- eseguo le funzioni / procedure /script se le var di controllo sono apposto oppure scelgo determinate strade in base ai conteggi

    Come vedi in futuro puoi cambiare i controlli senza dover impazzire a cambiare il codice che dovresti eseguire nei vari casi. Molto piu' pulito e gestibile.

  5. #5
    Dunque, provando a caricare si visualizza questo:

    array(2) {
    ["Immagine"]=>
    array(5) {
    ["name"]=>
    string(6) "01.jpg"
    ["type"]=>
    string(10) "image/jpeg"
    ["tmp_name"]=>
    string(14) "/tmp/phpyqzXDb"
    ["error"]=>
    int(0)
    ["size"]=>
    int(509206)
    }
    ["Immagine2"]=>
    array(5) {
    ["name"]=>
    string(24) "BBeautyBath9223-1976.jpg"
    ["type"]=>
    string(10) "image/jpeg"
    ["tmp_name"]=>
    string(14) "/tmp/phppX94V0"
    ["error"]=>
    int(0)
    ["size"]=>
    int(49424)
    }
    }
    array(4) {
    ["record"]=>
    array(3) {
    ["Titolo"]=>
    string(2) "02"
    ["Testo"]=>
    string(7) "dgfggfg"
    ["ID_Scheda"]=>
    string(0) ""
    }
    ["ok"]=>
    string(1) "1"
    ["op"]=>
    string(3) "new"
    ["name"]=>
    string(5) "Nuovo"
    }


  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Perfetto come vedi in $_FILES hai immagine e immagine 2

    quindi dobbiamo arrivare a questa query che come insert non va questa e' la sintassi di una update :
    $query = "INSERT INTO ".$table_name." "
    ."SET "
    ."ID_Scheda = Null, "
    ."Immagine = '".$ImageName."', "
    ."Immagine2 = '".$ImageName2."', "
    ."Titolo = '".addslashes($_REQUEST['record']['Titolo'])."', "
    ."Testo = '".addslashes($_REQUEST['record']['Testo'])."'";

    $query = "INSERT INTO ".$table_name."( ID_Scheda,Immagine,Immagine2,Titolo,Testo ) values(..tutti i valori allineati alla lista campi...)"

    [PHP]
    // Presuppongo che la connessione al db sia gia' fatta altrimenti la funzione

  7. #7
    Ok, ho cambiato la query di inserimento:
    Codice PHP:
                  $query "INSERT INTO ".$table_name." (ID_Scheda,Immagine,Immagine2,Titolo,Testo)""VALUES ('NULL','".$ImageName."','".$ImageName2."','".$Titolo."','".$Testo."')"
    Ma funziona come prima: stessa immagine in entrambi i campi...
    Sì, sì, la connessione al db funziona

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Se mi lasciassse postare sto casso de forum !!!!!! posto a pezzi scusami ma non mi lascia mettere la risp completa... sto cambiando lo stile dei commenti .... pazzesco

    NON MI LASCIA POSTARE !!!!!!!!! MA CHE OOOOOOOOOO!!!!!!!!!

    Posto a pezzi

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Perfetto come vedi in $_FILES hai immagine e immagine 2

    quindi dobbiamo arrivare a questa query che come insert non va questa e' la sintassi di una update :
    $query = "INSERT INTO ".$table_name." "
    ."SET "
    ."ID_Scheda = Null, "
    ."Immagine = '".$ImageName."', "
    ."Immagine2 = '".$ImageName2."', "
    ."Titolo = '".addslashes($_REQUEST['record']['Titolo'])."', "
    ."Testo = '".addslashes($_REQUEST['record']['Testo'])."'";

    $query = "INSERT INTO ".$table_name."( ID_Scheda,Immagine,Immagine2,Titolo,Testo ) values(..tutti i valori allineati alla lista campi...)"

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Codice PHP:
    // Presuppongo che la connessione al db sia gia' fatta altrimenti la funzione 
    // mysql_real-escape_string non funzione e che le magic quotes siano disabled

    // Controlliamo i records che ci servono 
    $titolo mysql_real_escape_string(trim($_POST["Titolo"]));
    $testo mysql_real_escape_string(trim($_POST["Testo"]));

    // Vedo ID_scheda .... puoi usarelo per gestire update o insert quindi facciamo la nostru struttura dati 
    $data = array(
    "Titolo" => $titolo 
    "Testo" => $testo ,
    "Immagine" => "" ,
    "Immagine2" => "" 

    );

    $upPath "./laTuaDir/" ;
    if( !
    file_exists($upPath) || !is_dir($upPath)  )

    //Qui fa come vuoi a gestire l'errore nel caso di path errato /inesistente
    }

    // Controlliamo le immagini
    $immagine $_FILES["Immagine"] ; 
    $immagine2 $_FILES["Immagine2"] ;

    // controllo estensioni 
    if(  $immagine["type"] != "image/jpeg"  && $immagine["type"] != "image/pjpeg" )

    //ERRORE FORMATO IMMAGINE
    }
    if(  
    $immagine2["type"] != "image/jpeg"  && $immagine2["type"] != "image/pjpeg" )

    //ERRORE FORMATO IMMAGINE
    }

    // Puoi estendere e gestire gif,png o altro aggiungendo condizioni

    // Puoi controllare la dim delle immagini se vuoi
    $limit 50000 ;

    if(  
    $immagine["size"] > $limit )

    ERRORE DIMESIONE IMMAGINE
    }
    if(  
    $immagine2["size"] > $limit)

    ERRORE DIMENSIONE IMMAGINE
    }


    // Puoi trocare prima l'esecuzione in caso di errore in modo che se
    // arrivi qui sai che e' tutto apposto
    $data["Immagine"] = $immagine["name"] ;
    $data["Immagine2"] = $immagine2["name"] ;

    // spostiamo i files nella target dir
    if( !move_uploaded_file$immagine["tmp_name"]) ,  $upPath.$immagine["name"] ) )

    //ERRORE SPOSTAMENTO IMMAGINE 1 => gestisci come vuoi
    }
    if( !
    move_uploaded_file$immagine2["tmp_name"] , $upPath.$immagine2["name"] ) )

    //ERRORE SPOSTAMENTO IMMAGINE 2 => gestisci come vuoi
     
    }


    //Abbiamo formattato i dati e controllato tutto ora se ho id eseguo update 
    //altrimenti eseguo insert

    $q "" ;
    if( 
    $_POST["ID_Scheda "] )
    {

    $id $_POST["ID_Scheda"] ;
    // se vuoi aggiungi i controlli qui per controllare l'id

    $q "update table ".$table_name." " 
              
    ."SET " 
          
    ."Immagine = '".$data["immagine"]."', "           
              
    ."Immagine2 = '".$data["immagine2"]."', "   
              
    ."Titolo = '".addslashes($data['titolo'])."', "                    
              
    ."Testo = '".addslashes($data['testo'])."'

    where ID_Scheda = '.
    $id.' limit 1 "

    }
    else
    {
    $q =  "INSERT INTO ".$table_name."( Immagine,Immagine2,Titolo,Testo ) 
    values(
    '"
    .$data["Immagine"]."' ,
    '"
    .$data["Immagine2"]."' ,
    '"
    .$data["Titolo"]."' ,
    '"
    .$data["Testo"]."' 
    )"   
    ;

    }


    //esegui query 
    $ris mysql_query$q ) ; 

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 © 2024 vBulletin Solutions, Inc. All rights reserved.