Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360

    Problema upload multiplo

    Salve,

    posto questa parte di codice:

    Codice PHP:
      $new_post "INSERT INTO `prodotti` (`nome`, `descrizione`, `prezzo`) VALUES (?, ?, ?)";
      
    $stmt $db->prepare($new_post);
      
    $stmt->execute(array(stripslashes($nome), stripslashes($descrizione), stripslashes($prezzo)));

      
    $new_post_id $db->lastInsertId();

      for (
    $i 1$i <= 1$i++) {

      if(!empty(
    $_FILES['immagine_01']['name']))
      {
       
    $_FILES['immagine_01']['name'] = $immagine_01_rinominata;
       
    $immagine_01_rinominata md5(uniqid());
        
    $image_sql "UPDATE prodotti SET immagine_01 = '$new_post_id-01-$immagine_01_rinominata' WHERE id_prodotto = $new_post_id";
       
    $stmt $db->prepare($image_sql);

    if(isset(
    $_FILES['immagine_01'])){
    $imagename $new_post_id "-01-" $immagine_01_rinominata ".jpg";
    $source $_FILES['immagine_01']['tmp_name'];
    $target "../../immagini/" $imagename;
    move_uploaded_file($source$target);

    $imagepath $imagename;
    $save "../../immagini/" $imagepath// questo è il nuovo file che salvi
    $file "../../immagini/" $imagepath// questo è il file originale

    list($width$height) = getimagesize($file); 

    $modwidth 1024// dimensione immagine grande

    $diff $width $modwidth;

    $modheight $height $diff
    $tn imagecreatetruecolor($modwidth$modheight); 
    $image imagecreatefromjpeg($file) ; 
    imagecopyresampled($tn$image0000$modwidth$modheight$width$height); 

    imagejpeg($tn$save90); 

    $save "../../immagini/" $new_post_id "-01-" $immagine_01_rinominata "-miniatura" ".jpg"// questo è il nuovo file che salvi
    $file "../../immagini/" $imagepath// questo è il file originale

      
    list($width$height) = getimagesize($file); 
      
    $max_w 150
      
    $max_h 113

      
    // area utile e offset 
      
    if ($width>$height*$max_w/$max_h) { 
        
    $a_h $height
        
    $a_w $a_h*$max_w/$max_h
        
    $delta_x floor(($width-$a_w)/2);  
        
    $delta_y 0
      } else {
        
    $a_w $width
        
    $a_h $a_w*$max_h/$max_w
        
    $delta_x 0;  
        
    $delta_y floor(($height-$a_h)/2);  
      }

    $tn imagecreatetruecolor($max_w$max_h); 
    $image imagecreatefromjpeg($file);
    imagecopyresampled($tn$image00$delta_x$delta_y$max_w$max_h$a_w$a_h); 

    imagejpeg($tn$save90);
      }
      }

      if(!empty(
    $_FILES['immagine_02']['name']))
      {
       
    $_FILES['immagine_02']['name'] = $immagine_02_rinominata;
       
    $immagine_02_rinominata md5(uniqid());
        
    $image_sql "UPDATE prodotti SET immagine_02 = '$new_post_id-02-$immagine_02_rinominata' WHERE id_prodotto = $new_post_id";
       
    $stmt $db->prepare($image_sql);

    if(isset(
    $_FILES['immagine_02'])){
    $imagename $new_post_id "-02-" $immagine_02_rinominata ".jpg";
    $source $_FILES['immagine_02']['tmp_name'];
    $target "../../immagini/" $imagename;
    move_uploaded_file($source$target);

    $imagepath $imagename;
    $save "../../immagini/" $imagepath// questo è il nuovo file che salvi
    $file "../../immagini/" $imagepath// questo è il file originale

    list($width$height) = getimagesize($file); 

    $modwidth 1024// dimensione immagine grande

    $diff $width $modwidth;

    $modheight $height $diff
    $tn imagecreatetruecolor($modwidth$modheight); 
    $image imagecreatefromjpeg($file) ; 
    imagecopyresampled($tn$image0000$modwidth$modheight$width$height); 

    imagejpeg($tn$save90); 

    $save "../../immagini/" $new_post_id "-02-" $immagine_02_rinominata "-miniatura" ".jpg"// questo è il nuovo file che salvi
    $file "../../immagini/" $imagepath// questo è il file originale

      
    list($width$height) = getimagesize($file); 
      
    $max_w 150
      
    $max_h 113

      
    // area utile e offset 
      
    if ($width>$height*$max_w/$max_h) { 
        
    $a_h $height
        
    $a_w $a_h*$max_w/$max_h
        
    $delta_x floor(($width-$a_w)/2);  
        
    $delta_y 0
      } else {
        
    $a_w $width
        
    $a_h $a_w*$max_h/$max_w
        
    $delta_x 0;  
        
    $delta_y floor(($height-$a_h)/2);  
      }

    $tn imagecreatetruecolor($max_w$max_h); 
    $image imagecreatefromjpeg($file);
    imagecopyresampled($tn$image00$delta_x$delta_y$max_w$max_h$a_w$a_h); 

    imagejpeg($tn$save90);
      }
      }

       
    // aggiungi i files al database
       
    $file_name $_FILES['immagine_01']['name'];
       
    $stmt->execute(array($file_name));
       
    $file_name $_FILES['immagine_02']['name'];
       
    $stmt->execute(array($file_name));

      }

        if (
    $stmt->execute()) {
      echo 
    "<script>alert('Inserimento eseguito con successo.');</script>"
        } else {
      echo 
    "<script>alert('Impossibile eseguire l'inserimento.');</script>"
        } 
    E riscontro il seguente problema. Mi fa l'upload nella cartella di entrambe le immagini ma nel DB inserisce solo l'ultima immagine, ovvero la _02.

    Nel caso l'upload è di 3 immagini (cambiando il codice), mi carica sempre tutte e 3 le immagini nella cartella specifica, ma nel DB inserisce i riferimenti solo dell'ultima, ovvero la terza.

    In sostanza c'è qualche rottura nelle query SQL che pesca solo l'ultima e non tutte insieme.

    Che pensate?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Intanto noto questo

    for ($i = 1; $i <= 1; $i++) {

    vuol dire che il ciclo verrà eseguito esattamente 1 volta, quindi non serve a niente.
    Sei sicuro che è questo che vuoi fare?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    No, non va, neanche mettendo 10. Per il mio codice mi sono ispirato a http://stackoverflow.com/questions/1...-2-text-fields ma con le modifiche non va, nel DB ripeto, l'upload va.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Stò facendo varie prove ma non va, sembrerebbe che le varie SQL non vengano concatenate e venga eseguita solo l'ultima riguardante l'immagine che si vuole caricare.

  5. #5
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298
    A occhio fai 2 volte $stmt = $db->prepare($image_sql); e solo dopo 1 $stmt->execute();

    E' normale che prenda solo la seconda immagine...
    Un nuovo cms/framework... vuoi collaborare al progetto?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Si, ora ho numerato gli altri stm con stmt1, stmt2 e stmt3 e va ma ho 2 altri problemi.

    1) mi crea 2 record ogni volta, il primo corretto con tutti i campi, il secondo record con tutti i campi vuoti, e non capisco perché.
    2) se ad esempio voglio caricare solo l'immagine 1 e 3, mi va in pagina bianca.

  7. #7
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298
    Quote Originariamente inviata da harry80 Visualizza il messaggio
    Si, ora ho numerato gli altri stm con stmt1, stmt2 e stmt3 e va ma ho 2 altri problemi.

    1) mi crea 2 record ogni volta, il primo corretto con tutti i campi, il secondo record con tutti i campi vuoti, e non capisco perché.
    2) se ad esempio voglio caricare solo l'immagine 1 e 3, mi va in pagina bianca.
    Posta il nuovo codice allora...
    Un nuovo cms/framework... vuoi collaborare al progetto?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Codice PHP:
    <?php
    ini_set
    ("memory_limit","256M");

    $db = new PDO('mysql:dbname=prodotti;host=localhost''root''root');
    $db->exec("set names utf8");

    if (isset(
    $_POST['invia'])):

        
    $nome        trim($_POST['nome']);
        
    $descrizione trim($_POST['descrizione']);
        
    $prezzo      trim($_POST['prezzo']);

        if(
    get_magic_quotes_gpc())
        {
      
    $nome        stripslashes($nome);
      
    $descrizione stripslashes($descrizione);
      
    $prezzo      stripslashes($prezzo);
        }
        
        
    // effettuo l'escape dei caratteri speciali per inserirli all'interno della query
        
    $nome        mysql_real_escape_string($nome);
        
    $descrizione mysql_real_escape_string($descrizione);
        
    $prezzo      mysql_real_escape_string($prezzo);

      
    $new_post "INSERT INTO `prodotti` (`nome`, `descrizione`, `prezzo`) VALUES (?, ?, ?)";
      
    $stmt $db->prepare($new_post);
      
    $stmt->execute(array(stripslashes($nome), stripslashes($descrizione), stripslashes($prezzo)));

      
    $new_post_id $db->lastInsertId();

      for (
    $i 1$i <= 3$i++) {

      if(!empty(
    $_FILES['immagine_01']['name']))
      {
       
    $_FILES['immagine_01']['name'] = $immagine_01_rinominata;
       
    $immagine_01_rinominata md5(uniqid());
        
    $image_sql "UPDATE prodotti SET immagine_01 = '$new_post_id-01-$immagine_01_rinominata' WHERE id_prodotto = $new_post_id";
       
    $stmt1 $db->prepare($image_sql);

    if(isset(
    $_FILES['immagine_01'])){
    $imagename $new_post_id "-01-" $immagine_01_rinominata ".jpg";
    $source $_FILES['immagine_01']['tmp_name'];
    $target "../../immagini/" $imagename;
    move_uploaded_file($source$target);

    $imagepath $imagename;
    $save "../../immagini/" $imagepath// questo è il nuovo file che salvi
    $file "../../immagini/" $imagepath// questo è il file originale

    list($width$height) = getimagesize($file); 

    $modwidth 1024// dimensione immagine grande

    $diff $width $modwidth;

    $modheight $height $diff
    $tn imagecreatetruecolor($modwidth$modheight); 
    $image imagecreatefromjpeg($file) ; 
    imagecopyresampled($tn$image0000$modwidth$modheight$width$height); 

    imagejpeg($tn$save90); 

    $save "../../immagini/" $new_post_id "-01-" $immagine_01_rinominata "-miniatura" ".jpg"// questo è il nuovo file che salvi
    $file "../../immagini/" $imagepath// questo è il file originale

      
    list($width$height) = getimagesize($file); 
      
    $max_w 150
      
    $max_h 113

      
    // area utile e offset 
      
    if ($width>$height*$max_w/$max_h) { 
        
    $a_h $height
        
    $a_w $a_h*$max_w/$max_h
        
    $delta_x floor(($width-$a_w)/2);  
        
    $delta_y 0
      } else {
        
    $a_w $width
        
    $a_h $a_w*$max_h/$max_w
        
    $delta_x 0;  
        
    $delta_y floor(($height-$a_h)/2);  
      }

    $tn imagecreatetruecolor($max_w$max_h); 
    $image imagecreatefromjpeg($file);
    imagecopyresampled($tn$image00$delta_x$delta_y$max_w$max_h$a_w$a_h); 

    imagejpeg($tn$save90);
      }
      }

      if(!empty(
    $_FILES['immagine_02']['name']))
      {
       
    $_FILES['immagine_02']['name'] = $immagine_02_rinominata;
       
    $immagine_02_rinominata md5(uniqid());
        
    $image_sql "UPDATE prodotti SET immagine_02 = '$new_post_id-02-$immagine_02_rinominata' WHERE id_prodotto = $new_post_id";
       
    $stmt2 $db->prepare($image_sql);

    if(isset(
    $_FILES['immagine_02'])){
    $imagename $new_post_id "-02-" $immagine_02_rinominata ".jpg";
    $source $_FILES['immagine_02']['tmp_name'];
    $target "../../immagini/" $imagename;
    move_uploaded_file($source$target);

    $imagepath $imagename;
    $save "../../immagini/" $imagepath// questo è il nuovo file che salvi
    $file "../../immagini/" $imagepath// questo è il file originale

    list($width$height) = getimagesize($file); 

    $modwidth 1024// dimensione immagine grande

    $diff $width $modwidth;

    $modheight $height $diff
    $tn imagecreatetruecolor($modwidth$modheight); 
    $image imagecreatefromjpeg($file) ; 
    imagecopyresampled($tn$image0000$modwidth$modheight$width$height); 

    imagejpeg($tn$save90); 

    $save "../../immagini/" $new_post_id "-02-" $immagine_02_rinominata "-miniatura" ".jpg"// questo è il nuovo file che salvi
    $file "../../immagini/" $imagepath// questo è il file originale

      
    list($width$height) = getimagesize($file); 
      
    $max_w 150
      
    $max_h 113

      
    // area utile e offset 
      
    if ($width>$height*$max_w/$max_h) { 
        
    $a_h $height
        
    $a_w $a_h*$max_w/$max_h
        
    $delta_x floor(($width-$a_w)/2);  
        
    $delta_y 0
      } else {
        
    $a_w $width
        
    $a_h $a_w*$max_h/$max_w
        
    $delta_x 0;  
        
    $delta_y floor(($height-$a_h)/2);  
      }

    $tn imagecreatetruecolor($max_w$max_h); 
    $image imagecreatefromjpeg($file);
    imagecopyresampled($tn$image00$delta_x$delta_y$max_w$max_h$a_w$a_h); 

    imagejpeg($tn$save90);
      }
      }

      if(!empty(
    $_FILES['immagine_03']['name']))
      {
       
    $_FILES['immagine_03']['name'] = $immagine_03_rinominata;
       
    $immagine_03_rinominata md5(uniqid());
        
    $image_sql "UPDATE prodotti SET immagine_03 = '$new_post_id-03-$immagine_03_rinominata' WHERE id_prodotto = $new_post_id";
       
    $stmt3 $db->prepare($image_sql);

    if(isset(
    $_FILES['immagine_03'])){
    $imagename $new_post_id "-03-" $immagine_03_rinominata ".jpg";
    $source $_FILES['immagine_03']['tmp_name'];
    $target "../../immagini/" $imagename;
    move_uploaded_file($source$target);

    $imagepath $imagename;
    $save "../../immagini/" $imagepath// questo è il nuovo file che salvi
    $file "../../immagini/" $imagepath// questo è il file originale

    list($width$height) = getimagesize($file); 

    $modwidth 1024// dimensione immagine grande

    $diff $width $modwidth;

    $modheight $height $diff
    $tn imagecreatetruecolor($modwidth$modheight); 
    $image imagecreatefromjpeg($file) ; 
    imagecopyresampled($tn$image0000$modwidth$modheight$width$height); 

    imagejpeg($tn$save90); 

    $save "../../immagini/" $new_post_id "-03-" $immagine_03_rinominata "-miniatura" ".jpg"// questo è il nuovo file che salvi
    $file "../../immagini/" $imagepath// questo è il file originale

      
    list($width$height) = getimagesize($file); 
      
    $max_w 150
      
    $max_h 113

      
    // area utile e offset 
      
    if ($width>$height*$max_w/$max_h) { 
        
    $a_h $height
        
    $a_w $a_h*$max_w/$max_h
        
    $delta_x floor(($width-$a_w)/2);  
        
    $delta_y 0
      } else {
        
    $a_w $width
        
    $a_h $a_w*$max_h/$max_w
        
    $delta_x 0;  
        
    $delta_y floor(($height-$a_h)/2);  
      }

    $tn imagecreatetruecolor($max_w$max_h); 
    $image imagecreatefromjpeg($file);
    imagecopyresampled($tn$image00$delta_x$delta_y$max_w$max_h$a_w$a_h); 

    imagejpeg($tn$save90);
      }
      }


       
    // aggiungi i files al database
       
    $file_name $_FILES['immagine_01']['name'];
       
    $stmt1->execute(array($file_name));
       
    $file_name $_FILES['immagine_02']['name'];
       
    $stmt2->execute(array($file_name));
       
    $file_name $_FILES['immagine_03']['name'];
       
    $stmt3->execute(array($file_name));

      }

        if (
    $stmt->execute()) {
      echo 
    "<script>alert('Inserimento eseguito con successo.');</script>"
        } else {
      echo 
    "<script>alert('Impossibile eseguire l'inserimento.');</script>"
        }
    ?>

  9. #9
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298
    Ci sono tante cose in questo codice che non capisto... ad esempio:

    $image_sql = "UPDATE prodotti SET immagine_03 = '$new_post_id-03-$immagine_03_rinominata' WHERE id_prodotto = $new_post_id";

    $stmt1 = $db->prepare($image_sql);

    $stmt1->execute(array($file_name));

    L'ultima query viene eseguita sempre, anche se non è stata preparata e anche se non c'è immagine... e lo stesso discorso vale per le altre 2 immagini... dovresti fare la query solo se è stata caricata l'immagini, quindi queste istruzioni vanno spostate...

    Ma perchè poi fai l'execute con quella variabile $file_name?

    Altra cosa: perchè fai tutte le query 3 volte?
    for ($i = 1; $i <= 3; $i++) {
    Un nuovo cms/framework... vuoi collaborare al progetto?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Non ho capito, colpa mia, come riorganizzare lo script, in che modo devo spostare le query? Ripeto, i problemi sono:

    1) mi crea 2 record ogni volta, il primo corretto con tutti i campi, il secondo record con tutti i campi vuoti, e non capisco perché.
    2) se ad esempio voglio caricare solo l'immagine 1 e 3, mi va in pagina bianca.

    $file_name l'ho ereditato dallo script originale, dovrebbe essere diverso?

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.