[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Почему РАБОТАЕТ?
SnowWind
Я уж не понимаю почему это работает?! Когда записываю данные в форму, это понятно, должно работать, НО почему данные ДОБАВЛЯЮТСЯ в БД, когда форма ПУСТАЯ? И добавляются пустые значения :blink:

<?php

$db = mysql_connect ('localhost', 'nz', 'zs');
mysql_select_db ('nz', $db);
$result = mysql_query ('SELECT * FROM captcha', $db);
$myrow = mysql_fetch_array ($result);

if (isset($_POST['title']) && ($_POST['title'] != '')) {$title = $_POST['title'];}
if (isset($_POST['text']) && ($_POST['text'] != '')) {$text = $_POST['text'];}
if (isset($_POST['image']) && ($_POST['image'] != '')) {$image = $_POST['image'];}
if (isset($_POST['date']) && ($_POST['date'] != '')) {$date = $_POST['date'];}
if (isset($_POST['author']) && ($_POST['author'] != '')) {$author = $_POST['author'];}
if (isset($_POST['captcha_check']) && ($_POST['captcha_check'] != '')) {$captcha_check = $_POST['captcha_check'];}

?>

<html>
<
head>
<
link href = "style.css" rel = "stylesheet" type = "text/css">
<
title></title>
</
head>
<
body>



<?php

if (isset($title) && isset($text) && isset($date) && isset($author))
{$result = mysql_query ("INSERT INTO add_news (title, text, image, date, author) VALUES ('$title', '$text', '$image',

'
$date', '$author')", $db);
if ($result == 'true')
{echo 'Ваша новость добавлена ';}
}


else
{print <<< HERE
<p>Добавте пожалуйста свою новость</p>
<
form name="news_form" action="add_news.php" method="POST">
<
p>Введите название:<input name="title" type="text"></p>
<
p>Введите текст:<textarea name="text" cols="70" rows="30"></textarea></p>
<
p>Вставте изображение:<input name="image" type="file"></p>
<
p>Введите дату:<input name="date" type="text"></p>
<
p>Введите автора:<input name="author" type="text" maxlength="41" size="41"></p>
<
p>Что изображено на картинке? $myrow[image]<input name="captcha_check" type="text" maxlength="41" size="41"></p>
<
input name="news_adder" type="submit" value="Добавить">
</
td>
HERE;
}
?>




Спустя 3 минуты, 15 секунд (17.12.2010 - 17:33) waldicom написал(а):
Просьба во второй раз: давайте своим темам нормальные названия.

Спустя 8 минут, 12 секунд (17.12.2010 - 17:41) kovaldm написал(а):
Добавляются после сабмита или после Ф5?

Спустя 4 минуты, 28 секунд (17.12.2010 - 17:46) SnowWind написал(а):
добавляются после сабмита!

waldicom

Вот как можно было назвать эту тему?! Что вы ко мне опять прицепились? Написал бы я mySQL ... опять было бы не правильно н-ое. М.б перед созданием темы, мне нужно утверждать её название у вас? dry.gif

Спустя 16 минут, 34 секунды (17.12.2010 - 18:02) kovaldm написал(а):
Цитата
И добавляются пустые значения

У тебя там проверка неправильная.
if (isset($title) && isset($text) && isset($date) && isset($author))
...


Спустя 13 минут, 56 секунд (17.12.2010 - 18:16) SnowWind написал(а):
ничё не понимаю, а почему она не правильная?
....если существет переменная такая то и существует переменная такая то....и т.д....то добавляй в базу....а если нет...то опять форма.....

Спустя 17 минут, 43 секунды (17.12.2010 - 18:34) Elfist написал(а):
if(empty($title))
echo 'Заполнены не все поля';
else
mysql_query () и т.д

Спустя 2 часа, 36 минут, 42 секунды (17.12.2010 - 21:11) quickxyan написал(а):
Цитата (kovaldm @ 17.12.2010 - 15:02)
ничё не понимаю, а почему она не правильная?
....если существет переменная такая то и существует переменная такая то....и т.д....то добавляй в базу....а если нет...то опять форма.....


ну все правильно - переменная есть, но она пустая.

так что как сказано выше проверяй на empty и пустые не будут добавляться

Спустя 24 минуты, 49 секунд (17.12.2010 - 21:36) mako написал(а):
мож вместо
...$_POST['author'] != ''...
используй
 !empty($_POST['author'])

Спустя 1 час, 9 минут, 2 секунды (17.12.2010 - 22:45) inpost написал(а):
SnowWind
isset проверяет на существование, а не пустоту! Включен register_globals, значит код одинаково воспринимает как $_POST['name'] так и $name. В связи с этим появляется бардак, когда не находит он $name, он смотрит и видит $_POST['name'].

Спустя 33 минуты, 17 секунд (17.12.2010 - 23:18) SnowWind написал(а):
quickxyan
Цитата
ну все правильно - переменная есть, но она пустая.

так что как сказано выше проверяй на empty и пустые не будут добавляться


да как так она не м.б пустой т.к создаётся она при этом условии -
($_POST['title'] != ''))
иначе бы её уж совсем небыло и проверять было нечего!
Я понимаю что isset определяет существование, но в моём случае, переменные создались при отсутствии пустоты.

Т.е выход либо изменить имена переменных, определяемых из глобальных массивов, либо отключить register_globals? Или в условия добавления в БД добавить проверку на пустоту?

Спустя 19 минут, 57 секунд (17.12.2010 - 23:38) inpost написал(а):
А ты не инициализируй впустую переменные, ты делай сразу проверку на пустоту:
if(!empty($_POST['name']))
{
$result = mysql_query...
}

Спустя 1 час, 4 минуты, 34 секунды (18.12.2010 - 00:42) SnowWind написал(а):
ясно щас испробую )

А проверку что бы потом вывести вы не ввели это и вы не ввели вот это тоже лучше использовать empty? на каждую переменную? А патом с помощью стилей всё подогнать в кучу?
Или с помощью if///elseif///else? Или есть более рациональный способ?

Спустя 37 минут, 21 секунда (18.12.2010 - 01:20) inpost написал(а):
if(!empty($_POST['name']))
$error['name'] = 'Enter your name';
...


if(count($error) == 0)
{
mysql_query();
header("Location: index.php");
}

?>

<input type="text" name="name" value="<?php echo @$_POST['name']; ?>" /> <?php echo @$error['name']; ?>

Спустя 12 часов, 17 минут, 55 секунд (18.12.2010 - 13:38) SnowWind написал(а):
а что вот это
if(count($error) == 0)
{
mysql_query();
header("Location: index.php");
}

такое?
Считаем сколько элементов в массиве, а если 0 то? Что это значит?
<?php echo @$_POST['name']; ?>" /> <?php echo @$error['name']; ?>
???

Спустя 5 минут, 48 секунд (18.12.2010 - 13:43) kovaldm написал(а):
Цитата
Что это значит?

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

Спустя 28 минут, 49 секунд (18.12.2010 - 14:12) hellmin написал(а):
Там же написано
if(!empty($_POST['name']))
$error['name'] = 'Enter your name';

В случае хоть одного не правильно заполненного поля появится ошибка и вот тут
if(count($error) == 0)

она не пройдет))
И можно будет потом обработать массив и вывести все ошибки на экран.
Быстрый ответ:

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