| |
|
|
| | У многих языков программирования есть алгоритмообразующие команды типа “stop” и безусловный переход “jump-goto”. Похоже, что в свое время я так к ним привык, что иными средствами строить алгоритм не в силах. По крайней мере, вот две проблемы, которые я не могу решить операторами рнр.
1. Первый случай.
Производится сравнение двух переменных if ($x = $y)
Если это условие не выполняется, то надо продолжать дальнейшее выполнение скрипта.
Если это условие выполняется, то надо:
- echo «Ошибка»;
- stop (остановка скрипта)
2. Второй случай.
В файле 1.php выполняется форма ввода информации с клавиатуры. После осуществления ввода скрипт 1.php закрывается и управление передается обработчику insert.php
В файле insert.php производится сравнение двух переменных if ($x = $y)
Если это условие не выполняется, то надо продолжать дальнейшее выполнение скрипта.
Если это условие выполняется, то надо ввести информацию повторно с помощью формы ввода. Однако эта форма осталась в файле insert.php, на который надо сделать безусловный переход.
Я понимаю, что какое-то решение в рамках рнр существует, но не могу до него додуматься! Посоветуйте, как Вы решаете подобные проблемы? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(18.11.2006 в 23:02)
| | | 1. А функция exit() вам не подходит?
<?
...
if ($x == $y) exit;
...
?>
|
2. Воспользуйтесь в файле insert.php функцией header(), сделав с ее помощью переадресацию на страницу с формой.
insert.php
<?
...
if ($x == $y) header("Location: 1.php");
else {/*дальнейшее выполнение скрипта*/}
...
?>
|
| |
| |
|
|
| |
|
|
| |
для: Drago
(18.11.2006 в 23:20)
| | | То, что доктор прописал!
Спасибо большое! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(18.11.2006 в 23:02)
| | | >Похоже, что в свое время я так к ним привык, что иными средствами строить алгоритм не в силах.
Через это проходят все - просто помните о фундаментальных работах Вирта (одни из корифеев программирования), который доказал, что любую программу можно построить без исользования goto. Любой изучающий современное программирование человек доказывает это сам себе (это требует усилий, но проходят через это все).
>1. Первый случай.
Для остановки скрита в PHP традиционно используют фунцию exit(), а для вывода сообщения echo
<?php
if($x != $y)
{
echo "Ошибка";
exit();
}
?>
|
однако можно и сократить код, так как функция exit() допускает аргумент, который будучи ей переданный выводится в окно браузера, т.е. приведённый выше код можно переписать
<?php
if($x != $y) exit("Ошибка");
?>
|
| |
| |
|
|
| |
|
|
| |
для: Владимир55
(18.11.2006 в 23:02)
| | | >2. Второй случай.
А вы используйте один файл, в этом случае удобнее работать
<?php
if(!empty($_POST))
{
// Если мы здесь, пользователь нажал на кнопку
if($x == $y)
{
// $x и $y равны, выполняем своё чёрное дело
// и останавливаем скрипт
exit(); // Останавливаем скрипт - пользователь не увидит формы
}
// Если мы тут $x и $y не равны - дальше выводится форма
}
?>
<form method=post>
<input type=text name=name>
<input type=submit value="OK">
</form>
|
Т.е. у вас здесь и обработчик и HTML-форма находятся в одном и том же файле, затем когда всё будет отлажено файл можно разбить на части, например, выделив обработчик в отдельный файл и включив его при помощи инструкции include(). | |
| |
|
|
| |
|
|
| |
для: cheops
(18.11.2006 в 23:32)
| | | Это вообще конфетка!
Просто здорово! Вот спасибочки! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(18.11.2006 в 23:40)
| | | Попробуйте научиться использовать исключения. Вот это настоящая конфетка :)
На мой взгляд совершенне механизма для обработки ошибок врядли можно придумать. | |
| |
|
|