[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Первый вход в форму
SnowWind
Обрезал, что бы было кароче...
Вопрос такой - как сделать что бы когда мы открывали форму первый раз вот эта строчка -
<?php echo @$error['title']; ?>
не выводилась ?
<?php

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

if (!empty($_POST['title'])) {$ntitle = $_POST['title'];}

if (empty($ntitle)) {$error['title'] = '<p><font color="red">Вы не ввели заголовок</font></p>';}

if (count($error) == '0')
{$result = mysql_query ("INSERT INTO add_news (title) VALUES ('$ntitle')", $db); if ($result == 'true') {echo 'complete';} else {echo 'ERROR';}
}

if (!isset ($ntitle)
{
?>
<form name="news_form" action="add_news.php" method="POST">
<
p>Введите название:<input name="title" type="text" value="<?php echo @$ntitle; ?>"/><?php echo @$error['title']; ?></p>
<
input name="news_additer" type="submit" value="Добавить"/>
</
form>
<?php
}
?>




Спустя 11 минут, 5 секунд (19.12.2010 - 18:00) inpost написал(а):
Смотри, ты делаешь проверку на её существование в начале, значит форма появится только в том случае, если её нету на самом деле. В этом случае даже нет смысла выводить: <?php echo @$ntitle; ?>, её итак нету.
А вообще, убери проверку, выводи просто форму.
Вывод же этой переменной делай по обычному условию: if(!empty) echo $ntitle

Спустя 20 минут, 30 секунд (19.12.2010 - 18:20) SuicideMouse написал(а):
Цитата
if(!empty) echo $ntitle

+1 тоже самое хотел предложить

Спустя 1 минута, 31 секунда (19.12.2010 - 18:22) SnowWind написал(а):
блин не ту строчку записал в вопросе, посмотрите, я отредактировал....не про то хотел спросить

Спустя 11 минут, 57 секунд (19.12.2010 - 18:34) ИНСИ написал(а):
SnowWind попробуй с помощью сессии

Спустя 31 минута, 16 секунд (19.12.2010 - 19:05) inpost написал(а):
хм, сейчас отвечу через минут 15 =)

Спустя 17 минут, 20 секунд (19.12.2010 - 19:22) ИНСИ написал(а):
SnowWind я не понял зачем там у тебя пару строк, но по сути, получится так примерно:
<?php

if($_POST['title']) {

if($_POST['title'] != '') {
$db = mysql_connect ('localhost', 'nz', 'zn');
mysql_select_db ('nz', $db);

mysql_query("
INSERT
INTO `add_news`(`title`)
VALUES('"
.mysql_real_escape_string(stripslashes($_POST['title']))."')
"
) or die(mysql_error());

echo 'Completed!';
}
else $error = '<p><font color="red">Вы не ввели заголовок</font></p>';
}

?>


<form action="" method="POST">
<p>
Введите название:<input name="title" type="text" value="<? echo htmlspecialchars($_POST['title']); ?>"/><?=$error?></p>
<input
name="news_additer" type="submit" value="Добавить"/>
</form>



Спустя 45 минут, 15 секунд (19.12.2010 - 20:08) inpost написал(а):
SnowWind
Глянь: http://inpost.dp.ua/lessons/lessons.php?id=2
Если что-то непонятно, напиши сюда, набросал на скорую руку макет ответа на похожие вопросы. Возможно я недостаточно полно раскрыл эту тему =) id=3 - тернартный оператор, тоже может быть полезен

Спустя 20 часов, 47 минут, 11 секунд (20.12.2010 - 16:55) SnowWind написал(а):
разбираем..... вот там написано
if(empty($fio)) $error['fio'] = 'Вы не ввели ФИО';

затем мы выводим в форме это сообщение
<?php echo @$error['fio']; ?>

Получаем - выводим сообщение об ошибки из массива $error который создаётся если пустая empty($fio)...так вот входим мы первый раз в эту форму...пременная fio пустая? - пустая...значит получаем вывод что мы уже неправильно ввели данные.

Спустя 25 минут, 31 секунда (20.12.2010 - 17:20) inpost написал(а):
Ты ходил по ссылке, которую давал?
Эту проверку надо делать уже внутри первой проверки на нажатие кнопки!

Спустя 19 минут, 34 секунды (20.12.2010 - 17:40) SnowWind написал(а):
а откуда по-твоему я это всё взял? ))) блин...щас ещё раз взгляну

