immagini multiple nel db e cartella con thumbline

Ciao ragazzi,

perdonatemi se rompo di sabato ma spero che tanti di voi come me siano online a lavorare...

ho un problema che non riesco a risolvere per la gestione multipla delle immagini.

vi spiego meglio....

ho uno script che inserisce nel db il percorso di un file e contemporaneamente lo inserisce anche in una cartella creando sia la thumbiline che l'immagine grande ora ho la necessità di fare in modo che lo script carichi contemporaneamente 4 immagini e nel caso qualcuna manchi la sostituisca con una di default. Posto lo scrit funzionante per un solo file.

tabella database

-- 
-- Struttura della tabella `immagini`
-- 

CREATE TABLE `immagini` (
  `idimmagini` int(11) NOT NULL auto_increment,
  `big` varchar(45) collate latin1_general_ci default NULL,
  `thumbs` varchar(45) collate latin1_general_ci default NULL,
  `rand_name` varchar(45) collate latin1_general_ci default NULL,
  PRIMARY KEY  (`idimmagini`)
);

upload.php

<table aling="center" border="1">
<tr>
   <td>
   
   <?php

      include("config.php");

      include('connessione.php');

      //if the for has submittedd
      if (isset($_POST['upForm'])){

       $file_type = $_FILES['imgfile']['type'];
       $file_name = $_FILES['imgfile']['name'];
       $file_size = $_FILES['imgfile']['size'];
       $file_tmp = $_FILES['imgfile']['tmp_name'];
      //$descrizione = $_POST['descrizione'];

       //check if you have selected a file.
       if(!is_uploaded_file($file_tmp)){
        
       header("Location: upload.php"); /* Redirect browser */
        
       exit(); //exit the script and don't do anything else.
       }

       //check file extension
       $ext = strrchr($file_name,'.');
       $ext = strtolower($ext);
       if (($extlimit == "yes") && (!in_array($ext,$limitedext))) {
          echo "Wrong file extension.  <br>--<a href=\"$_SERVER[PHP_SELF]\">back</a>";
          exit();
       }
       //get the file extension.
       $getExt = explode ('.', $file_name);
       $file_ext = $getExt[count($getExt)-1];

       //create a random file name
       $rand_name = md5(time());
       $rand_name= rand(0,999999999);
       //get the new width variable.
       $ThumbWidth = $img_thumb_width;

       //keep image type
       if($file_size){
          if($file_type == "image/pjpeg" || $file_type == "image/jpeg"){
               $new_img = imagecreatefromjpeg($file_tmp);
           }elseif($file_type == "image/x-png" || $file_type == "image/png"){
               $new_img = imagecreatefrompng($file_tmp);
           }elseif($file_type == "image/gif"){
               $new_img = imagecreatefromgif($file_tmp);
           }
           //list width and height and keep height ratio.
           list($width, $height) = getimagesize($file_tmp);
           $imgratio=$width/$height;
           if ($imgratio>1){
              $newwidth = $ThumbWidth;
              $newheight = $ThumbWidth/$imgratio;
           }else{
                 $newheight = $ThumbWidth;
                 $newwidth = $ThumbWidth*$imgratio;
           }
           //function for resize image.
           if (function_exists(imagecreatetruecolor)){
           $resized_img = imagecreatetruecolor($newwidth,$newheight);
           }else{
                 die("Error: Please make sure you have GD library ver 2+");
           }
           imagecopyresized($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
           //save image
           ImageJpeg ($resized_img,"$path_thumbs/$rand_name.$file_ext");
           ImageDestroy ($resized_img);
           ImageDestroy ($new_img);
           //print message
           //echo "<br>Image Thumb: <a href=\"$path_thumbs/$rand_name.$file_ext\">$path_thumbs/$rand_name.$file_ext</a>";
        }

        //upload the big image
        move_uploaded_file ($file_tmp, "$path_big/$rand_name.$file_ext");

        //echo "<br>Image Big: <a href=\"$path_big/$rand_name.$file_ext\">$path_big/$rand_name.$file_ext</a>";

        //echo "<br><br>--<a href=\"$_SERVER[PHP_SELF]\">back</a>";

      //echo "$rand_name.$file_ext";

      $query = "INSERT INTO `immagini` (`big`,`thumbs`, `rand_name`) VALUES ('$path_big/$rand_name.$file_ext', '$path_thumbs/$rand_name.$file_ext', '$rand_name')";

      /* //test for insert db ok
      echo "$path_big/$rand_name.$file_ext";
      echo "<br />";
      echo "$path_thumbs/$rand_name.$file_ext";
      echo "<br />";
      echo "$descrizione";
      echo "<br />";

      */

      $result = mysql_query($query) or die("Query failed: ".mysql_error());

      if($result) {
        echo "<div class='err'><br /><br />L'immagine è stata inserita correttamente<br /><br /><br /></div>";
            echo "<meta http-equiv=refresh content=2;url=upload.php>";
        } else {
             echo "<div class='err'><br />Errore inserimento immagine.</div>";
               }


     }else{ //if the form hasn't been submitted.

      //print the form
      echo "

      <form method=\"post\" name=\"upForm\" enctype=\"multipart/form-data\" action=\"$_SERVER[PHP_SELF]\">
      <p>Pictures:<br /><br />
      <input type='file' name='imgfile' /><br /><br />
      <input type=\"Submit\" name=\"upForm\" value=\"Upload\" class='submit'>
      </p>
        </form>";
     }
     ?>
      </td>
   </tr>
</table>
inviato 9 anni fa
Falco72
X 0 X

inizia a modificare il form, mettendo 4 campi per indicare le immagini da uploadare:

<input type='file' name='imgfile1' />

<input type='file' name='imgfile2' />

<input type='file' name='imgfile3' />

<input type='file' name='imgfile4' />

poi devi ripetere il codice di gestione dell'upload 4 volte, modificando le righe:

$file_type = $_FILES['imgfile']['type'];

$file_name = $_FILES['imgfile']['name'];

$file_size = $_FILES['imgfile']['size'];

$file_tmp = $_FILES['imgfile']['tmp_name'];

affinché pntino di volta in volta a $_FILES['imgfile1'], $_FILES['imgfile2'], ecc..

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni, grazie x la tempestiva risposta. Ho provato quello che hai scritto ma ricevo un errore

Parse error: syntax error, unexpected ',' in C:\xampp\htdocs\progetti\script\upload_immagini\upload.php on line 16

l'errore lo da qui:

$file_type = $_FILES['imgfile1'], $_FILES['imgfile2'], $_FILES['imgfile3'], $_FILES['imgfile4']['type'];
risposto 9 anni fa
Falco72
X 0 X

Ciao Gianni, mi sono accorto di un pasticcio.... le immagini devono essere inserite tutte su una riga non una per riga.. ho rifatto il db cosi:

CREATE TABLE `immagini` (

  `idimmagini` int(11) NOT NULL auto_increment,

  `big1` varchar(45) collate latin1_general_ci default NULL,

  `thumbs1` varchar(45) collate latin1_general_ci default NULL,

  `big2` varchar(45) collate latin1_general_ci default NULL,

  `thumbs2` varchar(45) collate latin1_general_ci default NULL,

  `rand_name` varchar(45) collate latin1_general_ci default NULL,

  PRIMARY KEY  (`idimmagini`)

);

ma con il codice ora non so proprio da dove incominciare  :'(

risposto 9 anni fa
Falco72
X 0 X
ma con il codice ora non so proprio da dove incominciare  :'(

magari da un buon libro sul PHP? A vedere il codice che hai riportato è evidente che non conosci il PHP...

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

si hai ragione Gianni, conosco appena il php e purtroppo non ho il tempo materiale di andare a leggermi un buon libro, devo trovare una soluzione a questo problema nel + breve tempo possibile...

risposto 9 anni fa
Falco72
X 0 X

perdonami, ma se lasci questa tipologia di db e limiti a 4 immagini tramite il limit di mysql o un for di php x volta nn è uguale?

CREATE TABLE `immagini` (
  `idimmagini` int(11) NOT NULL auto_increment,
  `big` varchar(45) collate latin1_general_ci default NULL,
  `thumbs` varchar(45) collate latin1_general_ci default NULL,
  `rand_name` varchar(45) collate latin1_general_ci default NULL,
  PRIMARY KEY  (`idimmagini`)
);
risposto 9 anni fa
Pixelate
modificato 9 anni fa
X 0 X

ciao pixelate in realtà devo avere i dati in una sola riga... un utente può mettere + N immagini ... non ho afferrato il tuo concetto...

risposto 9 anni fa
Falco72
X 0 X

volevo dire che puoi estrarre 4 records x volta e tramite l'imaginazione renderli comunque tutti su una riga se è questo quello di cui necessiti..

risposto 9 anni fa
Pixelate
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda