[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: php выполняется при заходе на страницу
timoxa
Проблема вот в чом, скрипт в плане того чтобы добавить данные в таблицу работает нормально, НО каждый раз при заходе на страницу с этим кодом он автоматически записывает пустые данные в базу. Т,е. если нажимать допустим F5 будет идти запись в базу и т.п. Прошу помощи :huh:



						<?

/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = "pass"; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "photo"; // название базы данных

/* Таблица MySQL, в которой будут храниться данные */

$table = "anekdots";

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

/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());

/* Определяем текущую дату */
$cdate = date("Y-m-d");

/* Составляем запрос для вставки информации в таблицу
name...date - название конкретных полей в базе;
в $_POST["test_name"]... $_POST["test_mess"] - в этих переменных содержатся данные, полученные из формы */


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


/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die(mysql_error());

/* Закрываем соединение */
mysql_close();


?>





<center><form
name="add_text" method="post">
<br>




    Ваше имя :
<input type="text" name="user_name" maxlength="30" />   
<br>
Анекдот: <br><textarea name="text" cols="100" rows="10"></textarea>


<td
colspan="2" align="center">
<input
type="submit" class="button" value="Добавить" />
<input
type="reset" class="button" value="Очистить" /><br><br><br><br><br><br><br><br>
</td>


</form></center>





Спустя 3 минуты, 11 секунд (14.08.2011 - 18:47) timoxa написал(а):
Не в том разделе создал, прощу перенести

Спустя 4 минуты, 11 секунд (14.08.2011 - 18:52) imbalance_hero написал(а):
Надо делать проверку, отправлена ли была форма или нет, отправлены ли данные, и если да - тогда только заносить.

if(isset($_POST['text'])) // проверяем, существует ли $_POST
{
mysql_query();
}

Спустя 4 минуты, 56 секунд (14.08.2011 - 18:57) Renden написал(а):
Цитата (imbalance_hero @ 14.08.2011 - 18:52)
Надо делать проверку, отправлена ли была форма или нет, отправлены ли данные, и если да - тогда только заносить.

if(isset($_POST['text'])) // проверяем, существует ли $_POST
{
    mysql_query();
}

timoxa
Ога, и желательно еще привязывать к кнопке, а не к полю:

<input type="submit" class="button" name="send" value="Добавить" />
if(isset($_POST['send'])) {
mysql_query();
}

Спустя 1 минута, 21 секунда (14.08.2011 - 18:58) timoxa написал(а):
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());

/* Определяем текущую дату */
$cdate = date("Y-m-d");

/* Составляем запрос для вставки информации в таблицу
name...date - название конкретных полей в базе;
в $_POST["test_name"]... $_POST["test_mess"] - в этих переменных содержатся данные, полученные из формы */

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


if(isset($_POST['text'])) // проверяем, существует ли $_POST


/* Закрываем соединение */
mysql_close();


?>


Добавил то что вы написали, теперь данные вообще не сохраняются в базе.

Спустя 49 секунд (14.08.2011 - 18:59) imbalance_hero написал(а):
Renden
А если я через CURL отправлю лишь $_POST['send'] без данных? Забивать БД будем пустотой, считай мелкая дырка.

Спустя 56 секунд (14.08.2011 - 19:00) imbalance_hero написал(а):
timoxa
if(isset($_POST['text']))
{
$query = "INSERT INTO $table SET user_name='".$_POST["user_name"]."', text='".$_POST["text"]."', data='$cdate'";

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

Спустя 3 минуты, 18 секунд (14.08.2011 - 19:03) Renden написал(а):
timoxa

<?
$hostname = "localhost";
$username = "root";
$password = "pass";
$dbName = "photo";
$table = "anekdots";
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());
$cdate = date("Y-m-d");
if(isset($_POST['text']))
{
$query = "INSERT INTO $table SET user_name='".$_POST["user_name"]."', text='".$_POST["text"]."', data='$cdate'";
mysql_query($query) or die(mysql_error());
}
?>

imbalance_hero
Так проверка данных это уже другой вопрос, есть они там или нет, просто ослеживать сабмит формы помоему лучше по кнопке, или я не прав?

Спустя 39 секунд (14.08.2011 - 19:04) timoxa написал(а):
Теперь при заходе на страницу всё нормально, как сделать чтобы запрос не выполнялся если поля пустые.
Да и еще когда F5 жмешь прошлый запрос выполняется.

Спустя 3 минуты, 17 секунд (14.08.2011 - 19:07) imbalance_hero написал(а):
timoxa
1) Проверяй поля, пустые ли они: if(!empty).
2) После добавления записи в БД, надо делать редирект.
header("Location: /");

Спустя 46 секунд (14.08.2011 - 19:08) Renden написал(а):
timoxa

...
if(isset($_POST['text']))
{
if(!empty($_POST["user_name"]) && !empty($_POST["text"]))
{
$query = "INSERT INTO $table SET user_name='".trim(mysql_real_escape_string($_POST["user_name"]))."', text='".trim(mysql_real_escape_string($_POST["text"]))."', data='$cdate'";
mysql_query($query) or die(mysql_error());
header ("Location: index.php");
}
else echo "Заполните пожалуйста все поля формы";
}