Спустя 1 минута, 17 секунд (20.12.2010 - 17:41) inpost написал(а):
Правило №3. Если нет - кидай сюда свой код страницы =)

Спустя 23 минуты, 32 секунды (20.12.2010 - 18:05) SnowWind написал(а):
если вот тут окажется ложь....
if(!empty($_POST['formsend']))
{
// инициализируем переменные:
$fio = trim($_POST['fio']) == '' ? trim($_POST['fio']) : '';

то пойдёт ли код во вложения..вот сюда?
// следующую проверку делаем для всех наших данных
if(empty($fio))
$error['fio'] = 'Вы не ввели ФИО';

Спустя 4 минуты, 37 секунд (20.12.2010 - 18:09) inpost написал(а):
Нет, это всё внутри основной проверки.
Если кнопка нажата (!empty) = true, то весь дальнейший код, и то и другое. там же выделено всё.
А если не проходит проверку, возвращает ложь, то сразу форма идёт.

Спустя 26 минут, 26 секунд (20.12.2010 - 18:36) SnowWind написал(а):
эм...т.е
если не пустая переменная $_POST['formsend'] то убираем в ней пробелы, а все вложения этого условия пропускаются и переходим к форме, где выводятся ошибки несуществующих переменных, но мы их глушим собакой - правильно?
а если в переменную $_POST['formsend'] попадает ложь то программа идёт до первого истинного условия в нашем случае это empty($fio), а оно полюбому отсутствует, т.к кнопка не нажата, код выполняет действия этого истинного условия и переходит к форме, но тут уже у нас появились значения переменных, об ошибках, да?

Т.Е как идёт всё же код? Он идёт и проверяет ВСЕ условия, не пропуская НИ одного?

Спустя 7 минут, 29 секунд (20.12.2010 - 18:43) kovaldm написал(а):
Приведи плиз весь код который получился.

Спустя 1 час, 27 минут, 23 секунды (20.12.2010 - 20:11) inpost написал(а):
SnowWind
Мне кажется, что я все понятно показал, покажи свой код, лучше! Я ткну пальцем, где именно ты ошибся, так будет быстрее =)

Спустя 10 часов, 13 минут, 7 секунд (21.12.2010 - 06:24) SnowWind написал(а):
Да мне важно понять что куда работает...что толку что мне ткнут носом?
Я же написал свои мысли...правильно ли я понимаю?

Код теперь такой и всё работает, ну немного подкорректировать ещё...


<?php

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

if (!empty($_POST['title'])) {$ntitle = $_POST['title'];}
if (!empty($_POST['news_additer'])) {$news_additer = $_POST['news_additer'];}

$error = array();

