1. Подскажите пожалуйста как поставить проверку на пустоту?
Пытался делать и isset и empty. Сама проверка работает, но когда захожу на страницу, сразу выводится сообщение, что поля не заполненны..
<?php
$dat = date('Y.m.j.'); //дата
//----------------------------------------------------------
include_once "mysql.php"; //подключение хоста
//------
mysql_query('SET NAMES cp1251'); //отоброжения русского текста
mysql_select_db('links');
$editError ='';
//Проверка на пустоту
if (!isset($_POST['login']) || $_POST['login'] == '')
{
$editError = 'Не введен логин';
}
else
//добавление нового сообщения
if (isset($_POST['ok']))
{
$result = mysql_query('insert into guestbook (login, mail, message, date)
VALUES ("'.$_POST['login'].'",
"'.$_POST['mail'].'",
"'.$_POST['message'].'",
"'.$dat.'")');
header('Location: ' . $_SERVER['PHP_SELF']);
exit;
}
//вывод всех сообщений
$result = mysql_query('select * from guestbook ');
while ($all_guestbook[] = mysql_fetch_assoc($result)) {}
?>
<tr>
<td width="150">Сообщение </td>
<td><textarea name="message" id="contentbox"></textarea></td>
<td><div style="color:red;"><?php echo $editError; ?></div> </td>
</tr>
Спустя 9 минут, 28 секунд (29.08.2011 - 16:45) inpost написал(а):
Lightt
Сначала проверку на нажатие кнопки, а внутри неё уже проверку, введены ли данные, и если не введены - выводи текст о том, что не введены они были.
Логику своего скрипта читай:
- Введены ли данные? - НЕТ!, значит мы что делаем? Правильно, выводим текст, который ты написал выводить в случае отсутствия данных.
А логика такая должна быть:
Сначала проверку на нажатие кнопки, а внутри неё уже проверку, введены ли данные, и если не введены - выводи текст о том, что не введены они были.
Логику своего скрипта читай:
- Введены ли данные? - НЕТ!, значит мы что делаем? Правильно, выводим текст, который ты написал выводить в случае отсутствия данных.
А логика такая должна быть:
if(Нажата кнопка?)
{
if(Введены данные?)
}
А тут форму вывели.
Спустя 4 минуты, 47 секунд (29.08.2011 - 16:49) CyberOrcX написал(а):
в этом скрипте, чтобы показывало сообщение "Поля не заполнены", как минимум, надо написать вывод этого сообщения!
Кстати, где форма-то?
Что-то типа этого )
если честно, то впервые вижу такую Индию )
Кстати, где форма-то?
Что-то типа этого )
<form action='guestbook_msg_sender.php' method='POST'>
<td width="150">Сообщение </td>
<td><textarea name="message" id="contentbox"></textarea></td>
<td><input type='submit' name='ok' value='ОК' /><br />
<div style="color:red;"><?php echo $editError; ?></div> </td>
</form>
если честно, то впервые вижу такую Индию )
Спустя 4 минуты, 31 секунда (29.08.2011 - 16:54) Lightt написал(а):
inpost Дааа спасибо =) действительно тупанул что то...
Но теперь не выводится сообщение
CyberOrcX Да это само собой разумеется, есть там форма, это не полный код. А именно часть которая отвечает за вывод сообщения
Но теперь не выводится сообщение
//добавление нового сообщения
if (isset($_POST['ok']))
{
//Проверка на пустоту
if (!isset($_POST['login']) || $_POST['login'] == '')
{
$editError = 'Не введен логин';
}
else
$result = mysql_query('insert into guestbook (login, mail, message, date)
VALUES ("'.$_POST['login'].'",
"'.$_POST['mail'].'",
"'.$_POST['message'].'",
"'.$dat.'")');
header('Location: ' . $_SERVER['PHP_SELF']);
exit;
}
CyberOrcX Да это само собой разумеется, есть там форма, это не полный код. А именно часть которая отвечает за вывод сообщения
Спустя 2 минуты, 58 секунд (29.08.2011 - 16:57) m4a1fox написал(а):
Lightt
Лучше так
if (!isset($_POST['login']) || $_POST['login'] == '')
Лучше так
if (!empty($_POST['login']))
Спустя 1 минута, 7 секунд (29.08.2011 - 16:58) m4a1fox написал(а):
Lightt
Ай! Короче! Вот так
Ай! Короче! Вот так
//добавление нового сообщения
if (isset($_POST['ok']))
{
//Проверка на пустоту
if (!empty($_POST['login']))
{
$editError = 'Не введен логин';
}else{
$result = mysql_query("INSERT INTO `guestbook` SET
`login` = '".mysql_real_escape_strings($_POST['login'])."',
`mail` = '".mysql_real_escape_strings($_POST['mail'])."',
`message` = '".mysql_real_escape_strings($_POST['message'])."',
`date` = '".htmlspesialchars($_POST['date'])."'");
header('Location: ' . $_SERVER['PHP_SELF']);
exit;
}
}
Спустя 37 секунд (29.08.2011 - 16:59) inpost написал(а):
m4a1fox
Warning, не существует переменной
Warning, не существует переменной
Спустя 37 секунд (29.08.2011 - 16:59) Игорь_Vasinsky написал(а):
if (empty($_POST['login']))
{
echo $editError = 'Не введен логин';
}
Спустя 2 минуты, 1 секунда (29.08.2011 - 17:01) inpost написал(а):
Игорь_Vasinsky
Читай выше
Читай выше
Спустя 1 минута, 12 секунд (29.08.2011 - 17:02) m4a1fox написал(а):
inpost
Это как??????
Это как??????
Спустя 1 минута, 10 секунд (29.08.2011 - 17:04) Lightt написал(а):
m4a1fox
Тогда уж так -
Но все равно не выводится сообщение.
Тогда уж так -
if (empty($_POST['login']))
Но все равно не выводится сообщение.
Спустя 25 секунд (29.08.2011 - 17:04) Игорь_Vasinsky написал(а):
кокой переменной нет... не вижу...
есть ошибки в SQL (пропущены ' - несколько раз)
есть ошибки в SQL (пропущены ' - несколько раз)
Спустя 33 секунды (29.08.2011 - 17:05) m4a1fox написал(а):
Lightt
Ну да - пусто пусто! Переборщил я с !-знаком!...
Ну да - пусто пусто! Переборщил я с !-знаком!...
Спустя 34 секунды (29.08.2011 - 17:05) Игорь_Vasinsky написал(а):
Lightt
для вывода ошибки используй echo - эти 4 буквы творят чудеса с пустой страницей. я выше написал как.
для вывода ошибки используй echo - эти 4 буквы творят чудеса с пустой страницей. я выше написал как.
Спустя 8 секунд (29.08.2011 - 17:05) m4a1fox написал(а):
Игорь_Vasinsky
Цитата |
(пропущены ' - несколько раз) |
поправил, - вроде должон работать!
Спустя 1 минута, 24 секунды (29.08.2011 - 17:07) Игорь_Vasinsky написал(а):
:D наоборот ковычки
'" . $var. "'
Спустя 1 минута, 45 секунд (29.08.2011 - 17:08) Lightt написал(а):
Игорь_Vasinsky
Так сообщение тоже не выводится =)
И + мне надо вывести его в конкретном месте...
Так сообщение тоже не выводится =)
И + мне надо вывести его в конкретном месте...
Спустя 32 секунды (29.08.2011 - 17:09) m4a1fox написал(а):
Игорь_Vasinsky
Ага! Точно модмечено Холмс!!
Ага! Точно модмечено Холмс!!
Спустя 35 секунд (29.08.2011 - 17:10) m4a1fox написал(а):
Lightt
Цитата |
И + мне надо вывести его в конкретном месте... |
С начало занеси его в БД!
Спустя 2 минуты, 28 секунд (29.08.2011 - 17:12) Игорь_Vasinsky написал(а):
зачем ошибки в бд заносить? историю ошибок юзера чтоли делаете?
если есть ошибка - то есть переменная $editError, счтоб её вывести нужно проверить есть ли она.
если есть ошибка - то есть переменная $editError, счтоб её вывести нужно проверить есть ли она.
if($editError)в нужном месте.
echo $editError;
Спустя 4 минуты, 31 секунда (29.08.2011 - 17:17) Lightt написал(а):
Игорь_Vasinsky
Про кавычки никто не объяснял)) делаю как умею, так правильней?
Слова появляются, переменная нет.
Про кавычки никто не объяснял)) делаю как умею, так правильней?
$dat = date("Y.m.j."); //дата
//----------------------------------------------------------
include_once "mysql.php"; //подключение хоста
//------
mysql_query("SET NAMES cp1251"); //отоброжения русского текста
mysql_select_db("links");
//добавление нового сообщения
if (isset($_POST["ok"]))
{
//Проверка на пустоту
if (empty($_POST["login"]))
{
echo $editError = "Не введен логин";
}
else
$result = mysql_query("insert into guestbook (login, mail, message, date)
VALUES ('".$_POST["login"]."',
'".$_POST["mail"]."',
'".$_POST["message"]."',
'".$dat."')");
header("Location: " . $_SERVER["PHP_SELF"]);
exit;
}
//вывод всех сообщений
$result = mysql_query("select * from guestbook ");
while ($all_guestbook[] = mysql_fetch_assoc($result)) {}
echo "Вот тут должна появиться ошибка".$editError;
Слова появляются, переменная нет.
Спустя 4 минуты, 11 секунд (29.08.2011 - 17:21) m4a1fox написал(а):
Lightt
Черт! Ну вот как так? Если вы пишите
Черт! Ну вот как так? Если вы пишите
то почему else без скобок?
//Проверка на пустоту
if (empty($_POST["login"]))
{
echo $editError = "Не введен логин";
}
//Проверка на пустоту
if (empty($_POST["login"]))
{
echo $editError = "Не введен логин";
}else{
$result = mysql_query("insert into guestbook (login, mail, message, date)
VALUES ('".$_POST["login"]."',
'".$_POST["mail"]."',
'".$_POST["message"]."',
'".$dat."')");
header("Location: " . $_SERVER["PHP_SELF"]);
exit;
}
Спустя 51 секунда (29.08.2011 - 17:22) Игорь_Vasinsky написал(а):
Про оформление SQL запросов написано у меня в подписи - в частности про конкатенацию.
Если одно действие в условии - скобки можно опустить.
я бы вообще сделал так:
Если одно действие в условии - скобки можно опустить.
я бы вообще сделал так:
if($_POST['ok'])
{
$login = !empty($_POST['login']) ? htmlspecialchars($_POST['login']) : null;
//Не стоит принебрегать безопастностью, например htmlspecialchars()
// И вообще бы не дурно было бы проверить на соответствие регуляркой
...
...
...
//Создали массив для ошибок
$editErrors = array();
if($login)
$editErrors[] = "Не заполнено поле Логин!";
...
...
...
// Проверили на наличие элементов в массиве - если они(он) есть - значи и есть ошибки которые надо вывести.
if($editErrors)
{
foreach($editErrors as $editError)
{
echo $editError."<br/>";
}
}
}
Спустя 1 минута, 31 секунда (29.08.2011 - 17:23) Lightt написал(а):
m4a1fox
Блиин, внатуре о_О ошибку не выдавал, а сам про них забыл =) спасибо. Заработало))
Блиин, внатуре о_О ошибку не выдавал, а сам про них забыл =) спасибо. Заработало))
Спустя 3 минуты, 8 секунд (29.08.2011 - 17:26) Lightt написал(а):
Игорь_Vasinsky
Ок, счас почитаю, переварю, и попробую сделать правильно =)
Ок, счас почитаю, переварю, и попробую сделать правильно =)
Спустя 2 минуты, 5 секунд (29.08.2011 - 17:28) Игорь_Vasinsky написал(а):
Про тернарный оператор - у меня в журнале или на ирбисе.
Спустя 2 минуты, 55 секунд (29.08.2011 - 17:31) m4a1fox написал(а):
Lightt
Не забывай про них! А если опускаешь то вот так
ИМХО! Я так делаю!
Не забывай про них! А если опускаешь то вот так
if(!isset($_POST['log']))
echo 'Ups! Shit Error! ';
else
echo 'This is OK!';
ИМХО! Я так делаю!
Спустя 29 минут, 8 секунд (29.08.2011 - 18:00) inpost написал(а):
if($editError)
echo $editError;
- это уж тем более ошибка.
Пиши так:
if(!isset() || empty())
echo $editError;
- это уж тем более ошибка.
Пиши так:
if(!isset() || empty())
Спустя 12 минут, 6 секунд (29.08.2011 - 18:12) Игорь_Vasinsky написал(а):
inpost
так $editError - если нет ошибок - то она не определена.
поэтому и if($editError)
так $editError - если нет ошибок - то она не определена.
поэтому и if($editError)
Спустя 44 минуты, 32 секунды (29.08.2011 - 18:57) inpost написал(а):
Игорь_Vasinsky
Если она не определена, то
if($editError) - будет равен WARNING.
Если она не определена, то
if($editError) - будет равен WARNING.
Спустя 4 минуты, 16 секунд (29.08.2011 - 19:01) Игорь_Vasinsky написал(а):
варнингов не наблюдал вроде...
ну дописать isset()
ну дописать isset()