Здравейте , намерих перфектен скрипт който качва 3 снимки в дадена директория (uploads) , компресира ги по размер и пиксели и създава миниатюри с префикс thumb_ . До тук идеално , всичко работи перфектно . Проблема идва от това че искам да създам формуляр за продукти , но за самите продукти имам 17 полета и колега ме посъветва да изнеса реално тези 6снимки , които се получава от скрипта в отделна таблица - така и направих , ето структурата :
products:
id
snimka
ime
..
...
.....
snimki
sid
golqmasnimka
malkasnimka
products.id<=>snimki.sid
Вмомента като кача снимките ми създава 3 id-та:
и не мога да разбера как ще го свържа с products таблицата и как ще напъхам останалите 17полета от формуляра в този код който дадох :d помагайте някак , че мн я фтасах ;d
products:
id
snimka
ime
..
...
.....
snimki
sid
golqmasnimka
malkasnimka
products.id<=>snimki.sid
PHP:
<?php
$ThumbSquareSize = 150; //Thumbnail will be 200x200
$BigImageMaxSize = 500; //Image Maximum height or width
$ThumbPrefix = "thumb_"; //Normal thumb Prefix
$DestinationDirectory = 'uploads/'; //Upload Directory ends with / (slash)
$Quality = 90;
foreach($_FILES as $file)
{
$ImageName = $file['name'];
$ImageSize = $file['size'];
$TempSrc = $file['tmp_name'];
$ImageType = $file['type'];
if (is_array($ImageName))
{
$c = count($ImageName);
echo '<ul>';
for ($i=0; $i < $c; $i++)
{
$processImage = true;
$RandomNumber = rand(0, 9999999999);
if(!isset($ImageName[$i]) || !is_uploaded_file($TempSrc[$i]))
{
echo 'Грешка: <strong>'.$ImageName[$i].'</strong>, не сте избрали файл или файла е твърде голям!';
}
else
{
switch(strtolower($ImageType[$i]))
{
case 'image/png':
$CreatedImage = imagecreatefrompng($TempSrc[$i]);
break;
case 'image/gif':
$CreatedImage = imagecreatefromgif($TempSrc[$i]);
break;
case 'image/jpeg':
case 'image/pjpeg':
$CreatedImage = imagecreatefromjpeg($TempSrc[$i]);
break;
default:
$processImage = false;
}
list($CurWidth,$CurHeight)=getimagesize($TempSrc[$i]);
$ImageExt = substr($ImageName[$i], strrpos($ImageName[$i], '.'));
$ImageExt = str_replace('.','',$ImageExt);
$NewImageName = $RandomNumber.'.'.$ImageExt;
$thumb_DestRandImageName = $DestinationDirectory.$ThumbPrefix.$NewImageName;
$DestRandImageName = $DestinationDirectory.$NewImageName;
if($processImage && resizeImage($CurWidth,$CurHeight,$BigImageMaxSize,$DestRandImageName,$CreatedImage,$Quality,$ImageType[$i]))
{
if(!cropImage($CurWidth,$CurHeight,$ThumbSquareSize,$thumb_DestRandImageName,$CreatedImage,$Quality,$ImageType[$i]))
{
echo 'Грешка с правенето на миниатюра!';
}
list($ResizedWidth,$ResizedHeight)=getimagesize($DestRandImageName);
echo '<table width="100%" border="0" cellpadding="4" cellspacing="0">';
echo '<tr>';
echo '<td align="center"><img src="uploads/'.$ThumbPrefix.$NewImageName.'" alt="Thumbnail" height="'.$ThumbSquareSize.'" width="'.$ThumbSquareSize.'">link: "uploads/'.$ThumbPrefix.$NewImageName.'"</td>';
echo '</tr><tr>';
echo '<td align="center"><img src="uploads/'.$NewImageName.'" alt="Resized Image" height="'.$ResizedHeight.'" width="'.$ResizedWidth.'"><br />
link: "uploads/'.$NewImageName.'"</td>';
echo '</tr>';
echo '</table>';
include ('db.php');
mysql_query("INSERT INTO snimki (golqmasnimka, malkasnimka)
VALUES ('$DestRandImageName', '$thumb_DestRandImageName') ") or die(mysql_error());
}else{
echo 'Грешка:<strong>'.$ImageName[$i].'</strong>! Форматът на файла не е поддържан!</div>';
}
}
}
echo '</ul>';
}
}
function resizeImage($CurWidth,$CurHeight,$MaxSize,$DestFolder,$SrcImage,$Quality,$ImageType)
{
if($CurWidth <= 0 || $CurHeight <= 0)
{
return false;
}
$ImageScale = min($MaxSize/$CurWidth, $MaxSize/$CurHeight);
$NewWidth = ceil($ImageScale*$CurWidth);
$NewHeight = ceil($ImageScale*$CurHeight);
if($CurWidth < $NewWidth || $CurHeight < $NewHeight)
{
$NewWidth = $CurWidth;
$NewHeight = $CurHeight;
}
$NewCanves = imagecreatetruecolor($NewWidth, $NewHeight);
if(imagecopyresampled($NewCanves, $SrcImage,0, 0, 0, 0, $NewWidth, $NewHeight, $CurWidth, $CurHeight))
{
switch(strtolower($ImageType))
{
case 'image/png':
imagepng($NewCanves,$DestFolder);
break;
case 'image/gif':
imagegif($NewCanves,$DestFolder);
break;
case 'image/jpeg':
case 'image/pjpeg':
imagejpeg($NewCanves,$DestFolder,$Quality);
break;
default:
return false;
}
if(is_resource($NewCanves)) {
imagedestroy($NewCanves);
}
return true;
}
}
function cropImage($CurWidth,$CurHeight,$iSize,$DestFolder,$SrcImage,$Quality,$ImageType)
{
if($CurWidth <= 0 || $CurHeight <= 0)
{
return false;
}
if($CurWidth>$CurHeight)
{
$y_offset = 0;
$x_offset = ($CurWidth - $CurHeight) / 2;
$square_size = $CurWidth - ($x_offset * 2);
}else{
$x_offset = 0;
$y_offset = ($CurHeight - $CurWidth) / 2;
$square_size = $CurHeight - ($y_offset * 2);
}
$NewCanves = imagecreatetruecolor($iSize, $iSize);
if(imagecopyresampled($NewCanves, $SrcImage,0, 0, $x_offset, $y_offset, $iSize, $iSize, $square_size, $square_size))
{
switch(strtolower($ImageType))
{
case 'image/png':
imagepng($NewCanves,$DestFolder);
break;
case 'image/gif':
imagegif($NewCanves,$DestFolder);
break;
case 'image/jpeg':
case 'image/pjpeg':
imagejpeg($NewCanves,$DestFolder,$Quality);
break;
default:
return false;
}
if(is_resource($NewCanves)) {
imagedestroy($NewCanves);
}
return true;
}
}
Вмомента като кача снимките ми създава 3 id-та:
и не мога да разбера как ще го свържа с products таблицата и как ще напъхам останалите 17полета от формуляра в този код който дадох :d помагайте някак , че мн я фтасах ;d