[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: скрипт "Добавление коментариев"
lufter
написал скрипт для добавления коментариев, проблема в том, что при обновлении странички коментарий дублируется, пока не нажмеш submit в пустой форме... Подскажите как поступить?

<?


$hostname = "localhost";
$username = "root";
$password = "";
$dbName = "all";

if(($_POST["name"]!="")&&($_POST["message"]!=""))
{



mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");


mysql_select_db($dbName) or die (mysql_error());


$cdate = date("d-m-Y");




$query = "INSERT INTO $table SET name='".$_POST["name"]."', message='".$_POST["message"]."', data='$cdate'";


mysql_query($query) or die(mysql_error());


mysql_close();
}


mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");


mysql_select_db($dbName) or die (mysql_error());


$query = "SELECT data, name, message FROM $table";


$res = mysql_query($query) or die(mysql_error());





while ($row = mysql_fetch_array($res))

{


echo "<p><font size=\"2\">",$row['data'];
echo " </font><b>",$row['name'],"</b><br />";
echo $row['message'],"</p>";
}


mysql_close();
?>

<FORM method="post">
<
b><font face="Verdana" size="1">Name</font></b><font face="Verdana" size="1"><BR>
<
INPUT name="name" type="text"style="border-right: #112380 1px solid; border-top: #112380 1px solid; font-size: 10px; border-left: #000000 1px solid; color: #000000; border-bottom: #112380 1px solid; font-family: Verdana; background-color: #ffffff" size="30">
<
BR>
<
b>Comment</b><BR>

<
TEXTAREA name="message"style="border-right: #112380 1px solid; border-top: #112380 1px solid; font-size: 10px; border-left: #000000 1px solid; color: #000000; border-bottom: #112380 1px solid; font-family: Verdana; background-color: #ffffff" rows=6 cols=60 wrap=virtual>
</
TEXTAREA>
<
BR>
<
INPUT name="submit"style="border-right: #112380 1px solid; border-top: #112380 1px solid; font-size: 10px; border-left: #000000 1px solid; color: #000000; border-bottom: #112380 1px solid; font-family: Verdana; background-color: #ffffff" type="submit" value="Submit">
<
br>
</
font><BR>
</
FORM>




Спустя 1 час, 1 минута, 30 секунд (28.11.2010 - 17:17) vinnie написал(а):

<?php
if (isset ($_POST["submit"]))
{
$name = !empty ($_POST['name']) ? trim ($_POST['name']) : NULL;
$message = !empty ($_POST['message']) ? trim ($_POST['message']) : NULL;
if ($name == "" or $message == "")
echo "Заполните все поля";
else
{
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());
$cdate = date("d-m-Y");
$query = mysql_query ("SELECT `id` FROM ".$table.
"WHERE `name` = '".mysql_real_escape_string ($name)."'
AND `essage` = '"
.mysql_real_escape_string ($essage)."'");
if (mysql_result ($query, 0) > 0)
echo "Такой комментарий уже есть";
else
{
$query2 = mysql_query ("INSERT INTO ".$table." (`name`, `message`)
VALUES ('"
.mysql_real_escape_string ($name)."',
'"
.mysql_real_escape_string ($message)."')" ;
}
}
}

?>

Спустя 9 минут, 58 секунд (28.11.2010 - 17:27) inpost написал(а):
Ты дважды добавляешь, поэтому дважды добавляется! Ты лучше ответь, почему в этой строчке скрипт не будет добавлять?
$res = mysql_query($query) or die(mysql_error());

Спустя 32 секунды (28.11.2010 - 17:27) inpost написал(а):
vinnie
Ну вот, дал готовый, человек скопи-пастит, так ничему не научится =(

Спустя 1 минута, 9 секунд (28.11.2010 - 17:29) vinnie написал(а):
inpost
Поверь, он этого и ждёт

Спустя 1 минута, 56 секунд (28.11.2010 - 17:30) vinnie написал(а):
lufter
Перед тем, как занести комментарий в базу, нужно выбрать все комменты из нёё и проверить, есть ли подобный или нет?

$query = mysql_query ("SELECT `id` FROM ".$table.
"WHERE `name` = '".mysql_real_escape_string ($name)."'
AND `essage` = '"
.mysql_real_escape_string ($essage)."'");
if (mysql_result ($query, 0) > 0)
echo "Такой комментарий уже есть";


а если такого нет, то смело заносим его в базу

$query2 = mysql_query ("INSERT INTO ".$table." (`name`, `message`)
VALUES ('"
.mysql_real_escape_string ($name)."',
'"
.mysql_real_escape_string ($message)."')" ;

Спустя 1 минута, 42 секунды (28.11.2010 - 17:32) vinnie написал(а):

$query = mysql_query ("SELECT `id` FROM ".$table.
"WHERE `name` = '".mysql_real_escape_string ($name)."'
AND `essage` = '"
.mysql_real_escape_string ($essage)."'");

здесь я пропустил буквы
заменить на

$query = mysql_query ("SELECT `id` FROM ".$table.
"WHERE `name` = '".mysql_real_escape_string ($name)."'
AND `message` = '"
.mysql_real_escape_string ($message)."'");

Спустя 6 секунд (28.11.2010 - 17:32) inpost написал(а):
vinnie
И? Пусть либо думает своей головой, или идёт в раздел "заказов", там эти скрипты будем им за деньги писать.
Это форум пхп ПРОГРАММИСТОВ, а не халявщиков и бесплатного труда. Просто научись уважать свой труд... ато так и будут вечно ходить и за бесплатно с нас требовать за них писать скрипты.

Спустя 19 часов, 59 минут, 29 секунд (29.11.2010 - 13:32) lufter написал(а):
никого не прошу писать мне скрипты, да и за деньги покупать не собираюсь, задача научиться самому, и задача этого раздела-Разбор скриптов новичков, и скопи-пастить не так и просто, ошибок браузер выдал немеряно, и как не потел ничего не получилось, слишком усложняеш простую задачу, буду свой дорабатывать, хоть вариант и с лагом но рабочий, в отличие от ваших

Спустя 11 минут, 45 секунд (29.11.2010 - 13:44) vinnie написал(а):
ну давай! успехов те!

Спустя 30 минут, 41 секунда (29.11.2010 - 14:14) ИНСИ написал(а):
inpost думаю ты неправ. Допустим если за меня делают определенный скрипт, я начинаю изучать, то как он работает и ищю инфу. Я знаю что не все может так делают, но есть и такие как я.

Я всегда благодарю за то, что за меня делают определенную работу. И это помогает мне развиваться, потому что мне показали пример, а теперь дальше я сам....

Спустя 1 час, 33 минуты, 37 секунд (29.11.2010 - 15:48) inpost написал(а):
Он написал дважды вставку в БД, одну вставку внутри if, вторую за пределами if, если условие проходит - дважды вставляется! Достаточно ответить на вопрос, почему она не должна вставляться, если он сам это написал. Тут только другое условие else дописать надо.

Спустя 2 часа, 8 минут, 37 секунд (29.11.2010 - 17:56) ИНСИ написал(а):
inpost smile.gif не подумай что я пытаюсь показать себя правым. Просто попробуй понять сторону автора.

Если с таким простым вопросом, он обращается к тебе, значит опыта у него нет и сам найти ошибку он не может, потому что видать скопировал данные код откуда-то и попытался его переделать под себя.....

В общем, ты прав с одной стороны, с другой стороны ты не прав. Просто я считаю что не стоит критиковать других, если они сделали всю работу за автора. Тут уже как говорится "его" проблемы smile.gif

Спустя 2 дня, 19 часов, 3 минуты, 56 секунд (2.12.2010 - 13:00) lufter написал(а):
тут и копировать неоткуда, такой простой скрипт как запись в БД и вывод из БД, и где ты там двойную вставку увидел? тыкни пальцем, приобновлении страницы кнопкой обновить, выпрыгивает сообщение браузера "Брозер для обновления должен заново послать запрос и выполнить ту же операцию" нажимаеш ок и коментарий тот же появляется и так можна 100 раз проделать пока не нажмеш Submit просто при пустой форме, либо данные в форме остаются но не видимые, либо еще гдето, не пойму как это присечь...

Спустя 16 минут, 34 секунды (2.12.2010 - 13:17) Горекодер написал(а):
mysql_query($query) or die(mysql_error());

//.......

$res = mysql_query($query) or die(mysql_error());


я так понимаю вот 2 вставки

Спустя 1 час, 21 минута, 4 секунды (2.12.2010 - 14:38) inpost написал(а):
они самые

Спустя 1 час, 24 минуты, 15 секунд (2.12.2010 - 16:02) ИНСИ написал(а):
lufter смотри в сторону:
header('Location: http://www.mysite.ru');

Спустя 34 минуты, 38 секунд (2.12.2010 - 16:37) redasar написал(а):
я вот тоже php начал с комментариев. и с чужого готового скрипта просто задачу изменил под себя и ковырялсо в коде и ничего знаю же как работате и свой могу напесать
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.