2012-06-13 121 views
1

希望有人能帮助我。我正在建立一个网站,我对HTML和PHP很新。 JavaScript对我来说是全新的。通过HTML/PHP动态创建表格

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

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

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

+0

有没有原因,你不考虑使用一些CMS(WordPress的? Drupal的?的Joomla? )的网站?听起来像你的生活会容易得多。特别是如果你声明你没有所需的适当技能。这正是这些系统的用途。 –

+0

@Obmerk Kronen我无法将这些作为我正在进行学生安置的公司的内部工具。 – funky

+0

好 - 1)我没有看到使用WordPress作为任何内部系统出现问题(我甚至一次提出它作为酒店一个PMS集成系统)和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" 
       } 

所以你:

​​

输出将为myFieldanotherField,因为您会看到它被相互执行,因此您可以使用INSERT关键字将它们存储在分贝中。 Here's how to save using PDOhere's more info about PDO

+0

我真的不明白,说实话@PLB,特别是当涉及到存储在数据库中。管理员想要的是一个按钮,例如“添加字段” - 单击此按钮时会出现一个新的文本字段,他们可以命名文本字段,如名称,然后点击“保存表单”,这样可以将表单保存为管理员创建。也许它只是缺乏经验,但我不明白在保存数据库中的字段时它将如何工作。 – funky

+0

整个数据将被保存在阵列中,提交后“保存表单”你的PHP脚本将遍历数组和另一个保存一个项目(你创造的东西'INSERT INTO table_name的VALUES(值1,值2,...) ')然后执行。但这是旧式查询。你现在可以使用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到底怎么做@PLB –

+0

我刚刚设置此迅速,它是我在寻找反正这个想法,我只是向他解释。 @PLB使用你发给我的教程是什么意思? – funky