Вопрос такой - как сделать что бы когда мы открывали форму первый раз вот эта строчка -
<?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
А вообще, убери проверку, выводи просто форму.
Вывод же этой переменной делай по обычному условию: 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 - тернартный оператор, тоже может быть полезен
Глянь: http://inpost.dp.ua/lessons/lessons.php?id=2
Если что-то непонятно, напиши сюда, набросал на скорую руку макет ответа на похожие вопросы. Возможно я недостаточно полно раскрыл эту тему =) id=3 - тернартный оператор, тоже может быть полезен
Спустя 20 часов, 47 минут, 11 секунд (20.12.2010 - 16:55) SnowWind написал(а):
разбираем..... вот там написано
затем мы выводим в форме это сообщение
Получаем - выводим сообщение об ошибки из массива $error который создаётся если пустая empty($fio)...так вот входим мы первый раз в эту форму...пременная fio пустая? - пустая...значит получаем вывод что мы уже неправильно ввели данные.
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, то весь дальнейший код, и то и другое. там же выделено всё.
А если не проходит проверку, возвращает ложь, то сразу форма идёт.
Если кнопка нажата (!empty) = true, то весь дальнейший код, и то и другое. там же выделено всё.
А если не проходит проверку, возвращает ложь, то сразу форма идёт.
Спустя 26 минут, 26 секунд (20.12.2010 - 18:36) SnowWind написал(а):
эм...т.е
если не пустая переменная $_POST['formsend'] то убираем в ней пробелы, а все вложения этого условия пропускаются и переходим к форме, где выводятся ошибки несуществующих переменных, но мы их глушим собакой - правильно?
а если в переменную $_POST['formsend'] попадает ложь то программа идёт до первого истинного условия в нашем случае это empty($fio), а оно полюбому отсутствует, т.к кнопка не нажата, код выполняет действия этого истинного условия и переходит к форме, но тут уже у нас появились значения переменных, об ошибках, да?
Т.Е как идёт всё же код? Он идёт и проверяет ВСЕ условия, не пропуская НИ одного?
если не пустая переменная $_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); |
это ты где используешь?
Цитата |
if (!empty($_POST['title'])) {$ntitle = $_POST['title'];} |
Достаточно сделать такую проверку:
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 написал(а):
блин на работе не дают совсем сосредоточиться.... вот мой код....
а как в таком случае избавиться от ошибки? если не подовлять её? Почему нужно убирать ковычки н-р вот тут if (count($error) == '0')
<?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`
Числа (!), 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'] ещё нету.