Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработчик ошибок
 
 автор: Keyses   (01.03.2009 в 02:13)   письмо автору
 
 

Нужен совет по поводу того, как лучше реализовать обработчик ошибок, не глобальных, а например если пользователь ввёл не валидные данные в форму или БД недоступна. Я выделил отдельный файл с функцией, где в массиве описаны ошибки, а потом просто обращаюсь к ней с кодом соответствющей ошибки, но есть одно но:
К примеру ошибка должна выводиться в середине html-странички, как это реализовать красиво - я не представляю, пришлось разделить страницу на несколько частей и выводить ошибку примерно так:
if (empty("$_POST['Name']")){
show_head();
show_error(3);
show_bottom();
}


Мне кажется извращение. Подскажите как реализовать сие красивее.

  Ответить  
 
 автор: sim5   (01.03.2009 в 05:14)   письмо автору
 
   для: Keyses   (01.03.2009 в 02:13)
 

А зачем разбрасывать сообщениия по всей странице? Ну не доступна БД, и если это "фатально" для текущей страницы - пустая страница с сообщением. Хотите ее отцентрировать, так для этого CSS существует. Ну а при заполнении полей формы, например, ошибок может быть много, и выводить их нужно непосредственно рядом с формой, и если "скопом", то, видимо, лучше вверху. Либо непосредственно рядом с полями формы, ошибки ввода в которых произошли.
Кстати, ошибок на каждое поле формы может быть не одна, а несколько, так что код show_error(3), ну никак не покатит. Либо я не правильно понимаю вашего понятия "код ошибки".

  Ответить  
 
 автор: Keyses   (01.03.2009 в 16:31)   письмо автору
 
   для: sim5   (01.03.2009 в 05:14)
 

Я проверяю все поля на валидность и потом просто выводится сообщение о том, что не заполнено или заполнено неверно одно из обязательных полей, вот и всё. А суть всё же в другом, как расположить сообщение об ошибке над формой, при условии, что выше есть ещё какой-то текст или формы..?

  Ответить  
 
 автор: sim5   (01.03.2009 в 16:35)   письмо автору
 
   для: Keyses   (01.03.2009 в 16:31)
 

Это уже проблема не РНР, а чисто HTML+CSS. Помещайте свои сообщения и форму, например, в таблицу или элементы DIV.

  Ответить  
 
 автор: Keyses   (01.03.2009 в 17:14)   письмо автору
 
   для: sim5   (01.03.2009 в 16:35)
 

Можно примерный алгоритм? Я должен сделать в функции обработчика ошибок таблицу назначить ей ID и потом в css просто сформировать ей дизайн?

  Ответить  
 
 автор: sim5   (01.03.2009 в 18:25)   письмо автору
 
   для: Keyses   (01.03.2009 в 17:14)
 

Ну какой алгоритм? Это чистый HTML шаблон страницы, и если есть затруднения по его составлению, то вам в соответсвующий раздел с такими вопросами. А вот когда вы составите этот шаблон, тогда в нужном месте и выводите свои ошибки, вставляя РНР код.

  Ответить  
 
 автор: Slo_Nik   (02.03.2009 в 16:07)   письмо автору
 
   для: Keyses   (01.03.2009 в 17:14)
 

я когда то использовал такой скрипт для вывода сообщений,если какое то из полей формы запонено не правильно или вообще не заполнено

<?php
$error 
"";
$action $_POST['action'] ;
if (!empty(
$action)) 
{
  
/*проверка логина*/
  
if (!empty($login)) {
     if (!
preg_match("|^[a-zа-яA-ZА-Я]+$|i",$login)) 
     { 
$action "";
     
$error $erorr."<p class='p_info_f'>неверный формат логина</p>";
     }
     }
     
/*проверка длины логина*/
  
if (!empty($login)) {
    if (
strlen($login) < or strlen($login) > 11)
    { 
$action "";
    
$error $error."<p class='p_info_f'>Ваш логин менее 4-х или более 8-ми символов</p>";
    }
    }
 else
     { 
$action "";
     
$error $error."<p class='p_info_f'>не введён логин</p>";
     }
if (empty(
$action))
{
 if (!empty(
$error))
    
/* если есть ошибки, выводим сообщение об ошибках */
    
{
      echo 
"<p class='p_info_f'>Во время добавления записи произошли 
      следующие ошибки:</p>\n"
;
      echo 
$error
    }
?>
<!--....тут сама форма......-->
<?php
//...тут обрабатываешь данные введённые в форму....
?>

ну а для тега "р" прописываешь в файле CSS стили

.p_info_f {
text-align:center;
color:red;
font-size:12px;
}

это часть кода, остальное допиши так как тебе надо, по аналогии.
всё это не претендует на идеальносьть и т.д., привёл тебе как пример и простое решение...
на первое время хватит.
проверку введённых данных, форму и обработчик ошибок распологаешь в одном файле.
надеюсь тебе поможет это :)

  Ответить  
 
 автор: Keyses   (04.03.2009 в 20:28)   письмо автору
 
   для: Slo_Nik   (02.03.2009 в 16:07)
 

Нашёл довольно экзотическое решение с использованием глобальных переменных и обработчика ошибок. Так что всем спасибо :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования