所以我有一个用于插入和编辑MySQL数据的表单。 我认为不是写两种形式,而是只写一种形式,它将用于两种目的。因此,当它用于插入新数据时,其字段(输入等)是空的。但是当它用于编辑现有数据时,我有Jquery用.val()来填充字段。
像这样:
function formSetup(form_name, array_fields)
{
$(document).ready(function(){
var selector;
for(var key in array_fields)
{
selector = "form[name=" + form_name + "] [name=" + key + "]";
//alert(selector);
$(selector).val(array_fields[key]);
}
});
}
然后:
var fieldsArray = new Array();
fieldsArray["field1"] = "data read from Myqsl php";
fieldsArray["field2"] = "data read from Myqsl php";
//etc
顺便说一下,PHP完成了告诉我的页面这个表单是否应该插入或编辑数据的工作,所以当有$ _GET [“action”] ==“edit”时,这个javascript函数只会被php调用。
我想知道的是,这是做这种事情的最佳方法吗? 这样做有标准的方法吗?
答案 0 :(得分:0)
你是对的,只有一个表格很好。 usualyy值填充在服务器端(在您的情况下由PHP),但这取决于项目架构 - 您可以使用jQuery。 PHP示例:
<input type="text" name="email" id="email" value="<?=$data['email']?:''?>" />
jQuery示例:
$.get("getData.php", function(data){
$("input#id").val(data['id']);
$("input#email").val(data['email']);
});
要确定表单是否用于插入或更新数据,请使用隐藏字段和数据库记录的主键(通常为id
):
<input type="hidden" name="id" id="id" value="<?=$data['id']?:''?>" />
此字段为空时 - 创建新记录。当它包含一些值时 - 更新包含主键的记录。
答案 1 :(得分:0)
我来。我为两个动作制作了相同的表单 - 插入和编辑。 如果您使用某种ajax技术并尝试在没有页面刷新的情况下填写表单,那么您就是正确的方法。但更好的方法是通过将数据回显到字段值来使用php添加值。 没有这样的标准。接受你。
答案 2 :(得分:0)
我会在服务器端执行此操作。
在原始PHP中,没有像Yii,Cake等支持框架的那个我会实现一个轻量级的MVC框架。
创建业务对象类。
class MyData
{
$field1;
$field2;
..
}
然后从您的数据源填充您的业务对象。
$data = new MyData();
$data->field1 = "Something";
$data->field2 = "Other stuff...";
或者它是否是新数据。
$data = new MyData();
创建表单模板。 form.tmp.php的内容
<form ...>
<input type="text" name="field1" value="<?= $data->field1; ?>" />
<input type="text" name="field2" value="<?= $data->field2; ?>" />
</form>
然后在模板周围使用灯光包装。
ob_start();
include('form.tmp.php');
$html = ob_get_contents();
ob_end_clean();
我做了这样的事情已经有一段时间了。虽然有一大堆PHP框架可以解决这个问题。一些轻量级的,一些重型企业。
我没有对此进行测试,但这应该让你开始。
答案 3 :(得分:0)
不是用javascript填充表单,更好的方法是处理这个服务器端。
在你的php模板中,你可以像这样填充输入
<input name="field1" type="text" value="<?php echo $fieldValues['field1']; ?>" />
<input name="field2" type="text" value="<?php echo $fieldValues['field2']; ?>" />
如果每个变量没有值,则该字段将为空,否则将插入从数据库中检索的数据。