if (isset($news_additer))
{
if (count($error) == '0')
{$result = mysql_query ("INSERT INTO add_news (title) VALUES ('$ntitle')", $db); if ($result == 'true') {echo 'complete';} else {echo 'ERROR';}

if (empty($ntitle)) {$error['title'] = '<p><font color="red">Вы не ввели заголовок</font></p>';}
}

?>
<form name="news_form" action="add_news.php" method="POST">
<
p>Введите название:<input name="title" type="text" value="<?php echo @$ntitle; ?>"/><?php echo @$error['title']; ?></p>
<
input name="news_additer" type="submit" value="Добавить"/>
</
form>


Спустя 6 часов, 8 минут, 22 секунды (21.12.2010 - 12:32) ИНСИ написал(а):
SnowWind я же тебе дал пример, который работает исправно.

Спустя 1 час, 12 минут, 41 секунда (21.12.2010 - 13:45) ИНСИ написал(а):
SnowWind тогда вот пару заметок:
Цитата
$result = mysql_query ('SELECT * FROM captcha', $db);
$myrow = mysql_fetch_array ($result);


это ты где используешь?
Цитата

if (!empty($_POST['title'])) {$ntitle = $_POST['title'];}
if (!empty($_POST['news_additer'])) {$news_additer = $_POST['news_additer'];}

if (isset($news_additer))
{

Достаточно сделать такую проверку:
if($_POST['title'] && $_POST['title'] != '') {

Цитата
if (count($error) == '0')
  {

у тебя по любому массив будет пустым, ты ведь сверху ничего в него не добавляешь...
Цитата
mysql_query ("INSERT INTO add_news (title) VALUES ('$ntitle')",  $db);

Обязательно фильтрую входящие данные. Подумай о безопасности.
Цитата
if ($result == 'true')

лучше так:
if($result == true)

Цитата
if (empty($ntitle)) {$error['title'] = '<p><font color="red">Вы не ввели заголовок</font></p>';}

ты ведь уже занес запись в БД .... обычно проверяется, а потом заносится...
Цитата
<?php echo @$ntitle; ?>

старайся не использовать подавление ошибок. И ты неверно поставил, надо ставить так:
<?php @echo $ntitle; ?>

Спустя 2 часа, 27 минут, 17 секунд (21.12.2010 - 16:12) SnowWind написал(а):
блин на работе не дают совсем сосредоточиться.... вот мой код....
<?php

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

if (!empty($_POST['title'])) {$ntitle = $_POST['title'];}
if (!empty($_POST['captcha_check'])) {$ncaptcha_check = $_POST['captcha_check'];}
$error=array();

if (!empty($_POST['news_additer'])) {$news_additer = $_POST['news_additer'];}
?>

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


<?php

if (isset ($news_additer))
{
if (empty($ntitle)) {$error['title'] = '<p><font color="red">Вы не ввели заголовок</font></p>';}
if (empty($ncaptcha_check) || ($ncaptcha_check != $myrow['key'])) {$error['captcha_check'] = '<p><font color="red">Вы неправильно ввели каптчу</font></p>';}

if (count($error) == '0')
{$result = mysql_query ("INSERT INTO add_news (title, text, date, author) VALUES ('$ntitle', '$ntext', '$ndate', '$nauthor')", $db); if ($result == 'true') {echo 'complete';} else {echo 'BIG ERROR';}
}
}

?>

<form
name="news_form" action="add_news.php" method="POST">
<p>
Введите название:<input name="title" type="text" value="<?php echo @$ntitle; ?>"/><?php echo @$error['title']; ?></p>
<p>
Что вы видите на картинке? <?php echo $myrow['image']; ?><input name="captcha_check" type="text"/><?php echo @$error['captcha_check']; ?></p>
<input
name="news_additer" type="submit" value="Добавить"/>
</form>


а как в таком случае избавиться от ошибки? если не подовлять её? Почему нужно убирать ковычки н-р вот тут if (count($error) == '0')

Спустя 31 минута, 50 секунд (21.12.2010 - 16:44) ИНСИ написал(а):
Цитата
блин на работе не дают совсем сосредоточиться....

нормально :)
Цитата
а как в таком случае избавиться от ошибки? если не подовлять её?

я тебе тут написал уже ранее, вот повторяю:
Свернутый текст
if($_POST['title']) {

if($_POST['title'] != '') {
$db = mysql_connect ('localhost', 'nz', 'zn');
mysql_select_db ('nz', $db);

mysql_query("
INSERT
INTO `add_news`(`title`)
VALUES('"
.mysql_real_escape_string(stripslashes($_POST['title']))."')
"
) or die(mysql_error());

echo 'Completed!';
}
else $error = '<p><font color="red">Вы не ввели заголовок</font></p>';
}


<form action="" method="POST">
<p>
Введите название:<input name="title" type="text" value="<? echo htmlspecialchars($_POST['title']); ?>"/><?=$error?></p>
<input
name="news_additer" type="submit" value="Добавить"/>

</form>


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

Цитата
Почему нужно убирать ковычки н-р вот тут if (count($error) == '0')

можешь оставить....

Спустя 23 минуты, 13 секунд (21.12.2010 - 17:07) inpost написал(а):
У меня, вроде, на примере написано: нажатие кнопки - общее, инициализация данных уже внутри! Нажатие кнопки проверяем !empty, а не isset.
Числа (!), true\false (!) в кавычки не надо брать =)

Теперь сюда и смотрим, как правильно делать вставки
http://inpost.dp.ua/lessons/lessons.php?id=1
В тексте или запросах. '{ntitle}' или '".$ntitle."'

Куда выбросил редирект из моего кода? =( Мне казалось, что у меня всё там ясно показано... надо, видимо, всё переписывать и ещё более занудно объяснять =)

UPDATE: можешь ещё 5-ую тему глянуть, думаю там будет полезно тебе: `id=5`

Спустя 18 дней, 21 час, 47 минут, 10 секунд (10.01.2011 - 14:54) SnowWind написал(а):
А что вот это значит?
<?=$error?>

Спустя 1 минута, 58 секунд (10.01.2011 - 14:56) sharki написал(а):
<?=$error?> это эквивалентно <? echo $error; ?>

Спустя 1 минута, 7 секунд (10.01.2011 - 14:57) Игорь_Vasinsky написал(а):
да.вывод ошибки

Спустя 1 минута, 36 секунд (10.01.2011 - 14:59) Игорь_Vasinsky написал(а):
вот этой
Цитата
$error = '<p><font color="red">Вы не ввели заголовок</font></p>';

Спустя 1 час, 26 минут, 4 секунды (10.01.2011 - 16:25) SnowWind написал(а):
welbox2 вот твой код

if($_POST['title']) {

if($_POST['title'] != '') {
$db = mysql_connect ('localhost', 'nz', 'zn');
mysql_select_db ('nz', $db);

mysql_query("
INSERT
INTO `add_news`(`title`)
VALUES('"
.mysql_real_escape_string(stripslashes($_POST['title']))."')
"
) or die(mysql_error());

echo 'Completed!';
}
else $error = '<p><font color="red">Вы не ввели заголовок</font></p>';
}



<form action="" method="POST">
<
p>Введите название:<input name="title" type="text" value="<? echo htmlspecialchars($_POST['title']); ?>"/><?=$error?></p>
<
input name="news_additer" type="submit" value="Добавить"/>


</
form>


Скажи, а разве вот тут в форме
<? echo htmlspecialchars($_POST['title']); ?>
не будет ошибка, при первом её открытии?

Ага и ещё ты говорил, что нужно писать вот так -
<?php @echo $ntitle; ?>
НО если я пишу так, ТО вылетает ошибка, а так
<?php echo @$ntitle; ?>
НЕТ

Спустя 18 минут, 54 секунды (10.01.2011 - 16:44) ИНСИ написал(а):
Цитата
Скажи, а разве вот тут в форме

<? echo htmlspecialchars($_POST['title']); ?>

не будет ошибка, при первом её открытии?

нет, не будет.

Цитата
Ага и ещё ты говорил, что нужно писать вот так -

<?php @echo $ntitle; ?>

НО если я пишу так, ТО вылетает ошибка, а так

<?php echo @$ntitle; ?>

НЕТ


верно. Я ступил. просто обычно я подавления если ставлю, то ставлю у самой функции. В данном случае перед переменной надо было.

Спустя 28 минут, 21 секунда (10.01.2011 - 17:12) Игорь_Vasinsky написал(а):
Цитата
нет, не будет.


должна быть т.к. $_POST['title'] ещё нету.
Быстрый ответ:

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