Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > При рефреше страницы запрос клонируется


Автор: something 17.6.2007, 22:56
Здравствуйте.

(вкрадце: два поля в html файле передают значения в исполняющий php файл, при рефреше страницы данные записываются в БД повторно)

Сразу скажу что php и MySQL начал изучать вчера.. Пока писал уже некоторые вопросы решил, но остались эти:

1) при добавлении текста и последушем рефреше страницы сообщение добавляется еще раз, как устранить это возможно
2) что-то дата не определяется, как можно исправить
3) если зайти на страницу без заполнения полей запрос добавления все равно происходит, но поля оказываются пустыми
4) еще бы рассортировать все это по дате

Надеюсь написал не коряво, уж простите 

Код

<?php

require_once ("source/configs.php");

if (!mysql_connect($host, $dbuser, $dbpassword))
{
echo "<h2>Нет подключения к SQL</h2>";
exit;
}

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

$query = "INSERT INTO ".$prefix."_wish VALUES('$date', '$author', '$wish')";
mysql_query ($query) or die (mysql_error());

echo <<<HTML
<table width="550" align="center" border="1" cellpadding="4" cellspacing="0">
 <tr>
  <td><b>Date</b></td>
  <td><b>Author</b></td>
  <td><b>Wish</b></td>
 </tr>
HTML;

$r=mysql_query("SELECT * FROM ".$prefix."_wish") or die("Данные не могут быть извлечены");

$max_rows = mysql_num_rows($r);

for ($i=0; $i<$max_rows; $i++)
{
$a_date = mysql_result($r, $i, 'date');
$a_author = mysql_result($r, $i, 'author');
$a_wish = mysql_result($r, $i, 'wish');

echo <<<HTML
\n <tr>
  <td>$a_date</td>
  <td>$a_author</td>
  <td>$a_wish</td>
 </tr>\n
HTML;
}

echo <<<HTML
 </table>
</body>
</html>
HTML;

mysql_close();

?>

 smile 

Автор: vasac 18.6.2007, 12:17
Цитата(something @  17.6.2007,  22:56 Найти цитируемый пост)
Надеюсь написал не коряво, уж простите 

Коряво. Чем корявее пишите, тем дольше будете ждать ответа и никакие "простите" не помогут.

1. Переадресовывать страницу на себя методом GET. Например, так:
Код

header('location: <адрес страницы>');
exit();

одна из самых распространенных проблем, все подробности в поиске.
2. Где не определяется?
3. Перед добавлением проверяйте поля на заполненность.
4. Сортируйте. Учите основы SQL. Хотя бы здесь — http://mysql.ru/docs/

Так же настоятельно советую прочитать:
http://phpfaq.ru/slashes
http://phpfaq.ru/globals

Автор: something 18.6.2007, 13:55
1. А без переадрессовки можно обойтись? Вроде бы да, вот только как.. (можно ссылочку на подобные темы? даже не знаю как сформулировать запрос для поиска)

2. Дата не определяется при добавлении в БД. То есть когда выполняется запись сообщения в базу, он выставляется по дефолту (0000:00:00)

3. Есть два файла: wish.php (файл с полями) action.php (через него происходит подключение и последущая запись сообщения в базу данных), так вот, если напрямую зайти в файл action.php то добавление проиходит, но в базе данных все ячейки пустые

4. Учу, но ничего не приходит сразу (за три дня-то изучения..). Нужно время, и его у меня минимум, поэтому решил обратиться по совету знакомого сюда, в поиске помощи.

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

Автор: something 18.6.2007, 17:43
Все, со временем разобрался. Все оказалось очень легко. Помогите пожалуйста с остальными вопросами

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)