Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

не работает оператор else

35K
23 июля 2008 года
lbs
10 / / 21.07.2008
Всем привет!

Вообщем есть форма в ней два текстовых поля name и fam, а также скрипт php который все это дело обрабатывает и записывает в файл file.htm, данные нормально записываются, но если проверить на условие через оператор else, то ничего не выдает, о том что надо вести имя или фамилию!

вот код:

Код:
<?php
if (isset($_REQUEST["name"]))
{
add($_REQUEST['name']);
}
else
{
echo "введите имя";
}
if (isset($_REQUEST["fam"]))
{
addfam($_REQUEST['fam']);
}
else
{
echo "введите фамилию";
}
 
function add($name)
{
$f=fopen ("file.htm", "a+");
$w=fwrite($f, "ваше имя: $name<br>");
fclose ($f);
}
 
function addfam($fam)
{
$f=fopen ("file.htm", "a+");
$w=fwrite($f, "ваша фамилия: $fam<br>");
fclose ($f);
}
?>


подскажите плз, если не трудно)
8
23 июля 2008 года
mfender
3.5K / / 15.06.2005
И не будет работать. Ибо с формы всегда приходят эти поля, а ты проверяешь все-го лишь наличие переменных в массиве. Они есть всегда. Тебе нужно проверять ещё и заполненность поля. Например так:

 
Код:
if (isset($_REQUEST["name"]) && strlen($_REQUEST["name"])){
    add($_REQUEST['name']);
}else{
    echo "ведите имя";
}
35K
23 июля 2008 года
lbs
10 / / 21.07.2008
mfender Огромное спс!
35K
24 июля 2008 года
lbs
10 / / 21.07.2008
вот написал код дальше и столкнулся с проблемой: например пишу в поле, где нужно ввести имя оператор else обрабатывает условие правильно, если пишу наоборот в поле фамилия то получается "введите имя и ваши данные записаны", почему так, если не трудно подскажите, где ошибку сделал

Код:
<?php
if (isset($_REQUEST["name"]) && strlen($_REQUEST["name"]))
{
add($_REQUEST['name']);
}
else
{
echo "<font color = 'red'>введите имя</font>" , "<br>";
}
if (isset($_REQUEST["fam"]) && strlen($_REQUEST["fam"]))
{
addfam($_REQUEST['fam']);
}
else
{
echo "<font color = 'red'>введите фамилию</font>" , "<br>";
}
if (isset($_REQUEST["name"]) && ($_REQUEST["fam"] == false))
{
echo "";
}
else
{
echo "ваши данные записаны";
}
function add($name)
{
$f=fopen ("file.htm", "a+");
$w=fwrite($f, "ваше имя: $name<br>");
fclose ($f);
}
function addfam($fam)
{
$f=fopen ("file.htm", "a+");
$w=fwrite($f, "ваша фамилия: $fam<br>");
fclose ($f);
}
?>
364
24 июля 2008 года
Xupypr
148 / / 20.04.2000
просто обойдя все условия, таки доходим до вывода этого сообщения.

Делайте exit(); после соблюдения условий ошибок.
8
24 июля 2008 года
mfender
3.5K / / 15.06.2005
ты повторил ту же ошибку. лучше основное проверять где-то на подходах. а то сам себя запутываешь.

я бы сделал примерно так (конечно, не совсем так, но идея такая):

Код:
$mesages = array(
    "Не указано имя",
    "Не указана фамилия",
    "Данные успешно приняты",
    "Отсутствуют некоторые поля"
);

$caution = array();

if (!isset($_REQUEST["name"]) || !isset($_REQUEST["fam"])) {
    array_push($caution, 3);
}else{
    if (!strlen($_REQUEST["name"])) array_push($caution, 0);
    if (!strlen($_REQUEST["fam"])) array_push($caution, 1);
}

if (!sizeof($caution)) {
    array_push($caution, 2);
    add($_REQUEST["name"]);
    addfam($_REQUEST["fam"]);
}

foreach($caution as $ckey){
    echo "{$mesages[$ckey]}<br>";
}
256
24 июля 2008 года
foxweb
1.0K / / 27.07.2005
isset() = !empty()
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог