2011-12-16 191 views
2

所以我有一个表单用于从MySQL插入和编辑数据。 我认为不是写两种形式,我只会写一种,这将用于两个目的。所以当插入新数据时,它的字段(输入等)是空的。但是,当编辑现有数据时,我有Jquery用.val()填充字段。用jquery填充表单域

像这样:

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确实告诉我的页面这种形式是否应该插入或编辑数据的工作,所以这个JavaScript函数只有在$ _GET [“action”] ==“edit”时才被php调用。

我想知道的是,这是做这种事情的最好方法吗? 有没有一个标准的方法来做到这一点?

回答

0

你是对的,很高兴只有一种形式。 通常在服务器端填写的值(在您的案例中由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']?:''?>" /> 

当此字段为空时 - 创建新记录。当它包含某个值时 - 更新一个包含主键的记录。

+0

在每个'value'上使用php代码会使我的代码看起来非常难看。那么呢?我将不得不检查每个选择与PHP?我认为最好使用jquery – user1091856 2011-12-16 22:55:09

0

我来。我正在为两个操作制作相同的表单 - 插入和编辑。 如果您使用某种Ajax技术并尝试填充表单而不刷新页面,则您的方向正确。但更好的办法是通过将数据回传到字段值来增加php的值。 没有这样的标准。接受你。

0

我会做这个serverside。

在原始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(); 

自从我做了这样的事情已经有一段时间了。有一些TON的PHP框架可以帮你照顾这个。一些轻量级的,一些重型企业。

我没有测试这个,但这应该让你开始。

0

而不是使用JavaScript填充表单,更好的方法是处理这个服务器端。

在你的PHP模板,你可以做填充输入这样

<input name="field1" type="text" value="<?php echo $fieldValues['field1']; ?>" /> 
<input name="field2" type="text" value="<?php echo $fieldValues['field2']; ?>" /> 

如果每个变量的字段为空,否则你从数据库中检索到的数据将被插入任何价值。