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

Форум MySQL

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

 

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

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

тема: Вместо вставки новой записи, обновить существующую
 
 автор: Belkin   (14.06.2011 в 21:15)   письмо автору
 
 

все, не надо! Большое вам спасибо! Не знаю как вас отблагодарить!!! Теперь еще одна проблемка, буду очень рад ее решению!!

Получается суть скрипта - оставляет комментарий, название сайта, которые вы тоже сами вводите и изображение, которое вместе с этим выволится. Проблема в том, что если 1 раз это ввести, то при следующем обновлении оно снова добавляется.

  Ответить  
 
 автор: cheops   (14.06.2011 в 21:39)   письмо автору
 
   для: Belkin   (14.06.2011 в 21:15)
 

Может стоит сначала проверять нет ли такого сайта в таблице, и если есть то не добавлять новую запись, а обновлять существующую?

  Ответить  
 
 автор: Belkin   (14.06.2011 в 21:42)   письмо автору
 
   для: cheops   (14.06.2011 в 21:39)
 

возможно, вы можете пожалуйста написать, как это осуществить) простите, если в чем-то не прав, только начал php изучать..

  Ответить  
 
 автор: cheops   (14.06.2011 в 22:09)   письмо автору
 
   для: Belkin   (14.06.2011 в 21:42)
 

Для того, чтобы узнать есть ли такая запись в базе данных, потребуется выполнить запрос
"SELECT COUNT(*) FROM t WHERE site = '".str_sql($_POST['site'])."'"
он вернет 1 если сайт существует или 0, если такого сайта нет, если получен 0, используете INSERT-запрос из вашего скрипта, если получена 1, то следует выполнить UPDATE-запрос
UPDATE t
SET koment = '".str_sql($_POST['koment'])."', foto = '".$foto."'
WHERE site = '".str_sql($_POST['site'])."'"

  Ответить  
 
 автор: Belkin   (14.06.2011 в 22:19)   письмо автору
 
   для: cheops   (14.06.2011 в 22:09)
 

знаю, что глупо, но куда именно это вставить/заменить?)

  Ответить  
 
 автор: cheops   (14.06.2011 в 22:25)   письмо автору
 
   для: Belkin   (14.06.2011 в 22:19)
 

Вот этот фрагмент
<?php
  
...
           
// Типа все впорядке , но для совершенство еще нго чего поправде надо )
           
           
$sql="
            INSERT INTO  t (site,koment,foto) value ('"
.str_sql($_POST['site'])."','".str_sql($_POST['koment'])."','".$foto."')
            "
;
           
           
mysql_query($sql);
           
           echo 
'Ваш комент добавлен';
  ...
?>
следует заменить примерно следующим фрагментом
<?php
  
...
  
$sql "SELECT COUNT(*) FROM t WHERE site = '".str_sql($_POST['site'])."'";
  
$tot mysql_query($tot);
  if(!
$tot) exit("Ошибка выполнения SQL-запроса - ".mysql_error());
  if(
mysql_result($tot0))
  {
    
// Запись уже присутствует
    
$sql "UPDATE t 
            SET koment = '"
.str_sql($_POST['koment'])."',
                foto = '"
.$foto."' 
            WHERE site = '"
.str_sql($_POST['site'])."'";
  }
  else
  {
    
// Записи еще нет
    
$sql "INSERT INTO t (site,koment,foto)
            value ('"
.str_sql($_POST['site'])."',
                   '"
.str_sql($_POST['koment'])."',
                   '"
.$foto."')";
  }
  
// Выполняем запрос
  
if(!mysql_query($sql))
  {
    exit(
"Ошибка выполнения SQL-запроса - ".mysql_error());
  }
  else
  {
    echo 
'Ваш комент добавлен';
  }
  ...
?>

  Ответить  
 
 автор: Belkin   (14.06.2011 в 22:28)   письмо автору
 
   для: cheops   (14.06.2011 в 22:25)
 

Ошибка выполнения SQL-запроса - Query was empty

  Ответить  
 
 автор: cheops   (14.06.2011 в 22:29)   письмо автору
 
   для: Belkin   (14.06.2011 в 22:28)
 

Есть такое дело, вместо $tot нужно написать $sql в первом mysql_query()
<?php 
  
... 
  
$sql "SELECT COUNT(*) FROM t WHERE site = '".str_sql($_POST['site'])."'"
  
$tot mysql_query($sql); 
  if(!
$tot) exit("Ошибка выполнения SQL-запроса - ".mysql_error()); 
  if(
mysql_result($tot0)) 
  { 
    
// Запись уже присутствует 
    
$sql "UPDATE t  
            SET koment = '"
.str_sql($_POST['koment'])."', 
                foto = '"
.$foto."'  
            WHERE site = '"
.str_sql($_POST['site'])."'"
  } 
  else 
  { 
    
// Записи еще нет 
    
$sql "INSERT INTO t (site,koment,foto) 
            value ('"
.str_sql($_POST['site'])."', 
                   '"
.str_sql($_POST['koment'])."', 
                   '"
.$foto."')"
  } 
  
// Выполняем запрос 
  
if(!mysql_query($sql)) 
  { 
    exit(
"Ошибка выполнения SQL-запроса - ".mysql_error()); 
  } 
  else 
  { 
    echo 
'Ваш комент добавлен'
  } 
  ... 
?>

  Ответить  
 
 автор: Belkin   (14.06.2011 в 22:37)   письмо автору
 
   для: cheops   (14.06.2011 в 22:29)
 

супер, большое спасибо!!)
еще одна проблема выявилась) и я от тебя отстану))

