|
 20.8 Кб |
|
| Добрый день! У меня есть сайт друзей по переписки http://gedeon-ixtus.spb.ru/
В последнее время все больше сталкиваюсь с такой проблемой: пользователь регистрируется через анкету, там же добавляет фото, иногда его фото удваивается и заменяет предыдущее фото. Как бы я чего не исправлял глюк повторяется. Помогите!
Код передачи данных :
<?php
include ("../block/bd.php");
include ("../block/grafi.php");
$result = mysql_query ("INSERT INTO `brides_data`
(`fname`, `sname`, `birth_d`, `birth_month`, `birth_yr`,
`country`, `town`, `sex`, `length`, `weight`, `alkogol`, `fuma`,
`marital_status`, `children`, `education`, `sfera_deeds`, `foreign_lang`,
`foreig_lang_level`, `hobbies`, `charakter`, `selfpresentation`, `email`,
`password`, `img_url`) VALUES ('$fname', '$sname', '$birth_d',
'$birth_month', '$birth_yr', '$country',
'$town', '$sex', '$length', '$weight', '$alkogol', '$fuma',
'$marital_status', '$children', '$education', '$sfera_deeds',
'$foreign_lang', '$foreig_lang_level', '$hobbies', '$charakter',
'$selfpresentation', '$email', '$password', '$img_url');");
$uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] .'/image/img_brides/';
$fieldname = 'foto_upload';
$uploadedfile = $_FILES[$fieldname]['tmp_name'];
$out = mysql_query ("SELECT id_bride FROM brides_data ORDER BY id_bride DESC",$db);
$myrow = mysql_fetch_array ($out);
$id_bride = $myrow['id_bride'];
$src = imagecreatefromjpeg($uploadedfile);
list($width,$height)=getimagesize($uploadedfile);
$newwidth=150;
$newheight=($height/$width)*150;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$resultfile = $uploadsDirectory.$id_bride.".jpg";
//'-'.$_FILES[$fieldname]['name'];
imagejpeg($tmp,$resultfile,100);
$filename = $id_bride.".jpg";
$imgparth = mysql_query ("UPDATE `brides_data` SET `img_url` = '$filename' WHERE `id_bride` = '$id_bride';");
imagedestroy($src);
imagedestroy($tmp);
unlink($uploadedfile);
$theme = "New user";
$to = "my@mail.ru";
$message = "
<html>
<head></head>
<body>
".date("d.m.Y H:i:s")."
".$fname." ".$sname." ".$birth_yr."".$country."
".$town." ".$sex."".$selfpresentation." ".$email."
</html>
</body>
";
$message = convert_cyr_string($message, 'w', 'k');
$headers = "Content-Type: text/html; charset=KOI8-R\r\n";
//
if ($result && $imgparth == 'true')
{
echo "Ваши данные добавлены в базу данных! <br> Your data are added to base!";
mail($to, $subject, $message, $headers);
}
else
{
echo "<b>Ошибка! Обратитесь к администратору! <br>Не используйте знак одиночной кавычки ' !<br> Error! Contact administrator<br> Dont use ' !</b>";
}
exit
?>
|
Вывод на страницу:
<?php
include ("../block/bd.php");
$show_cols = 4; // кол-во колонок
$show_rows =10; // кол-во строк
//if (!isset($start1)) $start1=1; //если нач.страница не установлена, идем на первую
$start1 = (isset($_GET['start1'])) ? intval($_GET['start1']): 1;
//определяем, сколько столбцов и где мы находимся
$query = ("SELECT * FROM brides_data order by id_bride");//здесь можно только кол-во записей запрашивать
$array = mysql_query($query);
$num_rows = mysql_num_rows($array); //всего строк в базе
$cols=floor($num_rows/$show_cols); //всего кол-во столбцов
$pages = floor($num_rows/($show_cols*$show_rows));//кол-во страниц
if ($num_rows > $show_cols*$show_rows*$pages) $pages++; //если строк в базе больше, чем помещается на одной странице, переходим на след.
for ($ii=1; $ii<=$pages; $ii++) { //начинаем цикл перебора всех страниц
$from1=$ii*$show_rows*$show_cols-($show_rows*$show_cols-1); //
$to1=$ii*$show_rows*$show_cols; //кол-во показ.страниц
if ($to1 > $num_rows) $to1 = $num_rows; //если кол-во показ.страниц больше, чем строк в базе, делаем его равным
if ($start1==$from1) echo "| <font style=\"font-face: Verdana, Arial, Helvetica, sans-serif;
color : #ff8c00; font-weight : bold; font-size: 12px;\">$from1 - $to1</font>";
else
{echo " | <a href=\"?start1=$from1\" style=\"font-face: Verdana, Arial, Helvetica, sans-serif;
color : #000000; font-weight : bold; font-size: 12px;\"> $from1 - $to1</a>";}
}
/// вывод страницы
if ($num_rows > $pages*$show_cols*$show_rows) $vid++;
for ($iii=0; $iii<=$vid; $iii++) {
/// вывод таблицы
if ($num_rows > $show_rows) $show_rows++;
for ($i=2; $i<=$show_rows; $i++) {
$start1=$start1 - 1;
$query = "SELECT img_url FROM brides_data ORDER BY id_bride limit $start1,$show_cols";
$start1=$start1+$show_cols + 1;
$result = mysql_query($query);
$number = mysql_num_rows($result);?>
<table border="0">
<tr>
<?php
echo"<table align=center border=\"0\" cellpadding=5 cellspacing=2 >";
$j = 0;
WHILE ($j < $number)// вывод строки
{
$pic_name = mysql_result($result,$j,"img_url");
echo"<td align=center bgcolor=#ffffff valign=middle style=\"border-style: solid; border-color: #909090; border-width: 1px\">
<A HREF=\"/ru_gi/private.php?id=$pic_name\"><img src=\"/image/img_brides/".$pic_name."\" border=0></A></TD>";
$j++;
}// конец вывода строки
}// конец вывода таблицы
}// конец вывода страницы
///
?> </td>
</tr>
|
| |
|
|
|
|
|
|
|
для: Слава Троцак
(08.09.2008 в 17:12)
| | проблема в этих строках:
$out = mysql_query ("SELECT id_bride FROM brides_data ORDER BY id_bride DESC",$db);
$myrow = mysql_fetch_array ($out);
$id_bride = $myrow['id_bride'];
Так первичный ключ вытаскивать нельзя.
Для получения ключа только что добавленной строки существует функция mysql_insert_id() | |
|
|
|
|
|
|
|
для: Слава Троцак
(08.09.2008 в 17:12)
| | Вы хотя бы проверяли перед операциями над изображением, что этот самый $_FILES[$fieldname]['tmp_name']; загружен на сервер и без ошибок. А то вы не зная этого, в базу путь пишите к нему. А после того как убедились, как произвели изменения с ним, потом только записали в базу (а это касается всех принятых данных от пользователя), делайте переход (можно внутри страницы, можно на ту, что выводит результат), чтобы блокировать повтор по F5, и блокируйте запись. | |
|
|
|
|