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

    Scheda prodotto con immagini multiple

    Salve ragazzi,

    devo creare un sistema in PHP che mi permetta di inerire in un DB schede tecniche di prodotti, i campi sono:

    - nome
    - descrizione
    - prezzo

    la maggiore complicazione per me è che devo poter aggiungere max 9 immagini, quindi vorrei che in un unico modulo, mi sia permesso di inserire i dati testuali (i 3 campi già citati), più max 9 immagini.

    Come impostare la cosa? La parte dell’HTML è alla mia portata, inserire dati in un DB anche, l’ho fatto in passato, anche uplodare un’immagine, ma mai come dico ora ovvero caricamento multiplo.

    Sarebbe ottimale poter aggiungere eventualmente quante immagini si vogliano, tipo una volta 3, una volta 5, una volta 15, ecc, ovvero in numero dinamico, ma mi accontenterei di disporre max 9 immagini.

    Pensavo che il DB dovesse essere strutturato con 2 tabelle:
    - prodotti
    - immagini

    prodotti
    - id_prodotto
    - nome_prodotto
    - descrizione_prodotto
    - prezzo_prodotto

    immagini
    - id_immagine
    - nome_imagine
    - id_prodotto

    il ragionamento è che nella tabella immagini tramite il campo id_prodotto riesco appunto a collegare le molteplici immagini alla una scheda prodotto id_prodotto.

    Sbaglio ragionamento?

    Mi date qualche dritta, tutorial, linea di codice di partenza?

    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Aggiornamento:


    Ho recuperato e modificato il seguente codice:

    Codice PHP:
    <?php

    error_reporting
    (E_ALL);
    ini_set('display_errors'true);

    $db = new PDO('mysql:dbname=prodotti;host=localhost''root''root');


    if (isset(
    $_POST['formsubmitted'])) { //if form was submitted

        
    $error_array = array();//Declare An Array to store any error message

        // check all images for upload errors
        // you should probably add extra file validation here - check image type etc
        
    $upload_error false;
        foreach(
    $_FILES['images']['error'] as $error) {
            if (
    $error != && $error != 4) {
                
    $upload_error true;
            }
        }

        if (
    $upload_error) {
            
    $error_array[] = 'One of the image uploads failed!';
        }


        if (empty(
    $_POST['nome'])) {//if no nome has been supplied
            
    $error_array[] = 'Please enter a nome for your post.';//add to array "error"
        
    } else {
            
    $title $_POST['nome'];//else assign it a variable
        
    }

        if (empty(
    $_POST['descrizione'])) {
            
    $error_array[] = 'Please enter a descrizione of your post.';//add to array "error"
        
    } else {
            
    $desc $_POST['descrizione'];//else assign it a variable
        
    }

        if (empty(
    $_POST['prezzo'])) {
            
    $error_array[] = 'Please enter a prezzo of your post.';//add to array "error"
        
    } else {
            
    $desc $_POST['prezzo'];//else assign it a variable
        
    }

        if (empty(
    $error_array)){ //if no error, insert into db

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

            
    $new_post_id $db->lastInsertId();

            
    // now start processing the images
            
    $image_sql "INSERT INTO `immagini` (`nome_immagine`, `id_prodotto`) VALUES (?, ?)";
            
    $stmt $db->prepare($image_sql);

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

                
    // you need to add some code to validate, move and rename the files

                // add the files to the db
                
    $file_name $_FILES['images']['name'][$i];
                
    $stmt->execute(array($new_post_id$file_name));

            }

        } else {
            
    print_r($error_array);
        }

    }
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Inserisci Prodotto</title>
    </head>

    <body>
    <?php if (isset($show_errors)) { 
        
    //show user the errors if form cant be submitted
        
    echo '<div> <ol>';
            foreach (
    $error as $key => $values) { echo '    <li>'.$values.'</li>'; }
            echo 
    '</ol></div><br />'; }?>

    <br />
    <form method="post" id="newpost" action="" enctype="multipart/form-data">
    <div><input name="nome" type="text" value=""></div>
    <div><textarea id="area4" cols="40" rows="5" name="descrizione"></textarea></div>
    <div><input name="prezzo" type="text" value=""></div>
    <div><input type="file" name="images1"></div>
    <div><input type="file" name="images2"></div>
    <div><input type="file" name="images3"></div>
    <div><input type="file" name="images4"></div>
    <div><input type="file" name="images5"></div>
    <div><input type="file" name="images6"></div>
    <input type="hidden" name="formsubmitted" value="true" />
    <input type="submit" id="upload" value="Inserisci">
    </form>
    </body>
    </html>
    ricevo diversi notice riguardanti le righe 16, 49 e 62, ma soprattutto non ho nessun inserimento o nel DB e upload delle immagini. A proposito delle immagini, non ho capito dove va posiziona la cartella di upload e come va chiamata, nello script se ho capito bene è identificata come cartella images, o sbaglio?

    Quali potrebbero essere gli errori?
    Ultima modifica di harry80; 20-11-2013 a 10:08

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Sarebbe interessante che riuscissi ad utilizzare questo codice
    Codice PHP:
    <?php
    ini_set
    ("memory_limit","256M");
    $category trim($_POST['category']); 
    ?>
    <?php
    if(isset($_POST['inserisci_immagine'])){
    if(isset(
    $_FILES['immagine'])){
    $imagename $_FILES['immagine']['name'];
    $source $_FILES['immagine']['tmp_name'];
    $target "../../img/prodotti/".$imagename;
    move_uploaded_file($source$target);

    $imagepath $imagename;
    $save "../../img/prodotti/" $imagepath// questo è il nuovo file che salvi
    $file "../../img/prodotti/" $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 "../../img/prodotti/miniatura-" $imagepath// questo è il nuovo file che salvi
    $file "../../img/prodotti/" $imagepath// questo è il file originale

      
    list($width$height) = getimagesize($file); 
      
    $max_w 170
      
    $max_h 120

      
    // 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);

    $strSQL "INSERT INTO immagini ";
    $strSQL .="(nome_immagine,categoria_immagine) VALUES ('$imagepath','$category')";
    $objQuery mysql_query($strSQL);

        
    // inserimento eseguito con successo
        
    echo "<script>alert('Inserimento eseguito con successo.');</script>"
        echo 
    "<script>document.location='../menu_amministrazione.php'</script>";

    }
    }
    ?>
    usato in altri progetti che mi permetteva di caricare un'immagine alla volta facendo 2 ridimensionamenti, uno a 1024 l'altro come miniatura, facendo anche un crop.

    Chiedo gentilmente il vostro aiuto!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Non sono stato chiaro su qualche cosa?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Non picchiatemi!

    Codice PHP:
    <?php
        
    // richiamo lo script responsabile della connessione a MySQL
        
    include "../../connessione.php";
    ?>

    <?php

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

      
    $nome        $_POST['nome'];
      
    $descrizione $_POST['descrizione'];
      
    $prezzo      $_POST['prezzo'];
    mysql_query"INSERT INTO prodotti(`nome`,`descrizione`,`prezzo`) VALUES('".addslashes$nome )."','".addslashes$descrizione )."','".addslashes$prezzo )."')" );
              
      if (@
    mysql_query($sql)) {
        echo 
    "<script>alert('Inserimento eseguito con successo.');</script>"
        echo 
    "<script>document.location='../menu_amministrazione.php'</script>";
      } else {
        echo 
    "<script>alert('Impossibile eseguire l'inserimento.');</script>"
        echo 
    "<script>document.location='../menu_amministrazione.php'</script>";
      }
    ?>
    <?php
      
    else: // permetti all'utente di creare una categoria
    ?>
    <?php
    ini_set
    ("memory_limit","256M");
    $category trim($_POST['category']); 
    ?>
    <?php
    if(isset($_POST['inserisci_immagine'])){
    if(isset(
    $_FILES['immagine'])){
    $imagename $_FILES['immagine']['name'];
    $source $_FILES['immagine']['tmp_name'];
    $target "../../img/prodotti/".$imagename;
    move_uploaded_file($source$target);

    $imagepath $imagename;
    $save "../../img/prodotti/" $imagepath// questo è il nuovo file che salvi
    $file "../../img/prodotti/" $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 "../../img/prodotti/miniatura-" $imagepath// questo è il nuovo file che salvi
    $file "../../img/prodotti/" $imagepath// questo è il file originale

      
    list($width$height) = getimagesize($file); 
      
    $max_w 170
      
    $max_h 120

      
    // 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);

    $strSQL "INSERT INTO immagini ";
    $strSQL .="(nome_immagine,id_prodotto) VALUES ('$imagepath','$category')";
    $objQuery mysql_query($strSQL);

        
    // inserimento eseguito con successo
        
    echo "<script>alert('Inserimento eseguito con successo.');</script>"
        echo 
    "<script>document.location='../menu_amministrazione.php'</script>";

    }
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Prodotti - Inserisci</title>
    </head>

    <body>
    <table width="650" border="0" align="center" cellpadding="1" cellspacing="2">
      <tr>
        <td height="20" colspan="2" align="right" id="voce"><a href="../menu_amministrazione.php">Home</a> - <a href="../logout.php">Logout</a></td>
      </tr>
      <tr>
        <td height="68" colspan="2"><img src="../immagini/header.jpg" width="650" height="100" alt="logo" /></td>
      </tr>  
      <form action="" method="post" enctype="multipart/form-data" name="modulo_inserisci" id="modulo_inserisci" onsubmit="return validateForm()">
        <tr>
          <td colspan="2" valign="middle"><table width="100%" border="0">
            <tr>
              <td><table width="100%" border="0" cellspacing="0">
                  <tr>
                    <td colspan="2" id="intestazione"><div align="center">Prodotti - Inserisci</div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><br /></td>
                    </tr>
                  <tr>
                    <td width="40%" colspan="1" id="voce" style="font-weight:bold"><div align="right">Nome:&nbsp;</div></td>
                    <td width="60%" id="voce"><div align="left"><input name="nome" type="text" id="nome" /></div></td>
                  </tr>
                  <tr>
                    <td width="40%" colspan="1" id="voce" style="font-weight:bold"><div align="right">Descrizione:&nbsp;</div></td>
                    <td width="60%" id="voce"><div align="left"><textarea name="descrizione" id="descrizione" cols="25" rows="10"></textarea></div></td>
                  </tr>
                  <tr>
                    <td width="40%" colspan="1" id="voce" style="font-weight:bold"><div align="right">Prezzo:&nbsp;</div></td>
                    <td width="60%" id="voce"><div align="left"><input name="prezzo" type="text" id="prezzo" /></div></td>
                  </tr>
                  <tr>
                    <td width="40%" colspan="1" id="voce" style="font-weight:bold"><div align="right">Immagine:&nbsp;</div></td>
                    <td width="60%" id="voce"><input name="immagine" id="immagine" size="30" type="file" /></div></td>
                  </tr>
                  <tr>
                    <td width="40%" colspan="1" id="voce" style="font-weight:bold"><div align="right"></div></td>
                    <td width="60%" id="voce"><div align="left">&lt;br /&gt; = A capo</div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><br /></td>
                  </tr>
                  <tr>
                    <td colspan="2"><div align="center"><input name="submit" type="submit" id="button_ok" value="Invia" /></div></td>
                  </tr>
              </table></td>
            </tr>
          </table>
          </td>
        </tr>
      </form>
      <tr>
        <td height="6" colspan="2" bgcolor="#000000"></td>
      </tr>
    </table>
    </body>
    </html>
    <?php endif; ?>
    Questo è il codice ripulito da dove voglio ripartire, eventualmente prendendo qualche riga da quanto pubblicato prima.

    Riesco a pubblicare nella tabella prodotti, ma non nella tabella immagini e non va l'upload singolo che ho messo al momento, una volta che riesco a fare l'upload singolo, vorrei aggiungere gli altri.

    segnalo che $category = trim($_POST['category']); in un altro esempio mi serviva per caricare solo un'immagine in una determinata categoria scelta tramite un menu a tendina, in questo caso io nella tabella immagini devo poter associare al posto della categoria id_prodotto per "legare" le immagini alla scheda del prodotto.

    Attendo vostri suggerimenti, grazie!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Stò provando ma senza risultato! Secondo voi stò chiedendo troppo? Stò lavorando sull'ultimo post, li ho cercato di fonder 2 automatismi, il primo inserisce nel DB i 3 campi, e funziona, latra parte dovrebbe inserire nel DB il nome del file che carico, l'id_prodotto e caricare veramente l0immagine in una cartella con tanto di ridimensionamento, ma non va!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Mi sento veramente solo in questo topic!

    Veramente... che abbia sbagliato stanza o mi sono spiegato male?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Ci devo rinunciare?

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Quote Originariamente inviata da harry80 Visualizza il messaggio
    Ci devo rinunciare?
    Puoi saperlo solo tu, penso che tu voglia fare qualcosa con poca esperienza e non facile da realizzare e il forum difficilmente può seguirti passo passo, se non trovi uno script in rete che faccia quello che vuoi io prenderei in considerazione l'abbandono.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Puoi saperlo solo tu, penso che tu voglia fare qualcosa con poca esperienza e non facile da realizzare e il forum difficilmente può seguirti passo passo, se non trovi uno script in rete che faccia quello che vuoi io prenderei in considerazione l'abbandono.
    No, non vorrei rinunciarci infatti, so di non essere per niente pratico di PHP, però nell'ultimo mio post dove riesco a fare le cose al 50%, sono sicuro che una mano esperta possa darmi la giusta dritta per procedere.

    Ritengo che il problema stia nel legare la successione delle 2 query, perché come ho detto, su pagine separate, funzionano.

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.