Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: валидация формы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
psevdo
Отправлено: 15 Февраля, 2011 - 11:47:04
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




здравствуйте.. имеется форма:
PHP:
скопировать код в буфер обмена
  1. <form action="#" method="post" onSubmit="check_delete()" >
  2. </form>


пишу к ней валидатор:
CODE (javascript):
скопировать код в буфер обмена
  1. // проверка перед удалением проекта
  2. function check_delete()
  3. {
  4. checkbox_arr=new Array();
  5.                        
  6. var data='';
  7. var url='';
  8.  
  9. $.post(
  10.         url,
  11.         {data : data},
  12.         function(data) {
  13.                 var res=$(data).find('element').text();
  14.                 return check_delete_process(res);
  15.         },
  16.         'xml'
  17. );
  18. }
  19.                
  20. function check_delete_process(count)
  21. {
  22. if(count==0) return true;
  23. if(count>0) {
  24.         if(confirm('За данным проектом закреплены задачи.\nУдалить проект со всеми задачами?')) {
  25.                 return true;
  26.         } else {
  27.                 return false;
  28.         }
  29. }
  30. }


здесь анализируется переменная res. Если она равна нулю, то данные формы должны отправиться. Если она больше нуля, то выводится диалог confirm(). Если пользователь отвечает ДА, то данные формы должны отправиться, если НЕТ, то отмена отправки..
только вот как возвратить true или false из callback-функции обработчику события (onSubmit) check_delete? Не могу понять...

(Отредактировано автором: 15 Февраля, 2011 - 11:50:02)

 
 Top
Viper
Отправлено: 15 Февраля, 2011 - 13:22:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. ... function(response){...
  2.         someFunction(response);
  3. ...


вроде так если память не изменяет.

(Отредактировано автором: 15 Февраля, 2011 - 13:23:57)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
psevdo
Отправлено: 16 Февраля, 2011 - 08:37:34
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Viper пишет:
CODE (javascript):
скопировать код в буфер обмена
  1. ... function(response){...
  2.         someFunction(response);
  3. ...


вроде так если память не изменяет.


а можно по-подробнее7 я что то не понял ваших мыслей.
 
 Top
JustUserR
Отправлено: 16 Февраля, 2011 - 14:41:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




psevdo пишет:
Только вот как возвратить true или false из callback-функции обработчику события (onSubmit) check_delete? Не могу понять...
Для осуществления корректного функционирования блокирующего действия алгоритма выполняющего предшествующую проверку информационных полей формы - необходимо обеспечить возврат false-трактуемого значения в реальном первичном ассоциированном элементе JS-кода - по этой причине необходима замена конструкции onSubmit="check_delete()" на onSubmit="return check_delete()" - в качестве альтернативного варианта решения данной заджачи возможно использование управляющего JS-кода выполняющего элементное внедрения в зависимый исполняемый поток и установка false-трактуемого значения в нем


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
psevdo
Отправлено: 16 Февраля, 2011 - 19:45:38
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




JustUserR пишет:
psevdo пишет:
Только вот как возвратить true или false из callback-функции обработчику события (onSubmit) check_delete? Не могу понять...
Для осуществления корректного функционирования блокирующего действия алгоритма выполняющего предшествующую проверку информационных полей формы - необходимо обеспечить возврат false-трактуемого значения в реальном первичном ассоциированном элементе JS-кода - по этой причине необходима замена конструкции onSubmit="check_delete()" на onSubmit="return check_delete()" - в качестве альтернативного варианта решения данной заджачи возможно использование управляющего JS-кода выполняющего элементное внедрения в зависимый исполняемый поток и установка false-трактуемого значения в нем


я очень благодарен за помощь, это правда.. я никогда не понимал, зачем так умничать??? из этого предложения понять что либо практически невозможно...на самом деле у меня написано onSubmit="return check_delete()... просто, сюда я писал сам, не копировал текст.. поэтому забыл указать return.
 
 Top
JustUserR
Отправлено: 18 Февраля, 2011 - 11:50:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




psevdo пишет:
Очень благодарен за помощь, это правда.. я никогда не понимал, зачем так умничать??? из этого предложения понять что либо практически невозможно...на самом деле у меня написано onSubmit="return check_delete()... просто, сюда я писал сам, не копировал текст.. поэтому забыл указать return
Пожалуйста! Использование операции return в предполагаемой конструкции формирования элемента кода для обрабатываемого события является обязательным - по причине осуществления выполнения ассоцированных потоков кода в различных уровня элементной вложенности
Однако в действительности решения предполагаемой задачи является в существенной мере отличным от указанного ранее по причине исполнения специфицированной функции не только в отдельном элементном но и временном слоте - таким образом оптимальным варинатом решентя без включения управляющих предшествующих JS-конструкций является локальная блокировка отправки формы - и осуществление программного исполнения submit-события после окончания полной проверки


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
psevdo
Отправлено: 19 Февраля, 2011 - 09:31:56
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




JustUserR пишет:
Однако в действительности решения предполагаемой задачи является в существенной мере отличным от указанного ранее по причине исполнения специфицированной функции не только в отдельном элементном но и временном слоте - таким образом оптимальным варинатом решентя без включения управляющих предшествующих JS-конструкций является локальная блокировка отправки формы - и осуществление программного исполнения submit-события после окончания полной проверки


Какую функцию вы считаете специфированной7
(Добавление)
JustUserR, я сейчас попытался понять ваши слова и пришел к следующему (если я не правильно понял прошу поправить):
    1) в форме нудно писать так onSubmit="return check_delete() (это как я сказал было изначально)

    2) в JS-коде (обработчик события) после проверок нужно вызвать событие submit


