Как создать форму PHP на основе идентификатора? - PullRequest
0 голосов
/ 27 декабря 2010

Я хочу в основном создать форму PHP, которая хранит данные в базе данных - в зависимости от того, что вы вводите - это, конечно, просто.

Однако есть одна странность:

Эта php-форма должна быть основана на id - дана ссылка.

Скажем, что-то вроде mywebsite.com/form.php=id446 создаст совершенно другую форму, чем что-то вроде mywebsite.com/form.php=id447.

Разница в обеих формах составляет около 3-4 полей формы (появляются они или нет), остальные одинаковы

Теперь я мог бы сделать это грубо и просто сделать form446.php, form447.php и т. Д., Но я бы предпочел этого не делать.

Так есть ли какая-нибудь функция, которая позволяет мне это делать?

Кроме того, есть ли какой-нибудь шаблон для создания эстетичных и приятных глаз форм php - которые облегчают их заполнение?

спасибо, ребята, XOXO

Ответы [ 4 ]

1 голос
/ 27 декабря 2010

Ваш вопрос немного расплывчат для меня.Чем отличается, например, между 446 и 447?Это должно быть совершенно случайно?Или у вас есть набор полей / формы, доступных из первых рук?

0 голосов
/ 29 декабря 2010

Привет

Чтобы сделать эту работу, вы должны продумать все до мелочей.Вы должны начать в части базы данных.

Когда вы решите сами, вы не можете жестко закодировать каждый идентификатор в php.

Для этого вы должны использовать базу данных.

Некоторые предположения для обсуждения: изменяющиеся формы называются вопрос1, вопрос2, вопрос3

Сначала вы должны создать таблицу с одной строкой на идентификатор и, возможно, дополнительной информацией об этом идентификаторе.

Тогда самый простой способ сделать это, как я вижу это сейчас, - это довольно уродливый и плохой дизайн базы данных.Добавьте одно поле в эту таблицу идентификаторов для каждого вопроса, чтобы таблица выглядела примерно так:

id|question1|question2|question3
446|1|1|0
447|0|1|1

Затем в php вы просто создаете «SELECT * from id_table где id =» || id || »; "

Я не знаю синтаксис в php без поиска в сети, но вы просто проверяете каждый из меняющихся вопросов, должен ли id иметь этот вопрос, в псевдокоде:

    if(question1)
    {
      the question 1
    }

   if(question2)
    {
      the question 2
    }

HTH Никлас

0 голосов
/ 27 декабря 2010

Вы можете использовать один файл form.php, но использовать структуры if в коде для включения / исключения отдельных частей, например что-то вроде:

<form action="doForm" method="post">
    Input 1: <input type="text" id="input1"/> 
    Input 2: <input type="text" id="input1"/>

    <?php
        //This field only appears if you hit the url form.php?formid=123
        if($_GET['formid'] == 123):
        echo 'Input 3: <input type="text" id="input3"/>';
        endif;
    ?>
    <input type="submit" id="submit" value="submit" />
</form>

Будучи языком сценариев на стороне сервера, PHP не являетсяТо, что вам нужно для создания красивых, удобных в использовании форм - это заботится только о их функциональной обработке.Для красивых форм вы, вероятно, захотите использовать хороший HTML / CSS и javascript.Найдите в Google "пригодные для использования формы" и ознакомьтесь с такими предложениями, как этот список плагинов jQuery: http://www.queness.com/post/204/25-jquery-plugins-that-enhance-and-beautify-html-form-elements

--- Редактировать ---- Должен ли я предположить, что вам также необходимо около 10000 различных форм с ихсобственные уникальные элементы?Я надеюсь (для вашего же здравомыслия!) Это не так.Если вы вообще можете уменьшить это, то вы можете попробовать добавить formType в качестве параметра url, а не просто в качестве идентификатора. Таким образом, вы можете вместо этого разбирать их по группам.

Честно говоря, для такой работы я бы в любом случае использовал базу данных - я бы создал таблицу для хранения идентификационного номера каждой формы и другое поле для связанных с ней метаданных (возможно, в массиве илидаже сериализованный массив).Затем вы можете извлечь это из приложения и продолжить, используя formId в качестве единственного параметра url.Из ваших других комментариев я предполагаю, что таблица, содержащая сохраненные данные, не специфична для formId, так что это, вероятно, должно работать.

0 голосов
/ 27 декабря 2010

Код может работать неправильно, не проверял его, но это дает некоторое представление.

$formTypes = array();
$formTypes["type1"] = array("var1" => "string", "var2" => "textarea");
$formTypes["type2"] = array("var1" => "string");
$forms = array();
$forms["446"] = "type1";
$forms["447"] = "type2";

foreach ($formTypes[$id] as $varname => $vartype) {
   switch ($vartype){
      case "string":
         print "<input name='" . $varname . "'>";
         break;
      case "textarea":
         print "<textarea name='" . $varname . "'></textarea>";
         break;
   }
}
...