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

Форум PHP

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

 

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

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

тема: отображение формы через функцию
 
 автор: Bvz   (26.04.2009 в 09:44)   письмо автору
 
 

хочу сделать чтоб форма запускалась через функцию, например основной скрипт


<?php

// подключение файла с функциями
include 'competitor.function.php';

// проверяем была ли заполнена форма или нет
if ($_SERVER['REQUEST_METHOD'] == 'GET')
{
    
small_questionnaire(array());
}
else
{
    
presurvey_small_questionnaire(array());
}
// далее скрипт записи данных в БД
.....
?>


далее файл с функциями


<?php
// функция отображения формы
function small_questionnaire()
{

<
div align="center">
<
form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" name="small_questionnaire" method="post">
<
table cellpadding="0" cellspacing="5" border="0" width="50%">
        <
tr>
            <
td>Имя: </td>
            <
td><input type="text" name="name" value="<?php echo $_POST['name']; ?>" size="25" /></td>
        </
tr>
        <
tr>
            <
td colspan="2"><input type="submit" value="Сохранить" name="save" /></td>
        </
tr>
</
table>
</
form>
</
div>
<?
php
return array();
}

// отображение результата 
function presurvey_small_questionnaire()
{
?>
<div align="center">

<table cellpadding="0" cellspacing="5" border="0" width="50%">
        <tr>
            <td>Имя: </td>
            <td><?php echo $_POST['name']; ?></td>
        </tr>
        <tr>
            <td><input type="submit" value="Сохранить" name="edit" /></td>
            <td><input type="submit" value="Редактировать" name="save" /></td>
        </tr>
</table>

</div>
<?php
return array();
}
?>


Как сделать, чтоб при нажатии кнопки редактировать вызывалась первая функция, но при этом сохранялись ранее заполненые данные и форма отображалась с ранее заполненными полями.
А если сохранить, то выполнялся скрипт записи введеных данных в БД, умен\я при нажатии кнопок данные теряются, с функциями никогда не работал ))

  Ответить  
 
 автор: sim5   (26.04.2009 в 10:33)   письмо автору
 
   для: Bvz   (26.04.2009 в 09:44)
 

Встречный вопрос - к чему все эти премудрости? У вас эта форма универсальная на все случаи жизни?

  Ответить  
 
 автор: Bvz   (26.04.2009 в 11:29)   письмо автору
 
   для: sim5   (26.04.2009 в 10:33)
 

собственно нет, но будет встречаться в нескольких местах, да и с работой функций хотелось бы разобраться ))

  Ответить  
 
 автор: sim5   (26.04.2009 в 11:58)   письмо автору
 
   для: Bvz   (26.04.2009 в 11:29)
 

Вот что такое "сохранялась функция", хоть убейте, я не знаю, такого понятия даже представить себе не возможно. А что бы все нормально работало, то нужно проверять не метод передачи (как вы это делаете), а отправку формы, а форму выдавать по запросу и при ошибках ввода, и тогда все будет работать.
Вообще же, достаточно было бы просто подключать необходмые скрипты.

  Ответить  
 
 автор: Bvz   (26.04.2009 в 12:10)   письмо автору
 
   для: sim5   (26.04.2009 в 11:58)
 

> Вот что такое "сохранялась функция", хоть убейте, я не знаю
я тоже не знаю это вы что-то придумали, я такого не писал, если внимательно прочитать

>А что бы все нормально работало, то нужно проверять не метод передачи (как вы это делаете), а отправку формы
т.е. вместо