Если это так, то код я переписал так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function check_delete()
  3. {
  4.      checkbox_arr=new Array();
  5.                        
  6.      var project_count=$('#project_count').attr('value');       // кол-во проектов
  7.      for(var i=0; i<project_count; i++) {
  8.           if($('#project_'+i).attr('checked')==true) {
  9.                checkbox_arr[checkbox_arr.length]=$('#project_'+i).attr('value');
  10.           }
  11.      }
  12.      var project_id=checkbox_arr.join(',');
  13.  
  14.      $.post(
  15.           url,
  16.           {data : data},
  17.           function(data) {
  18.                var res=$(data).find('element').text();
  19.                if(check_delete_process(res))
  20.                     $('form').submit();
  21.           },
  22.           'xml'
  23.      );
  24.                
  25.      return false;
  26. }
  27.                
  28. function check_delete_process(count)
  29. {
  30.      if(count==0) return true;
  31.      if(count>0) {
  32.           if(confirm('За данным проектом закреплены задачи.\nУдалить проект со всеми задачами?')) {
  33.                return true;
  34.           } else {
  35.                return false;
  36.           }
  37.      }
  38. }


теперь, когда пользователь соглашается с предложением удалить проект и нажимает "Да", ему снова предлагается сделать этот выбор.. Т. е. процесс зацикливается. Я так понимаю это происходит из-за того, что вызывается событие Submit и снова срабатывает обработчик этого события. Как от этого избавиться7

(Отредактировано автором: 19 Февраля, 2011 - 09:45:43)

 
 Top
JustUserR
Отправлено: 19 Февраля, 2011 - 22:09:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




psevdo пишет:
Т. е. процесс зацикливается. Я так понимаю это происходит из-за того, что вызывается событие Submit и снова срабатывает обработчик этого события. Как от этого избавиться7
Для осуществления решения поставленной задачи возможно использование дополнительного внешнего элемента флага обеспечивающего определения текущего состояния ввода и проверки информационных полей в целевой форме - в частности определение функции check_delete содержит контейнерную условую конструкцию в зависимости от селекции которой производится возврат true или false значения соответственно - при первичном запросе отправки формы осуществляется вызов реальной валидационной функции с возвратом локального false-значения - в то время как после окончания осуществления проверки производится мануальная подача запроса с предшествующей модификацей глобального флага
CODE (JS):
скопировать код в буфер обмена
  1. window.send_flg=false
  2. window.check_delete=function()
  3. {if(!send_flg) {/*Осуществление произвольных валидационных действий - включающих установку параметра send_flg=true и вызов метода form.submit() в случае успеха */
  4. return false
  5. }
  6. else {send_flg=false
  7. return true
  8. }
  9. }


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
psevdo
Отправлено: 26 Февраля, 2011 - 13:40:33
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




