- Home
- Categorie
- Coding e Sistemistica
- Coding
- immagini in php
- 
							
							
							
							
							
immagini in phpDopo aver creato una tabella con la seguente query: create table file_upload (id int(11) UNSIGNED NOT NULL auto_increment, bin_data blob, filename varchar(150) default NULL 
 , filesize varchar(50) default NULL, filetype varchar(50) default NULL, width int(4) default NULL,
 height int(4) default NULL , thumb mediumblob NOT NULL, PRIMARY KEY (id)) TYPE=MyISAM;Immetto in essa le immagini e le relative informazioni richieste dai campi con i seguenti due script: upload.htm <html> 
 <head>
 <title>PHP Professionale</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </head>
 <body>
 <form name="formUpload" enctype="multipart/form-data" method="post" action="upload02.php">
 <p>
 <input name="fileUP" type="file" id="fileUP">
 </p>
 <p>
 <input type="submit" name="Submit" value="Invia">
 </p>
 </form>
 </body>
 </html>il quale una volta immesso l'indirizzo dell' immagine e cliccato sul pulsante invia mi mostra in una nuova pagina chiamata upload2.php l'anteprima dell'immagine e carica i dati sul DB : upload02.php : <?php 
 // se riceviamo i dati dal form
 if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_FILES['fileUP'] > 0 )
 $fileName = $_FILES['fileUP']['name'];
 $tmpName = $_FILES['fileUP']['tmp_name'];
 $fileSize = $_FILES['fileUP'];
 $fileMimeSize = $_FILES['fileUP']['type'];
 // Ricaviamo le informazioni sull'immagine
 list($width,$height,$type,$attr) = getimagesize( $_FILES['fileUP']['tmp_name']);
 // controlliamo che il lato maggiore dell'immagine non superi i 640 pixel
 if(($width > 640 ) || ($height > 640))
 {$msg = "<p>Immagine di dimensione superiori al consentito<</p>";}
 // in base al tipo di immagine creiamo un tipo temporanea del tipo corretto
 switch ($type){
 case 1: // gif
 $img_in=imagecreatefromgif($tmpName) or die ("impossibile creare l'immagine");
 if(!isset($extension))
 {$extension = "jpg";}
 break;
 case 2: // jpg
 $img_in=imagecreatefromjpeg($tmpName) or die ("impossibile creare l'immagine");
 if(!isset($extension))
 {$extension = "jpg";}
 break;
 case 3: // png
 $img_in=imagecreatefrompng($tmpName) or die ("impossibile creare l'immagine");
 if(!isset($extension))
 {$extension = "png";}
 break;
 default:
 die("impossibile creare l'immagine");
 }
 // Calcoliamo la percentuale di ridimensionamento in base alle dimensioni finali desederate
 $thumb_max_width = 100;
 $thumb_max_height = 100;
 $percentuale = ($width > $height) ? $thumb_max_width / $width: $thumb_max_height / $height;
 $th_width = $width * $percentuale;
 $th_height = $height * $percentuale;
 $img_new = imagecreatetruecolor($th_width,$th_height);
 imagecopyresampled($img_new,$img_in,0,0,0,0,$th_width,$th_height,$width,$height);
 if($fileSize > 64000) {
 die ("dimensione in KB dell'immagine superiore al consentito.");
 }
 // prepariamo i dati per l'inserimento in MYSQL
 ob_start();
 // creiamo il thumbnail in formato in jpeg
 imagejpeg($img_new);
 $thumbTemp = ob_get_contents();
 $thumbnail = addslashes($thumbTemp);
 ob_end_clean();
 $immagine = addslashes(fread(fopen($tmpName, "r"), $fileSize));
 // apriamo la connessione al database
 $db_host ="";
 $db_user = "";
 $db_name = "";
 $db_password = "";
 $connection = mysql_connect($db_host,$db_user,$db_password) or die ("Impossibile connettersi al server MySQL.\n");
 mysql_select_db($db_name,$connection) or die ("Impossibile aprire il database.\n");
 // inseriamo i dati nella tabella
 $sql = "INSERT INTO file_upload (bin_data, filename , filesize , filetype, width , height , thumb) VALUES ('$immagine' , '$fileName' , '$fileSize' , '$extension' , $width , $height ,'$thumbnail')";$sql_result = mysql_query($sql,$connection) or die (mysql_error()); 
 $id = mysql_insert_id();
 // chiudiamo la commessione
 mysql_close($connection);// a seconda del tipo di immagine inviamo al browser l'header corretto 
 switch($extension) {
 case "gif":
 header("content-type:image/gif");
 imagejpeg($img_new);
 exit;
 case "jpg":
 header("content_type:image/jpeg");
 imagejpeg($img_new);
 exit;
 case "png":
 header("content_type:image/png");
 imagepng($img_new);
 exit;
 default:
 die ("impossibile visualizzare l'immagine");
 }?> fino a qui tutto bene, i dolori incominciano ora, perchè quando clicco sul file visualizza.php mi compare una tabellina di sfondo grigio chiaro che dovrebbe mostrarmi le immagini in miniatura e una volta cliccato sulle immagini in miniatura dovrebbero apparire le immagini in una finestra di grandezza preimpostate, ma invece mi compare solo la tabellina con al posto delle immagini delle x e quando clicco su di esse si apre una finestra nera di dimensioni preimpostate ma con al posto della immagine grande una x nell'angolo superiore sinistro: visualizza.php: <html> 
 <head>
 <title></title>
 <script language="JavaScript">
 /* funzione javascript per aprire le immagini in una nuova finestra di dimensione prefissata */
 function openImg(id,imgW,imgH) {var winWidth = eval(imgW) + 20; 
 var winHeight = eval(imgH) + 20;
 var features = "width=" + winWidth + ",height=" + winHeight+"";
 copWindow = window.open("","PHP",features);
 copWindow.document.write("<html>\n<head><title>PHP professionale </title></head>\n");
 copWindow.document.write("<body bgcolor='#000000'>\n");
 copWindow.document.write("<a href='javascript:window.close();'>");
 copWindow.document.write("<img src='/immagine.php?id="+id+"'width='"+imgW+"'height='"+imgH+"' border='0' title='clicca per chiudere'></a>\n");
 copWindow.document.write("</body>\n</html>");
 }
 </script>
 </head>
 <body>
 <?php
 // connessione al database
 $db_host = "";
 $db_user = "";
 $db_password = "";
 $db_name = "";
 $connection = mysql_connect($db_host,$db_user,$db_password) or die ("Impossibile connettersi al server Mysql.\n");
 mysql_select_db($db_name,$connection) or die ("Impossibile aprire il database.\n");
 $sql = "SELECT id,filename,filetype,width,height FROM file_upload ORDER BY id";
 $sql_result = mysql_query($sql,$connection) or die (mysql_error());
 $tot = mysql_num_rows($sql_result);
 print "<p> </p><table border='0' align='center' cellpadding='5' cellspacing='1' bgcolor='#CCCCCC'>\n";
 $i=0;
 while($ValoriRiga=mysql_fetch_array($sql_result)) {
 $id=$ValoriRiga["id"];
 $filename=$ValoriRiga["filename"];
 $width=$ValoriRiga["width"];
 $height=$ValoriRiga["height"];if($i==0 || $i%4 ==0) 
 {
 echo "</tr valign="top">\n";
 }print "<td align='center' valign='middle'> <a href="javascript:openImg('$id','$width','$height')"> <img src='thumb.php?id=$id' title='clicca per ingrancire' border='0'> </a></td>\n"; if($i > 0 && $i % 4 == 3){ 
 echo "</tr>\n";
 }$i++; 
 }
 for($j=0 ; $j < $tot % 4; $j++){
 echo " <td> </td>\n";
 }if($tot-4 >0 ){ 
 echo "</tr>\n";
 }print "</table>"; mysql_free_result($sql_result); 
 mysql_close($connection);
 ?>i seguenti file thumb.php e immagine.php servono a visualizza per visualizzare prima le anteprime nella tabella (thumb.php) e poi l'immagine nella finestra di dimensioni preimpostate (immagine.php) thumb.php: <?php 
 $db_host ="";
 $db_user ="";
 $db_password ="";
 $db_name ="";
 $connection = mysql_connect($db_host,$db_user,$db_password) or die ("Impossibile connettersi al server Mysql.\n");
 mysql_select_db($db_name,$connection) or die ("Impossibile aprire il database.\n");
 // dopo essersi connessi al database, recupera i dati del thumbnail dell'immagine identificata dall'id passato come parametro nell'URL
 $sql="SELECT thumb FROM file_upload WHERE id=".$_GET['id']."";
 $result=mysql_query($sql) or die ("Error " . mysql_errno() . " : " . mysql_error());
 mysql_close($connection);
 $riga=mysql_fetch_row($result);
 // il thumbnail è salvato in formato JPEG , quindi impostiamo il content/type appropriato nell'header della risposta HTTP
 header("Content-type:image/jpeg");
 print $riga[0];
 exit;
 ?>immagine.php: <?php 
 $db_host = "";
 $db_user = "";
 $db_password = "";
 $db_name = "";
 $connection=mysql_connect($db_host,$db_user,$db_password) or die ("Impossibile connettersi al server Mysql.\n");
 mysql_select_db($db_name,$connection) or die ("Impossibile aprire il database.\n");
 // dopo essersi connessi al database, recupera i dati del thumbnail dell'immagine identificata dall'id passato come parametro nell'URL
 $sql="SELECT bin_data , filename, filetype FROM file_upload WHERE id=". $_GET['id'] . "";
 $result=mysql_query($sql) or die ("Error " . mysql_errno() . " : " . mysql_error());
 mysql_close($connection);
 $riga=mysql_fetch_row($result);
 // a seconda del tipo di immagine impostiamo il content typeswitch ($riga[2]) { 
 case "gif":
 header("Content-type:image/gif");
 // con questa istruzione impostiamo il nome del file
 header("Content-Disposition: inline; filename=$riga[1];");
 print $riga[0];
 exit;
 case "jpg":
 header("Content-type:image/jpeg");
 header("Content-Disposition: inline; filename=$riga[1];");
 print $riga[0];
 exit;
 case "png":
 header("Content-type:image/png");
 header("Content-Disposition: inline; filename=$riga[1];");
 print $riga[0];
 exit;
 default:
 die ("Impossibile visualizzare l'immagine");
 }
 ?>c'e qualcuno che puo aiutarmi a visualizzare queste benedette immagini , sono giorni che cerco una soluzione , credo che l'errore sia in questa riga di codice del file Visualizza.php: print "<td align='center' valign='middle'> <a href="javascript:openImg('$id','$width','$height')"> <img src='thumb.php?id=$id' title='clicca per ingrancire' border='0'> </a></td>\n"; grazie in anticipo per qualsiasi suggerimento. 
 
- 
							
							
							
							
							
Controlla nelle proprietò dell'immagine l'indirizzo url di questa e postalo,indicando l'indirizzo come dovrebbe essere se corretto.