Спустя 3 минуты, 43 секунды (14.08.2011 - 19:11) timoxa написал(а):
Цитата (Renden @ 14.08.2011 - 16:08)
timoxa

...
if(isset($_POST['text']))
{
if(!empty($_POST["user_name"])) && !empty($_POST["text"]))
{
$query = "INSERT INTO $table SET user_name='".trim(mysql_real_escape_string($_POST["user_name"]))."', text='".trim(mysql_real_escape_string($_POST["text"]))."', data='$cdate'";
mysql_query($query) or die(mysql_error());
header ("Location: index.php")
}
else echo "Заполните пожалуйста все поля формы";
}

тут ошибка помоему какаято, страница не грузится так. else
echo "Заполните пожалуйста все поля формы";

тут точно правильно?

Спустя 2 минуты, 25 секунд (14.08.2011 - 19:14) Renden написал(а):
timoxa
Скобка лишняя одна, после !empty($_POST["user_name"])) убери 1 скобку

Отредактировал выше, неудобно писать код в этом маленьком окне без подстветки=)

Спустя 2 минуты, 34 секунды (14.08.2011 - 19:16) timoxa написал(а):
500 ошибка, почему?

Спустя 1 минута, 45 секунд (14.08.2011 - 19:18) Renden написал(а):
timoxa
Сейчас уже хз, вроде все проверил все поправил выше smile.gif

Спустя 3 минуты, 43 секунды (14.08.2011 - 19:22) timoxa написал(а):
Проверь правильные ли у тебя везде скобки "" ''

а то я php только начал учить))

Спустя 2 минуты, 43 секунды (14.08.2011 - 19:25) Renden написал(а):
timoxa
Да все вроде верно, обрати внимание стоит у тя точка с запятой после header ("Location: index.php");

Спустя 7 секунд (14.08.2011 - 19:25) imbalance_hero написал(а):
timoxa
Если ты поправил, и всё равно ошибка -выставляй код снова, кто знает, какую из скобок ты убрал лишнюю smile.gif

Спустя 3 минуты, 52 секунды (14.08.2011 - 19:29) timoxa написал(а):
header ("Location: index.php"); тут все нормально...

Спустя 1 минута, 51 секунда (14.08.2011 - 19:30) timoxa написал(а):
Цитата (Renden @ 14.08.2011 - 15:57)
Цитата (imbalance_hero @ 14.08.2011 - 18:52)
Надо делать проверку, отправлена ли была форма или нет, отправлены ли данные, и если да - тогда только заносить.

<pre class="sh_sourceCode" rel="php"><span class="sh_control">if</span><span class="sh_symbol">(</span><span class="sh_function">isset</span><span class="sh_symbol">(</span><span class="sh_variable">$_POST</span><span class="sh_symbol">[</span><span class="sh_string">'text'</span><span class="sh_symbol">]))</span> <span class="sh_comment">// проверяем, существует ли $_POST</span>
<span class="sh_cbracket">{</span>
    <span class="sh_function">mysql_query</span><span class="sh_symbol">();</span>
<span class="sh_cbracket">}</span></pre>

timoxa
Ога, и желательно еще привязывать к кнопке, а не к полю:

<input type="submit" class="button" name="send" value="Добавить" />
if(isset($_POST['send'])) {
mysql_query();
}

напишите правильно готовый вариант а то непойму))

Спустя 1 час, 12 минут, 53 секунды (14.08.2011 - 20:43) imbalance_hero написал(а):
Возьми свой скрипт, и замени свою функцию mysql_query(), на ту, как я показал сделать вместе с условием...

Спустя 24 минуты, 9 секунд (14.08.2011 - 21:07) timoxa написал(а):
Можешь выложить готовый вариант ? буду благодарен. уже второй день вожусь

Спустя 4 минуты, 19 секунд (14.08.2011 - 21:12) imbalance_hero написал(а):
						<?php

/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = "pass"; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "photo"; // название базы данных

/* Таблица MySQL, в которой будут храниться данные */

$table = "anekdots";

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

/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());

/* Определяем текущую дату */
$cdate = date("Y-m-d");


if(isset($_POST['text']))
{
if(!empty($_POST["user_name"]) && !empty($_POST["text"]))
{
$query = "INSERT INTO `".$table."` SET `user_name`='".trim(mysql_real_escape_string($_POST["user_name"]))."', `text`='".trim(mysql_real_escape_string($_POST["text"]))."', `data`='".$cdate."'";
mysql_query($query) or die(mysql_error());
header ("Location: index.php");
}
else
echo "Заполните пожалуйста все поля формы";
}


/* Закрываем соединение */
mysql_close();


?>





<center><form name="add_text" method="post">
<
br>



Ваше имя :
<
input type="text" name="user_name" maxlength="30" />
<
br>
Анекдот: <br><textarea name="text" cols="100" rows="10"></textarea>


<
td colspan="2" align="center">
<
input type="submit" class="button" value="Добавить" />
<
input type="reset" class="button" value="Очистить" /><br><br><br><br><br><br><br><br>
</
td>


</
form></center>

Спустя 20 минут, 11 секунд (14.08.2011 - 21:32) timoxa написал(а):
Огромное спасибо!
Быстрый ответ:

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