Badyavka
Новичок
Добавление записи в бд.
Говорю сразу дома у меня все правильно работает, а вот на http://547-present.jino-net.ru/star/ неправильно...
Описание:
пользователь загружает свой файл (исключительно фотографию) на сайт. Загрузка происходит в 3 этапа...
1 шаг. Копирование $_FILES["filename"]["tmp_name"] во временную папку на самом сайте "./temp/".$_FILES["filename"]["name"].
2 шаг. Масштабирование (640*480) фотки и сохранение ее в папку.
3 шаг. Масштабирование (120*100) фотки и сохранение ее в другую папку. Здесь же происходит запись этой фотки в бд и удаление временного файла.
Проблема: при добавлении записи в бд вместо одной записи происходит 3!!! Одна правильная, другие 2 (одинаковые, отличающиеся от первой тем, что не все поля заполняются) нет.
Таблица в бд:
Функция добавления записи в бд:
Загрузка фотографий:
Говорю сразу дома у меня все правильно работает, а вот на http://547-present.jino-net.ru/star/ неправильно...
Описание:
пользователь загружает свой файл (исключительно фотографию) на сайт. Загрузка происходит в 3 этапа...
1 шаг. Копирование $_FILES["filename"]["tmp_name"] во временную папку на самом сайте "./temp/".$_FILES["filename"]["name"].
2 шаг. Масштабирование (640*480) фотки и сохранение ее в папку.
3 шаг. Масштабирование (120*100) фотки и сохранение ее в другую папку. Здесь же происходит запись этой фотки в бд и удаление временного файла.
Проблема: при добавлении записи в бд вместо одной записи происходит 3!!! Одна правильная, другие 2 (одинаковые, отличающиеся от первой тем, что не все поля заполняются) нет.
Таблица в бд:
PHP:
CREATE TABLE `star_Foto` (
`id` bigint(20) NOT NULL auto_increment,
`active` int(2) NOT NULL default '2',
`authlevel` int(2) default '0',
`file` varchar(100) NOT NULL,
`cid` bigint(20) default NULL,
`author` varchar(100) NOT NULL,
`data` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
PHP:
function NewFoto($file,$cid,$active,$author)
{
$Date = date("Y.m.d");
$sSQL = "INSERT INTO $this->sTable";
$sSQL .= "(active,file,cid,author,data)";
$sSQL .= "VALUES ('$active','$file','$cid','$author','$Date')";
$uResult=$this->objDB->Query($sSQL);
$err=$this->objDB->GetErrors();
if(!empty($err))
{
print($err);
return false;
}
return true;
}
PHP:
// Загрузка фотографий
function uploadfoto($cid)
{
if(Auth() > 0)
{
preg_match("'([a-z]+)\/[х\-]*([a-z]+)'", $_FILES["filename"]["type"], $ext);
switch($ext[2]) // проверка на фотографию
{
case "jpg":
case "jpeg":
case "pjpeg":
case "gif":
case "png":
break;
default:
Msg(22);
}
$im_prop = getimagesize($_FILES["filename"]["tmp_name"]);
if(($im_prop[0] > 0) and ($im_prop[0] < 1024*3*1024) ) // допустимый размер изображения
{
if(copy($_FILES["filename"]["tmp_name"],"./temp/".$_FILES["filename"]["name"])) // копирование во временную папку
{
$objFotoGalProc=new TFotoGallery('./includes/mysql_php4.class.php');
$galpath=$objFotoGalProc->fn_bGetGalPath($cid);
$f2 = FotoName($cid,$galpath);
// step 2
GoPage('foto&type=ftpfoto&step=2&f1='.$_FILES["filename"]["name"].'&f2='.$f2.'&cid='.$cid);
}
else
{
echo("Ошибка загрузки файла");
}
}
else
{
echo("Недопустимый размер изображения!");
}
}
else Msg(20);
}
// шаг 2
function uploadfoto_step_2($f1,$f2,$cid)
{
$objFotoGalProc=new TFotoGallery('./includes/mysql_php4.class.php');
$galpath=$objFotoGalProc->fn_bGetGalPath($cid);
$filename = "./temp/".$f1;
resizeimg($filename, $f2, "big", $galpath); // масштабирование
// step 3
GoPage('foto&type=ftpfoto&step=3&f1='.$f1.'&f2='.$f2.'&cid='.$cid);
}
// шаг 3
function uploadfoto_step_3($f1,$filenamenew,$cid)
{
$objFotoGalProc=new TFotoGallery('./includes/mysql_php4.class.php');
$galpath=$objFotoGalProc->fn_bGetGalPath($cid);
$filename = "./temp/".$f1;
$filenamenew = resizeimg($filename, $filenamenew, "small", $galpath); // масштабирование
$objFotoProc=new TFoto('./includes/mysql_php4.class.php');
$active = 1;
$author = $_SESSION['login'];
$objFotoProc->NewFoto($filenamenew,$cid,$active,$author); // !!!!!!!!! ПРОБЛЕМА !!!!!!!!!!!!!!!
unlink($filename) or Msg(22);
GoPage('foto&type=foto&cid='.$cid);
}
//--------------------------------------------------------------------------------------------------
// Масштабирование фотографии
function resizeimg($filename, $filenamenew, $size, $gal)
{
if ($size=="big")
{
$w=640;
$h=640;
}
if ($size=="small")
{
$w=100;
$h=100;
}
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// Если размеры меньше, то масштабирования не нужно
if (($size_img[0]<$w) && ($size_img[1]<$h))
{
if ($size_img[2]==1) $type_img = ".gif";
elseif ($size_img[2]==2) $type_img = ".jpg";
elseif ($size_img[2]==3) $type_img = ".png";
copy($filename, sFotoDir.$gal."/".$size."/".$filenamenew.$type_img);
return true;
}
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
// пропорции исходного изображения
if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
}
else
{
$w = $h*$src_ratio;
}
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
elseif ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
elseif ($size_img[2]==3) $src_img = imagecreatefrompng($filename);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// сохраняем уменьшенную копию в файл
if ($size_img[2]==2)
{
$smallimage = sFotoDir.$gal."/".$size."/".$filenamenew.".jpg";
imagejpeg($dest_img, $smallimage);
$newfile = $filenamenew.".jpg";
}
elseif ($size_img[2]==1)
{
$smallimage = sFotoDir.$gal."/".$size."/".$filenamenew.".gif";
imagegif($dest_img, $smallimage);
$newfile = $filenamenew.".gif";
}
elseif ($size_img[2]==3)
{
$smallimage = sFotoDir.$gal."/".$size."/".$filenamenew.".png";
imagepng($dest_img, $smallimage);
$newfile = $filenamenew.".png";
}
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return $newfile;
}
//--------------------------------------------------------------------------------------------------
// Имя масштабируемой фотографии
function FotoName($cid,$galpath)
{
$objFotoProc=new TFoto('./includes/mysql_php4.class.php');
$iFoto = $objFotoProc->CountAllFoto();
$iFoto++;
$name = 'star_'.$cid.'_'.$iFoto;
$dirpath = sFotoDir.$galpath."/small";
$hndl = opendir($dirpath);
while(false !== ($sName = readdir($hndl)))
{
if(($sName == $name.".jpg") or ($sName == $name.".JPG") or
($sName == $name.".gif") or ($sName == $name.".GIF") or
($sName == $name.".png") or ($sName == $name.".PNG"))
{
$iFoto++;
$name = 'star_'.$cid.'_'.$iFoto;
}
}
return $name;
}