根据数据库字段创建HTML表单

时间:2014-09-10 06:53:25

标签: php jquery html mysql fat-free-framework

我正在尝试创建一个程序,它将读取数据库表的结构并根据它生成一个简单的HTML注册表单。就像表格看起来像这样:

TBLUSERS
- Name (varchar)
- Age (int)
- Birthday (date)

然后它会输出一个这样的表格:

<form id="generated-form">
   Name: <input type="text" id="name"><br>
   Age: <input type="text" id="age"><br>
   Birthday: <input type="date" id="birthday"><br>
   <input type="submit">
</form>

但我不知道从哪里开始。我更喜欢使用任何包含Fatfree Framework的东西,因为大部分项目都是使用它完成的。除此之外,我只应该使用HTML,JQuery,PHP和/或Javascript。

有什么建议吗?提前谢谢!

4 个答案:

答案 0 :(得分:5)

当然,第一步是通过使用DESCRIBE来获取表格的列信息。

然后,您可以像任何普通查询一样查询它,在这种情况下使用mysqli

示例:

<?php

$db = new mysqli('localhost', 'username', 'password', 'database');
$query = $db->query('DESCRIBE `TBLUSERS`');
$fields = array();
while($row = $query->fetch_assoc()) {
    $fields[] = $row['Field'];
}

?>

<form id="generate-form" type="POST">
    <?php foreach($fields as $field): ?>
        <label>
            <?php echo "$field: "; ?>
            <input type="text" name="<?php echo $field; ?>" />
        </label><br/>
    <?php endforeach; ?>
    <input type="submit" name="submit" />
</form>

答案 1 :(得分:0)

使用类似的东西

 <?php

$result = mysql_query ("SHOW COLUMNS FROM sometable" );
while ( $row = mysql_fetch_assoc($result )) {
#$row contains a 3D-array of fields with their flags like
#Array
#(
#[Field] => name
#[Type] => varchar(7)
#[Null] =>
#[Key] => PRI
#[Default] =>
#[Extra] => auto_increment
#)

 #generate form like this
foreach($row as $column){
if($column[Type] == varchar(' /^[0-9]+$/i') $type= "text";
 elseif($other-types) $type = /*html-type-match*/;
 echo ucwords($column[Field])."<input type=\"$type\" />
}
?>

此代码未经过测试。希望这对你有所帮助。谢谢!

答案 2 :(得分:0)

使用包含F3及其模板引擎的Ghosts示例

<?php

$f3 = require 'lib/base.php';

$db = new DB\SQL('mysql:host=localhost;dbname=DBNAME', 'USERNAME', 'PASSWORD');
$res = $db->exec('DESCRIBE `TBLUSERS`');

foreach($res as $row) {
    $fields[] = $row['Field'];
}

$f3->set('fields', $fields);

echo Template::instance()->render('form.html');

?>

<!-- form.html -->
<form id="generate-form" type="POST">
    <repeat group="{{@fields}}" value="{{@field}}">
        <label>
            {{@field}}:
            <input type="text" name="{{@field}}" />
        </label><br/>
    </repeat>
    <input type="submit" name="submit" />
</form>

答案 3 :(得分:0)

在F3中更容易,也兼容多引擎:

$db = new DB\SQL('mysql:host=localhost;dbname=DBNAME', 'USERNAME', 'PASSWORD');
$schema = $db->schema('TBLUSERS');
$f3->set('fields', array_keys($schema));

还要检查架构的完整提供的返回值:http://fatfreeframework.com/sql#schema

也可以在一行中

$f3->set('fields', array_keys($db->schema('items')));