кажется проблема тут

<?php ...
           
// заказчиваем фото если есть
        // тут тупо , если совпадет с зказченом файлом можно просот null сравнивать
        
if(isset($foto))
        {
            
$uploadfile 'img/'.$_FILES['foto']['name'];
            
$res=move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile) or die('Не удалось сохранить файл'); 
...
?>


вообщем - когда я загружаю имейдж, то выводит эту ошибку "'Не удалось сохранить файл"

и кидайте свой кошелек) я знаю, как я вам надоел) надо заплатить будет за такой труд для меня!!)

  Ответить  
 
 автор: Belkin   (14.06.2011 в 23:23)   письмо автору
 
   для: Belkin   (14.06.2011 в 22:37)
 

всего одну проблему осталось решить..

  Ответить  
 
 автор: cheops   (14.06.2011 в 23:55)   письмо автору
 
   для: Belkin   (14.06.2011 в 22:37)
 

>вообщем - когда я загружаю имейдж, то выводит эту ошибку "'Не удалось сохранить файл"
Дело на хостинге происходит? Какие права доступа выставлены на папку img? Попробуйте поставить 0777.

>и кидайте свой кошелек) я знаю, как я вам надоел) надо заплатить будет за такой труд для меня!!)
Кошелек вы без труда найдете в нашем консультационном центре. Но обычно там принимаются благотворительные взносы или плата за частные консультации, т.е. когда речь идет о сложном приложении или подробном изложении вопроса на нескольких страницах. Вопросы, на которые можно быстро ответить, вполне можно решить в рамках форума - на нашем форуме вопросы только приветствуются :))) Только под новые вопросы лучше заводить новые темы - потом на них ссылаться проще, да и ответов так можно больше получить.

  Ответить  
 
 автор: Belkin   (15.06.2011 в 00:03)   письмо автору
 
   для: cheops   (14.06.2011 в 23:55)
 

)))
так как я только недавно начал пхп изучать, для меня и это пока что немного великоват вопрос :) та ставил уже и на скрипт и на папку права 777

да, хостинг

ну пока что) над моим маленьким гемороем паритесь только вы :)

  Ответить  
 
 автор: Belkin   (15.06.2011 в 00:13)   письмо автору
 
   для: Belkin   (15.06.2011 в 00:03)
 

может попробовать создать ккакуй-то альтернативу этой загрузке?

  Ответить  
 
 автор: cheops   (15.06.2011 в 00:15)   письмо автору
 
   для: Belkin   (15.06.2011 в 00:03)
 

А скрипт относительно папки img где расположен?

  Ответить  
 
 автор: cheops   (15.06.2011 в 00:16)   письмо автору
 
   для: Belkin   (15.06.2011 в 00:03)
 

Проверьте при помощи функции is_uploaded_file() успешно ли загружен файл на хостинг?

  Ответить  
 
 автор: Belkin   (15.06.2011 в 00:21)   письмо автору
 
   для: cheops   (15.06.2011 в 00:16)
 

если я правильно вставил, то вот

Possible file upload attack: filename ...


<?php 
...
           
// заказчиваем фото если есть
        // тут тупо , если совпадет с зказченом файлом можно просот null сравнивать
        
if(isset($foto))
        {
            
$uploadfile 'img/'.$_FILES['foto']['name'];
            
            if (
is_uploaded_file($_FILES['foto']['name'])) {
   echo 
"File "$_FILES['foto']['name'] ." uploaded successfully.\n";
   echo 
"Displaying contents\n";
   
readfile($_FILES['userfile']['tmp_name']);
} else {
   echo 
"Possible file upload attack: ";
   echo 
"filename '"$_FILES['foto']['name'] . "'.";
}
            
            
            
$res=move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile) or die('Не удалось сохранить файл');
        }
...
?>

  Ответить  
 
 автор: cheops   (15.06.2011 в 00:44)   письмо автору
 
   для: Belkin   (15.06.2011 в 00:21)
 

Подставьте в is_upload_file() $_FILES['foto']['tmp_name'], вместо $_FILES['foto']['name'], что выводится?

  Ответить  
 
 автор: Belkin   (15.06.2011 в 00:57)   письмо автору
 
   для: cheops   (15.06.2011 в 00:44)
 

File /usr/home/it-host/data/mod-tmp/phpF7aNng uploaded successfully. Displaying contents Не удалось сохранить файл

  Ответить  
 
 автор: Belkin   (15.06.2011 в 01:28)   письмо автору
 
   для: Belkin   (15.06.2011 в 00:57)
 

ну и что это может быть?)

  Ответить  
 
 автор: Belkin   (15.06.2011 в 01:51)   письмо автору
 
   для: Belkin   (15.06.2011 в 01:28)
 

все разобрался) глупая проблема была)) но все же - огромное спасибо Симдянову Игорю Вячеславовичу!

а проблема была в том, что каталог надо было создать не в папке со скриптом, а прям за доменом)

ps
хотел бы как у профессионала спросить - какую более менее читабельную литературу по пхп предложите, только желательно читабельную :) большое спасибо за внимание, действительно на форуме можно достать оперативный ответ! Еще раз спасибо!!!
Если будут вопрос, то сразу к вам буду бежать :)

  Ответить  
 
 автор: cheops   (15.06.2011 в 11:47)   письмо автору
 
   для: Belkin   (15.06.2011 в 01:51)
 

>какую более менее читабельную литературу по пхп предложите
Можно начать с наших книг
Самоучитель PHP 5 / 6
PHP 5/6. В подлиннике

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

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