На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
    > Вывод ошибок в форме
      Есть довольно большая HTML-форма. Там только html-код, без PHP.
      Но, как тогда сделать вывод ошибок при не правильном заполнении формы? На голову приходит механизм сессий...
      Но тогда эту страницу придётся переименовывать в *.php и добавлять туда "<?echo $error;?>"...
      Можно ли как-то по другому здесь обойтись? Саму ошибку нужно выводить вверху формы, при этом форма должна быть html и не использовать JavaScript.

      Похоже выход один - шаблоны (Smarty, Sigma). :( По другому никак?
        может быть это тебе подойдет?
        http://webmascon.com/topics/technologies/13a.asp
          Цитата DMx @
          Похоже выход один - шаблоны (Smarty, Sigma).
          А чем pure PHP не катит?
          Цитата DMx @
          добавлять туда "<?echo $error;?>"...
            а яваскриптом совсем слабо ? или мы кроме PHP ничего не признаём ? ;)
              Цитата purpe @
              а яваскриптом совсем слабо ?
              А смысл? Всё равно пришедшие данные необходимо проверять на стороне сервера + JS может быть отключен.
                Проверка заполнения формы до отправки как раз делается на JavaScript (это на 100% по его профилю), скрипт должен проверить данные уже после отправки. Обычно хватает только последнего, но и первое звено вовсе не исключено, т.к. не происходит перезагрузки страниц, что облегчает нагрузку и на клиент, и на сервер, и на канал, а иногда JS-проверка реализованная с динамическим изменением контента является одной из дизайн-функциональных задумок.
                  С выводом ошибок в форме я разобрался. 8-) Решил сделать всё на PHP. :rolleyes:

                  Теперь другой вопросик... Ранее такого не делал, поэтому сейчас даже не представляю как... :wacko:
                  Так, предположим есть форма:
                  ExpandedWrap disabled
                    <form action="bla.php" method=post>
                       <input type=text name=user value="<?echo $_SESSION['user'];?>" />
                       <input type=text name=message value="<?echo $_SESSION['message'];?>" />
                       <select name=city>
                          <option value="none">Не указан</option>
                          <option value="Moscow">Москва</option>
                          <option value="SPb">Питер</option>
                          <option value="Omsk">Омск</option>
                          <option value="Khimki">Химки</option>
                          ...
                       </select>
                       <input type=submit value="Отправить" />
                    </form>


                  Вот, предположим, юзер заполнил эту форму, но забыл написать своё имя. :) И нажал пимпу... Скрипт всё переработал и послал юзера назад, к форме. В форме поле message оказалось уже заполнено (с помощью сессий), а вот город в списке обнулился. :( Пришлось бедному юзеру заново выбирать в списке город... :whistle:

                  Что делать, если этот юзер злобный заказчик, который хочет, чтобы списки не обнулялись?..
                    Цитата DMx @
                    Что делать
                    Выставить selected у нужного option
                    Сообщение отредактировано: SiMM -
                      SiMM
                      Да ты мне Америку открыл. <_<

                      Я понимаю, что нужно в зависимости от выбранного пользователем города в списке либо выводить " selected", либо не выводить. Но как это сделать?
                      Есть такой вариант: писать в каждом <option>:
                      ExpandedWrap disabled
                        <?if ($_SESSION['city']=="Moscow") echo " selected";?>

                      Но такой вариант мне совершенно не нравится... :angry:
                      Сообщение отредактировано: DMx -
                        DMx, что такое массивы и циклы месье неизвестно?
                          Лана, добавил массивчик и цикл... Стало лучше выглядить и меньше места занимать. 8-) Thxz, SiMM. :rolleyes:

                          И, пожалуй, последний вопрос по формам... Хотя он не совсем в тему. :P
                          Есть огромное количество чекбоксов (~400) у каждого должно быть имя такого вида: var_<число>.
                          Как мне не отдаляться в медитации и не делать всё это вручную? Просто чекбоксы сами уже есть, а имён у них нет.
                          Как это автоматизировать:
                          ExpandedWrap disabled
                            <input type=checkbox name=var_1 value="...">
                            <input type=checkbox name=var_2 value="...">
                            <input type=checkbox name=var_3 value="...">
                            ...
                            <input type=checkbox name=var_400 value="...">
                            Цитата DMx @
                            Есть огромное количество чекбоксов (~400) у каждого должно быть имя такого вида: var_<число>.
                            А зачем? Зачем усложнять себе жизнь, когда куда проще работать с формой вида
                            ExpandedWrap disabled
                              <input type="checkbox" name="var[1]">
                              ...
                              <input type="checkbox" name="var[400]">
                            или
                            ExpandedWrap disabled
                              <input type="checkbox" name="var[]" value="value1">
                              ...
                              <input type="checkbox" name="var[]" value="value400">
                            или даже
                            ExpandedWrap disabled
                              <input type="checkbox" name="var[value1]">
                              ...
                              <input type="checkbox" name="var[value400]">
                            ?
                              SiMM
                              Точно, как-то я не подумал, о таком варианте. Отлично подходит. :yes: Спасибо.

                              Однако сейчас неожиданно всплыла ещё одна проблема... :( Дело в том, что все эти чекбоксы, в моей форме, находятся в <iframe></iframe>, чтобы сильно много места не занимали (много ведь их). Но в этом случае пропадает связь с формой... :blink: Все эти имена и значения чекбоксов просто не передадутся скрипту, ведь они во фрейме.
                              Можно как-то это обойти?
                                Форма и ее элементы должны обязательно быть в одном фрейме (иначе придется изобретать шестиколесный велосипед на JavaScript). Так что либо откажись от фрейма, либо помести форму во фрейм целиком.
                                  :wall:
                                  Чёрт, просто паршиво сморится тонна чекбоксов, расположенных друг над другом... Слишком много. Потому-то я и поместил их во фрейм.
                                  Яву использовать не хочу ни при каких обстоятельствах. <_<
                                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0330 ]   [ 14 queries used ]   [ Generated: 19.05.24, 15:42 GMT ]