if ($_SERVER['REQUEST_METHOD'] == 'GET')
{
    small_questionnaire(array());


писать

if( !empty($_POST) )
{
    small_questionnaire(array());


так?

>форму выдавать по запросу и при ошибках ввода
понятно

>Вообще же, достаточно было бы просто подключать необходмые скрипты.
а вот это идея, спасибо

  Ответить  
 
 автор: sim5   (26.04.2009 в 12:24)   письмо автору
 
   для: Bvz   (26.04.2009 в 12:10)
 

Нет не так! Кто и когда у вас вызывает форму? Автор, который будет редактировать нечто свое. Как это он может сделать? По ссылке с каким-то параметром, вот определяйте это параметр и производите подключение необходимого - вывод формы. А уж проверку полей формы проверяйте по ее приходу, и если есть ошибки ввода, то опять форму на вывод, ну а если нет, то.... Тут столько мого уже писалось об этом, что ну просто ей богу, лень повторятся.

  Ответить  
 
 автор: Bvz   (26.04.2009 в 12:36)   письмо автору
 
   для: sim5   (26.04.2009 в 12:24)
 

ок, есть куда думать, не поверите сегодня перечитал все темы здесь выданные по поиску $_POST )) из 40 выданных только максимум 5-6 толковыми оказались, поэтому предпочитаю "живую беседу"
выводы:
1. ухожу (пока) от использования функций
2. все реализую в одном скрипте

отвечая на ваш вопрос
> Кто и когда у вас вызывает форму? Автор, который будет редактировать нечто свое. Как это он может сделать? По ссылке с каким-то параметром, вот определяйте это параметр и производите подключение необходимого - вывод формы.
уже то, что человек перешел на эту страницу, говорит о том, что он намерен заполнить форму, остается проверить не являеться ли это повторным заполнением ))

и еще по поводу
> А уж проверку полей формы проверяйте по ее приходу, и если есть ошибки ввода, то опять форму на вывод, ну а если нет, то....
есть масса валидаторов на js, которые проверят корректность вводимых данных без перезагрузки, их то можно использовать ))

  Ответить  
 
 автор: sim5   (26.04.2009 в 12:40)   письмо автору
 
   для: Bvz   (26.04.2009 в 12:36)
 

>уже то, что человек перешел на эту страницу, говорит о том, что....

Само собой разумеется, если это один скрипт, но вы же говорили о многих местах, а это....

Мне JS ничего не стоит подменить, и тогда?

  Ответить  
 
 автор: Bvz   (26.04.2009 в 12:56)   письмо автору
 
   для: sim5   (26.04.2009 в 12:40)
 

>>уже то, что человек перешел на эту страницу, говорит о том, что....

>Само собой разумеется, если это один скрипт, но вы же говорили о многих местах, а это....

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

>
Мне JS ничего не стоит подменить, и тогда?
и каким образом? там если пока не введется корректный текст батон не станет активным?
вот например взгляните http://jquery.bassistance.de/validate/demo/

  Ответить  
 
 автор: sim5   (26.04.2009 в 13:03)   письмо автору
 
   для: Bvz   (26.04.2009 в 12:56)
 

Одна и та же фома никак не может выполнять и то, и другое. Вы уж это тогда должны определять своими скриптами - вернее, соответствующим запросом соответствующих скриптов. В противном случае форма должна передавать два различных параметра, по которым и определять чего она хочет.

Как подменить - молча. JS на клиенте, не забывайте об этом. Другое дело, если "без перезагрузки", вы имеете ввиду Ajax, и данные проверяются на сервере. Остальное - не надо рассказывать, что это большая трудность....

  Ответить  
 
 автор: Bvz   (26.04.2009 в 13:12)   письмо автору
 
   для: sim5   (26.04.2009 в 13:03)
 

да, я имел ввиду ajax, его то можно использовать?

  Ответить  
 
 автор: UnFast   (26.04.2009 в 13:17)   письмо автору
 
   для: Bvz   (26.04.2009 в 13:12)
 

Как AJAX и нужно использовать в твоем случае.

  Ответить  
 
 автор: sim5   (26.04.2009 в 13:27)   письмо автору
 
   для: Bvz   (26.04.2009 в 13:12)
 

А пишите "есть масса валидаторов на js, которые проверят корректность вводимых данных...." Такая проверка может рассматриваться как "первый эшелон", чисто для удобства клиента, не более того. А вот при Ajax, можно проверять данные на сервере, а вы возвращаете в форму то, что приходит, и проверки вообще не наблюдается никакой!

  Ответить  
 
 автор: Bvz   (26.04.2009 в 16:19)   письмо автору
 
   для: sim5   (26.04.2009 в 13:27)
 

но я проверкупока убрал, чтоб код не нагромождать, т.к. стоит пока другая задача ))

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

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