2012-06-13 4 views
1

Надеюсь, кто-то может помочь мне здесь. Я в середине создания сайта, и я довольно новичок в HTML и PHP. JavaScript совершенно новый для меня.Динамическое создание форм с помощью HTML/PHP

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

Мне интересно, возможно ли это? Я действительно не вижу, как это будет работать, когда дело доходит до динамического создания полей в базе данных, а затем вставляя информацию в эти поля в базе данных. Я не знаю, как я могу создать запросы, чтобы хранить информацию.

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

+0

Есть ли причина, по которой вы не собираетесь использовать какую-либо CMS (Wordpress? Друпал? Joomla?) для веб-сайта? похоже, что ваша жизнь будет намного проще. особенно если вы заявляете, что у вас нет необходимых навыков. это именно то, для чего предназначены эти системы. –

+0

@Obmerk Kronen Я не могу использовать ни один из них как свой внутренний инструмент для компании, в которой я занимаюсь размещением студентов. – funky

+0

well - 1) Я не вижу проблемы с использованием Wordpress как внутренней системы для чего-либо (я даже однажды сделал его как интегрированную систему PMS для гостиниц) и 2) - я просто предложил это, потому что то, что вы попросили, кажется довольно сложным обойтись без надлежащих навыков. есть слишком много, чтобы учиться, и я сомневаюсь (надеюсь, но все же сомневаюсь), что кто-то здесь может предоставить вам готовое решение, которое будет работать для вас из коробки (даже не зная структуру вашего БД ..) –

ответ

1

Да, это возможно, конечно.

Не рекомендуется хранить HTML в базе данных. Вы можете сохранять динамические данные (например, тип ввода, класс и т. Д.), А затем выводить их на страницу с помощью простого скрипта php по запросу. Например:

echo '<input type="'.$type.'">'; //$type is data read from db. 

Насколько я знал, формировать свои комментарии, вы не знаете, сколько нот вы должны написать для каждого пользователя в БД, так что вам нужно, чтобы получить его как массив. Для этого вы можете назвать свои входы как: name[]. Например, вы можете иметь этот HTML внутри вашей формы:

<input name="fieldName[]" value="myField"> 
<input name="fieldName[]" value="anotherField"> 

Когда вы получите его с помощью $_POST вы получите массив:

[fieldName] => array(2) 
       { 
        [0] => "myField", 
        [1] => "anotherField" 
       } 

Так, если вы делаете:

foreach ($_POST['fieldName'] as $field) 
    echo $field; 

вывод будет myFieldanotherField, как вы видите, он выполняется один за другим, поэтому вы можете хранить их в db, используя ключевое слово INSERT. Here's how to save using PDO и here's more info about PDO

+0

Я действительно не понимаю это, если честно @PLB, особенно когда речь заходит о хранении в базе данных. То, что хочет администратор, - это кнопка, например «Добавить поле». Когда это щелкнуто, появится новое текстовое поле, оно может назвать текстовое поле, например «Имя», а затем нажать «Сохранить форму», и это сохранит форму admin создано. Возможно, это просто недостаток опыта, но я не понимаю, как все это будет работать, когда дело доходит до сохранения полей в базе данных. – funky

+0

Все данные будут храниться в массиве, после отправки «Сохранить форму» ваш php-скрипт будет перебирать этот массив и сохранять один элемент другим (вам нужно создать что-то «INSERT INTO table_name VALUES (value1, value2, ...) '), а затем выполнить. Но это старомодный запрос. вы можете использовать pdo сейчас, и я дал вам учебник. – Leri

+0

Спасибо, теперь я посмотрю на PDO. – funky

1

С PHP конца создать целый сайт в динамически нет никаких ограничений лучшего примера является CMS ниже коды я просто пытаюсь помочь ему, как его логике создать из PHP конце

admin_rights. PHP

<!--<script src="http://code.jquery.com/jquery-1.7.2.js"></script>--> 
<script> 
function dynamic_field(type,div_no){ 
    if(type == 'text'){ 
     document.getElementById('dynamic_field_'+div_no).innerHTML='TextField Name : <input type = "text" name="txt_field"> -> your text field has been generated just define name';  
    }else if (type == 'textarea'){ 
     document.getElementById('dynamic_field_'+div_no).innerHTML='TextArea Name : <input type = "text" name="text_area"> -> your text area has been generated just define name'; 
    }else if (type == 'table_name'){ 
     document.getElementById('dynamic_field_'+div_no).innerHTML='Table Name : <input type = "text" name="table_name"> -> your table has been generated just define name';  
    } 
} 

</script> 
Admin Rights <br /> 
<form action="action.php" method="post"> 
<input type="button" value="TextField" onclick="dynamic_field('text',1)" /> 
<input type="button" value="TextArea" onclick="dynamic_field('textarea',2)" /> 
<input type="button" value="Table Name" onclick="dynamic_field('table_name',3)" /> 

<br /> 

<?php 
for($i = 1; $i<=10; $i++){ 
?> 
    <div id="dynamic_field_<?php echo $i;?>"></div> 
<?php 
} 
?> 
<input type="submit" value="submit" /> 
</form> 

действие .php

<pre> 
<?php 

$con = mysql_connect("localhost","root",""); 
if (!$con){ 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("dynamic_form", $con); 

mysql_query(" 
CREATE TABLE 
`dynamic_form`.`".$_REQUEST['table_name']."` 
(`id` INT(11) NOT NULL AUTO_INCREMENT , `".$_REQUEST['txt_field']."` VARCHAR(225) , `".$_REQUEST['text_area']."` TEXT , PRIMARY KEY (`id`)) ;") 
?> 

Congrulation you have successfully generated <?php echo $_REQUEST['table_name'];?> table 
+1

Собираетесь ли вы создавать новую таблицу каждый раз? Это очень усложнит процесс, когда вы начнете считывать сгенерированные данные. Лучше держать все в одном столе. – Leri

+2

Я просто объясню ему, как его логика делает из php end @PLB –

+0

Я только что установил это, и это идея, которую я ищу в любом случае. @PLB Используя то, что вы прислали мне в качестве учебника, вы имеете в виду? – funky

Смежные вопросы