- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Risolto] Inserire foto predefinita da codice
-
[Risolto] Inserire foto predefinita da codice
Ciao a tutti, vi chiedo un aiuto, ho creato un form di inserimento con varie voci tra cui la voce aggiungi foto (che è un capo obbligatorio ),quindi sono obbligato ad inserire sempre la foto se no non mi inserire l?articolo, io vorrei che se il capo passato ?foto? e vuoto mi inserisce una foto predefinita, ho provato con if else . pos tutto il codice grazie a tutti
[php]
<?php //classe update e ridimensionamento automatico//questi sono i valori passati da form
//$immagine = $_FILES['immagine']['type'];//questi sono i valori passati da form
//$file =$_FILES['immagine']['name'];
//questa e la ver. modificata del passag dei dati da form, inteoria se il form non passa dati esegue else
$immagine_ = $FILES['immagine']['type'];
$file =$FILES['immagine']['name'];
$direc ="../../images/noimage.png";
if ( !empty ($immagine)) {$type = $immagine_;}
elseif (empty ($immagine_))
{
$type = $direc;
}if ( !empty ($file_))
{
$file = $file_;
}
elseif (empty ($file_))
{
$file = $direc;
}$type = array("image/gif","image/x-png", "image/png","image/pjpeg","image/jpeg", "image/jpg");
if(!in_array($_FILES['immagine']['type'],$type))
{
die("Il file non è di un tipo consentito, sono ammessi solo i seguenti: " . implode("," , $type) . ".");
}$dir ="../../images/staff/foto/";
$timestamp = time();
$urlimmagine = $dir.time() .'-'. $file;
copy($_FILES['immagine']['tmp_name'], $urlimmagine);
$destination_path = '../../images/staff/thumb/'.time() .'-'. $file;
$sImgInfo = getimagesize($urlimmagine);
$max_width = "800";
$max_height = "800";
$sMaxWidth = $sImgInfo[0];
$sMaxHeight = $sImgInfo[1];
if ($sMaxWidth > $max_width || $sMaxHeight > $max_height) {
die ("Errore: La Foto ha Dimisioni Maggiori di 800x800 " .mysql_error());
exit; }
list () = thummain ($type, $file, $destination_path, $sMaxWidth, $sMaxHeight, $sImgInfo, $urlimmagine);
function thummain( $type, $file, $destination_path, $sMaxWidth, $sMaxHeight, $sImgInfo, $urlimmagine)
{
switch($sImgInfo[2])
{
case 1: $sType = IMG_GIF; break;
case 2: $sType = IMG_JPG; break;
case 3: $sType = IMG_PNG; break;
case 4: $sType = IMG_WBMP; break;
default: return $urlimmagine; break;
}
switch($sType)
{
case IMG_GIF:
if (!function_exists('imagecreatefromgif')) return $urlimmagine;
$srcImage = imagecreatefromgif($urlimmagine) or die ("Impossibile aprire l'immagine originale");
break;
case IMG_JPG:
if (!function_exists('imagecreatefromjpeg')) return $urlimmagine;
$srcImage = imagecreatefromjpeg($urlimmagine) or die ("Impossibile aprire l'immagine originale");
break;
case IMG_PNG:
if (!function_exists('imagecreatefrompng')) return $urlimmagine;
$srcImage = imagecreatefrompng($urlimmagine) or die ("Impossibile aprire l'immagine originale");
break;
case IMG_WBMP:
if (!function_exists('imagecreatefromwbmp')) return $urlimmagine;
$srcImage = imagecreatefromwbmp($urlimmagine) or die ("Impossibile aprire l'immagine originale");
break;
default: return $urlimmagine;
}
if($srcImage)
{
$srcWidth = $sImgInfo[0];
$srcHeight = $sImgInfo[1];$sNewWidth = 250; $sNewHeight = ($sNewWidth * $srcHeight) / $srcWidth; if (!function_exists("imagecreatetruecolor")) $sDestImage = imagecreate($sNewWidth, $sNewHeight) or die("Impossibile creare la miniatura"); else $sDestImage = imagecreatetruecolor($sNewWidth, $sNewHeight); imagecopyresized($sDestImage, $srcImage, 0, 0, 0, 0, $sNewWidth, $sNewHeight, $srcWidth, $srcHeight); switch($sType) { case IMG_GIF: imagegif($sDestImage, $destination_path); break; case IMG_JPG: imagejpeg($sDestImage, $destination_path); break; case IMG_PNG: imagepng($sDestImage, $destination_path); break; case IMG_WBMP: imagewbmp($sDestImage, $destination_path); break; } imagedestroy($srcImage); imagedestroy($sDestImage); return $destination_path; } else { return $urlimmagine; }
}
?>
[/php]
-
E' inutile ridimensionare la foto che metti tu, quindi per fare quello che dici è sufficiente fare così:
<?php //classe update e ridimensionamento automatico //questi sono i valori passati da form //$immagine = $_FILES['immagine']['type']; //questi sono i valori passati da form //$file =$_FILES['immagine']['name']; ----------------------------------------------------------------- //questa e la ver. modificata del passag dei dati da form, inteoria se il form non passa dati esegue else $immagine_ = $_FILES['immagine']['type']; $file_ =$_FILES['immagine']['name']; $direc ="../../images/noimage.png"; if ( !empty ($immagine_)) {$type = $immagine_;} elseif (empty ($immagine_)) { return($direc); }
-
Beh io per le foto predefinite lascio il campo sul db vuoto e quando vado a estrarlo in una pagina faccio il controllo per vedere se il campo è vuoto o no, nel caso sia vuoto inserisco io la foto.
-
Scusa se scrivi solo adesso, ho avuto un problema con_l'adsl.
Ho fatto come avete detto e funziona alla grande grazie.
Vi posso fare una domanda sul collegamento salvato nel database?
Io dal form passo la foto alla mia funzione che la salva per esempio nella cartella /images però il collegamento che va nel database è ../images, perché la mia funzione di inserimento è nella cartella /admin mentre la cartella images è in root, quindi la foto la vedo solo nelle sotto pagine di root perché ho il ../ nel database. Come devo fare (che tipo di collegamento devo creare) per visualizzare le foto in tutte le pagine e sotto pagine e ecc del sito? Grazie a tutti.
-
Basta che salvi sul db solo il nome del file, poi quando vai a visualizzare la tua immagine nella pagina prima del nome del file gli scrivi il nome della cartella...
Spero di essermi spiegato, ciao.
-
Ciao grazie del cosiglio ho fatto come hai detto:), adesso ho un nuovo problema, ho modificato la funzione delete articolo in base al id passo in modo da eliminare anche le foto dell articolo salvate nel server, quindi ho rimodificato la funzione inseriri foto predefinita in modo che viene copiata dalla cartella root alla cartella images, il problema è che uso png e la foto che va nella cartella cambia colore come se non è png.
Vi copio la sessione del codice che copia la foto
[php]$immagine = $_FILES['immagine']['type'];
if (!empty ($immagine))
{
$timestamp = time();
$type = $immagine;
$file = time() .'-'.$_FILES['immagine']['name'];
$type = array("image/gif","image/x-png", "image/png","image/pjpeg","image/jpeg", "image/jpg");
if(!in_array($_FILES['immagine']['type'],$type))
{
die("Il file non è di un tipo consentito, sono ammessi solo i seguenti: " . implode("," , $type) . ".");
}
$sImgInfo = getimagesize($_FILES['immagine']['tmp_name']);
$max_width = "1024";
$max_height = "1024";
$sMaxWidth = $sImgInfo[0];
$sMaxHeight = $sImgInfo[1];
if ($sMaxWidth > $max_width || $sMaxHeight > $max_height)
{
die ("Errore: La Foto ha Dimisioni Maggiori di 1024x1024 " .mysql_error());
exit;
}$dir ="../../images/dipartimento/foto/";
$urlimmagine = $dir.$file;
copy($_FILES['immagine']['tmp_name'], $urlimmagine);
$destination_path = '../../images/dipartimento/thumb/'.$file;
$photo = $file;
}
elseif (empty ($immagine))
{
$timestamp = time();
$files = '../../images/noimage.png';
$thumb = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");
$thumbs = '../../images/dipartimento/thumb/'.time().'-'.'noimage.png';
imagepng ($thumb, $thumbs);
$file = time().'-'.'noimage.png';$img = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");
$imgs = '../../images/dipartimento/foto/'.time().'-'.'noimage.png';
imagepng ($img, $imgs);
$photo = time().'-'.'noimage.png';
}[/php]
Le variabili $photo e $file solo quelle che copio nel database, la variabile $immagine e la foto che passo dal form.
Grazie a tutti.P.S.: se qualcuno ha bisogno di tutto il codice updata images lo copio tutto