通过HTML/PHP动态创建表单

通过HTML/PHP动态创建表单,php,mysql,html,Php,Mysql,Html,希望有人能帮我。我正在制作一个网站,我对HTML和PHP非常陌生。JavaScript对我来说是全新的 我必须允许管理员在我制作的网站上动态创建表单。管理员希望能够单击一个按钮,将他们带到一个新页面,在那里他们可以命名他们希望在表单中出现的字段,然后保存此表单,然后填写并保存到数据库等。他们希望能够在登录网站时做到这一点,因此,基本上就像拥有管理员权限,但不是通过代码来完成一样,它必须在网站上完成 我想知道这可能吗?在数据库中动态创建字段,然后将信息插入到数据库中的字段中时,我真的看不出它是如何

希望有人能帮我。我正在制作一个网站,我对HTML和PHP非常陌生。JavaScript对我来说是全新的

我必须允许管理员在我制作的网站上动态创建表单。管理员希望能够单击一个按钮,将他们带到一个新页面,在那里他们可以命名他们希望在表单中出现的字段,然后保存此表单,然后填写并保存到数据库等。他们希望能够在登录网站时做到这一点,因此,基本上就像拥有管理员权限,但不是通过代码来完成一样,它必须在网站上完成

我想知道这可能吗?在数据库中动态创建字段,然后将信息插入到数据库中的字段中时,我真的看不出它是如何工作的。我也不知道如何创建查询来存储信息


如果有人能帮助我,我将非常感谢,我真的不知道从哪里开始尝试和实现这个功能。

是的,当然是可能的

在数据库中存储HTML不是一个好主意。您可以保存动态数据(例如输入类型、类等),然后在请求时使用简单的php脚本在页面中输出它们。例如:

echo '<input type="'.$type.'">'; //$type is data read from db.
<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
当您使用
$\u POST
获得它时,您将获得数组:

[fieldName] => array(2)
               {
                    [0] => "myField",
                    [1] => "anotherField"
               }
因此,如果您这样做:

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

输出将是
myFieldanotherField
,因为您可以看到它一个接一个地执行,所以您可以使用关键字将它们存储在数据库中。和

从PHP端动态创建整个网站没有限制最好的例子是CMS下面的代码我只是想帮助他如何从PHP端创建其逻辑

admin_rights.php


函数动态字段(类型、分区号){
如果(类型=='text'){
document.getElementById('dynamic_field_'+div_no).innerHTML='TextField Name:->您的文本字段已经生成,只需定义名称';
}else if(type='textarea'){
document.getElementById('dynamic_field_'+div_no).innerHTML='TextArea Name:->您的文本区域已经生成,只需定义名称';
}else if(type=='table_name'){
document.getElementById('dynamic_field_'+div_no).innerHTML='Table Name:->您的表已经生成,只需定义名称';
}
}
管理员权限


你为什么不考虑在网站上使用一些CMS(Wordpress?drupal?joomla?)呢?听起来你的生活会轻松得多。特别是如果你声明你没有所需的适当技能。这正是这些系统的用途。@Obmerk Kronen我不能将它们中的任何一个用作我正在进行学生安置的公司的内部工具。嗯-1)我认为使用wordpress作为任何内部系统都没有问题(我甚至有一次将其作为酒店的PMS集成系统)(2)我之所以提出这个建议,是因为如果没有适当的技能,你所要求的似乎相当复杂。有太多的东西需要学习,我怀疑(希望,但仍然怀疑)这里的人是否能为您提供一个现成的解决方案,它可以为您提供开箱即用的解决方案(甚至不知道您的数据库结构…)哦,好吧。现在改用Wordpress可能太晚了,因为这是目前所需的最后一个功能之一。我知道这将是一件困难的事情,我有一个工程师和我一起研究我现在正在开发的东西,他说这将是一件非常复杂的事情。我想要一个现成的解决方案:)但即使是一个从哪里开始的想法也很好。你每次都要创建新表吗?当您开始读取生成的数据时,这将使事情变得非常复杂。最好是把所有的东西都放在一个表中。我只是向他解释一下它的逻辑是如何从php end@PLBI生成的,我们刚刚很快就设置好了,这正是我一直在寻找的想法@PLB使用您发送给我作为教程的内容,您的意思是?@davef关于我的答案有任何问题,请询问me@QueryMaster有没有可能给你发个短信,或者我在这里问一下?老实说,我不太明白@PLB,尤其是在数据库存储方面。管理员需要的是一个按钮,例如“添加字段”-当单击此按钮时,将出现一个新的文本字段,他们可以将文本字段命名为name,然后单击类似“保存表单”的按钮,这将保存管理员创建的表单。也许这只是缺乏经验,但我不明白在数据库中保存字段时,所有数据都将保存在数组中,在提交“保存表单”后,您的php脚本将迭代该数组并逐个保存一项(您必须创建一些
插入到表\u name值中的内容)(value1,value2,…)
)然后执行。但这是老式的查询。您现在可以使用pdo,我已经给了您一个教程。谢谢,我现在就来看看pdo
<!--<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>
<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