[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Гостевая страница
Lightt
Есть несколько вопросов по гостевой =)

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 Дааа спасибо =) действительно тупанул что то...
Но теперь не выводится сообщение


//добавление нового сообщения
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, не существует переменной smile.gif

Спустя 37 секунд (29.08.2011 - 16:59) Игорь_Vasinsky написал(а):
if (empty($_POST['login']))	
{
echo $editError = 'Не введен логин';
}

Спустя 2 минуты, 1 секунда (29.08.2011 - 17:01) inpost написал(а):
Игорь_Vasinsky
Читай выше smile.gif

Спустя 1 минута, 12 секунд (29.08.2011 - 17:02) m4a1fox написал(а):
inpost
Это как?????? ohmy.gif

Спустя 1 минута, 10 секунд (29.08.2011 - 17:04) Lightt написал(а):
m4a1fox
Тогда уж так -
if (empty($_POST['login']))	

Но все равно не выводится сообщение.

Спустя 25 секунд (29.08.2011 - 17:04) Игорь_Vasinsky написал(а):
кокой переменной нет... не вижу...
есть ошибки в SQL (пропущены ' - несколько раз)

Спустя 33 секунды (29.08.2011 - 17:05) m4a1fox написал(а):
Lightt
Ну да - пусто пусто! Переборщил я с !-знаком!...

Спустя 34 секунды (29.08.2011 - 17:05) Игорь_Vasinsky написал(а):
Lightt
для вывода ошибки используй 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, счтоб её вывести нужно проверить есть ли она.

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
Черт! Ну вот как так? Если вы пишите

//Проверка на пустоту
if (empty($_POST["login"]))
{
echo $editError = "Не введен логин";
}
то почему else без скобок?

//Проверка на пустоту
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;
- это уж тем более ошибка. smile.gif

Пиши так:
if(!isset() || empty())

Спустя 12 минут, 6 секунд (29.08.2011 - 18:12) Игорь_Vasinsky написал(а):
inpost
так $editError - если нет ошибок - то она не определена.

поэтому и if($editError)

Спустя 44 минуты, 32 секунды (29.08.2011 - 18:57) inpost написал(а):
Игорь_Vasinsky
Если она не определена, то
if($editError) - будет равен WARNING.

Спустя 4 минуты, 16 секунд (29.08.2011 - 19:01) Игорь_Vasinsky написал(а):
варнингов не наблюдал вроде...

ну дописать isset()
Быстрый ответ:

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