JustUserR спасибо большое, разобрался. но ваши посты все такие сложны для понимания)

(Отредактировано автором: 26 Февраля, 2011 - 13:40:47)

 
 Top
JustUserR
Отправлено: 27 Февраля, 2011 - 16:27:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




psevdo пишет:
JustUserR спасибо большое, разобрался. но ваши посты все такие сложны для понимания)
Пожалуйста! В качетстве возможного упрощенного решения для предполагаемой задачи, заключающейся в осуществлении верификации целевых информационных полей в пользовательской форме, допустимо включение обычного элемента управлния кнопки без ассоциированного действия по проведению подачи запроса, что обеспечивает возможность отсутствия включения внешнего управляющего флага и разделение функционального объекта в потоке исполнения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
gandzhubashka
Отправлено: 23 Июля, 2011 - 23:55:45
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Здравствуйте.
Есть проблема. Как мне сделать валидацию для формы. Необходимо ограничене на ввод числа символов.
Вот собственно форма и обработчик

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.         <script type="text/javascript" src="../../texteditor/ckeditor.js"></script>
  4.         <script src="../../texteditor/_samples/sample.js" type="text/javascript"></script>
  5.         <link href="../../texteditor/_samples/sample.css" rel="stylesheet" type="text/css" />
  6. <?PHP
  7.  
  8.   error_reporting(E_ALL & ~E_NOTICE);
  9.  
  10.   // Устанавливаем соединение с базой данных
  11.   require_once("../../config/config.php");
  12.   // Подключаем блок авторизации
  13.   require_once("../utils/security_mod.php");
  14.   // Подключаем классы формы
  15.   require_once("../../config/class.config.dmn.php");
  16.  
  17.   // Предотвращаем SQL-инъекцию
  18.   $_GET['id_news'] = intval($_GET['id_news']);
  19.  
  20.   try
  21.   {
  22.     // Извлекаем из таблицы news запись, соответствующую
  23.     // исправляемому новостному сообщению
  24.     $query = "SELECT * FROM $tbl_news
  25.              WHERE id_news=$_GET[id_news]";
  26.     $new = mysql_query($query);
  27.     if(!mysql_query($query))
  28.     {
  29.       throw new ExceptionMySQL(mysql_error(),
  30.                                $query,
  31.                               "Ошибка при обращении
  32.                               к таблице новостей");
  33.     }
  34.     $news = mysql_fetch_array($new);
  35.     if(empty($_POST))
  36.     {
  37.       // Берем информацию для оставшихся переменных из базы данных
  38.       $_REQUEST = $news;
  39.           /*$_REQUEST['autor'] = $_REQUEST['autor'];
  40.           $_REQUEST['kratkoe'] = $_REQUEST['kratkoe'];
  41.           $_REQUEST['statia'] = $_REQUEST['statia'];
  42.           $_REQUEST['razdel'] = $_REQUEST['razdel'];
  43.       $_REQUEST['date']['month']  = substr($news['date'],5,2);
  44.       $_REQUEST['date']['day']    = substr($news['date'],8,2);
  45.       $_REQUEST['date']['year']   = substr($news['date'],0,4);
  46.       $_REQUEST['date']['hour']   = substr($news['date'],11,2);
  47.       $_REQUEST['date']['minute'] = substr($news['date'],14,2);*/
  48.     }
  49.        
  50.        
  51.     $name = new field_text("name",
  52.                            "Название",
  53.                            true,
  54.                            $_REQUEST['name']);
  55.     $autor = new field_text("autor",
  56.                                                         "Автор",
  57.                                                         true,
  58.                                                         $_REQUEST['autor']);
  59.     $kratkoe = new field_text("kratkoe",
  60.                                                         "Содержание",
  61.                                                         true,
  62.                                                         $_REQUEST['kratkoe']);
  63.     $statia = new field_textarea("statia",
  64.                                                           "Статья",
  65.                                                           true,
  66.                                                           $_REQUEST['statia']);
  67.         $dobavleno = new field_datetime("dobavleno",
  68.                                                                         "Дата",
  69.                                                                         $_REQUEST['dobavleno']);
  70.     $razdel = new field_select("razdel",
  71.                                                                 "Выберите раздел",
  72.                                                                 array("politics" => "Политика",
  73.                                                             "sport" => "Спорт",
  74.                                                             "medicine" => "Медицина"),
  75.                                                             $_REQUEST['razdel']);
  76.     $form = new form(array("name" => $name,
  77.                                "autor" => $autor,
  78.                            "kratkoe" => $kratkoe,
  79.                            "statia" => $statia,
  80.                                                    "dobavleno" => $dobavleno,
  81.                                                    "razdel" => $razdel),
  82.                                          "Редактировать",
  83.                      "field");
  84.  
  85.     // Обработчик HTML-формы
  86.     if(!empty($_POST))
  87.     {
  88.       // Проверяем корректность заполнения HTML-формы
  89.       // и обрабатываем текстовые поля
  90.       $error = $form->check();
  91.       if(empty($error))
  92.       {
  93.         // Формируем SQL-запрос на добавление новости
  94.         $query = "UPDATE $tbl_news
  95.                  SET name = '{$form->fields[name]->value}',
  96.                                           autor = '{$form->fields[autor]->value}',
  97.                                           kratkoe = '{$form->fields[kratkoe]->value}',
  98.                                           statia = '{$form->fields[statia]->value}',
  99.                                           dobavleno = '{$form->fields[dobavleno]->get_mysql_format()}',
  100.                                           razdel = '{$form->fields[razdel]->value}'
  101.                                   WHERE id_news = $_GET[id_news]";
  102.             if(!mysql_query($query))
  103.         {
  104.           throw new ExceptionMySQL(mysql_error(),
  105.                                    $query,
  106.                                   "Ошибка при редактировании
  107.                                   новостного сообщения");
  108.         }
  109.         // Осуществляем переадресацию на главную страницу
  110.         // администрирования
  111.         ?>
  112.                 <script>
  113.                  document.location.href="index.php";
  114.                 </script>
  115. <?PHP
  116.       }
  117.     }
  118.  
  119.     // Данные переменные определяют название страницы и подсказку.
  120.     $title = "Редактирование новости";
  121.     $pageinfo='<p class="help"></p>';
  122.     // Включаем заголовок страницы
  123.     require_once("../utils/top.php");
  124.  
  125. ?>
  126. <div align=left>
  127. <FORM>
  128. <INPUT class="button" TYPE="button" VALUE="На предыдущую страницу"
  129. onClick="history.back()">
  130. </FORM>
  131. </div>
  132. <?PHP
  133.     // Выводим сообщения об ошибках, если они имеются
  134.     if(!empty($error))
  135.     {
  136.       foreach($error as $err)
  137.       {
  138.         echo "<span style=\"color:red\">$err</span><br>";
  139.       }
  140.     }
  141. ?>
  142. <div class="table_user">
  143. <?PHP
  144.     // Выводим HTML-форму
  145.     $form->print_form();
  146. ?>
  147. </div>
  148. <?PHP
  149.   }
  150.   catch(ExceptionObject $exc)
  151.   {
  152.     require("../utils/exception_object.php");
  153.   }
  154.   catch(ExceptionMySQL $exc)
  155.   {
  156.     require("../utils/exception_mysql.php");
  157.   }
  158.   catch(ExceptionMember $exc)
  159.   {
  160.     require("../utils/exception_member.php");
  161.   }
  162.  
  163.   // Включаем завершение страницы
  164.   require_once("../utils/bottom.php");
  165. ?>
  166.  

(Отредактировано автором: 23 Июля, 2011 - 23:59:30)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB