Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод фото
 
 автор: Слава Троцак   (08.09.2008 в 17:12)   письмо автору
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>
          


  Ответить  
 
 автор: Trianon   (08.09.2008 в 17:34)   письмо автору
 
   для: Слава Троцак   (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()

  Ответить  
 
 автор: sim5   (08.09.2008 в 17:36)   письмо автору
 
   для: Слава Троцак   (08.09.2008 в 17:12)
 

Вы хотя бы проверяли перед операциями над изображением, что этот самый $_FILES[$fieldname]['tmp_name']; загружен на сервер и без ошибок. А то вы не зная этого, в базу путь пишите к нему. А после того как убедились, как произвели изменения с ним, потом только записали в базу (а это касается всех принятых данных от пользователя), делайте переход (можно внутри страницы, можно на ту, что выводит результат), чтобы блокировать повтор по F5, и блокируйте запись.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования