1

希望有人可以在这里帮助我。我正在制作一个网站,而且我对 HTML 和 PHP 还是很陌生。JavaScript 对我来说是全新的。

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

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

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

4

2 回答 2

1

是的,当然可以。

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

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

据我所知,形成您的评论,您不知道您必须在 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 中。这是使用 PDO 保存的方法这里是有关 PDO 的更多信息INSERT

于 2012-06-13T11:27:10.787 回答
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
于 2012-06-13T11:31:10.830 回答