我正在尝试创建一个程序,它将读取数据库表的结构并根据它生成一个简单的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。
有什么建议吗?提前谢谢!
答案 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')));