使用PHP标记表单以插入或更新函数

时间:2012-03-09 09:30:05

标签: php sql ajax forms

想知道实现目标的最佳途径是什么。

总结一下,我有一个由ajax加载的表单,我用它来更新并将新行插入数据库。要确定它是更新还是插入,我使用下面的代码(更新的表单使用mysql查询来填充表单字段)。

我的代码看似草率而不是最佳做法。关于什么是最好的方法,还有其他建议吗?

<? 
require_once("config.php");

$insert = false;
$update = false;
$targID = 0;

if(isset($_POST['targID'])){
$targID =  $_POST['targID'];
$targRow = mysql_fetch_array(mysql_query("select * from events where eventid=$targID"));
$update = true;
}else{
$insert = true;
}

?>
<script type="text/javascript">
    var insert = <? echo $insert; ?>+0;
    var update = <? echo $update; ?>+0;

    ......javascript button events, validation etc based on inssert/update
</script>

3 个答案:

答案 0 :(得分:0)

您已经在客户端知道它是更新还是插入,因为您发送或不发送POST数据项。所以我会在原始页面中编写JS来控制提交以及如何处理发回的数据。在没有看到页面其余部分的情况下编写代码很困难,但在伪代码级别,您可以执行以下操作:

  1. 使用onsubmit()来捕获原始提交操作
  2. 查看是否提供了targID
  3. 如果是,则向服务器发送更新请求。当行数据返回时,填写表单详细信息和显示表单(例如,您可以“显示”包含表单的隐藏DIV)
  4. 如果不是 - 你需要发送什么吗? - 只显示一个空表格(再次,显示以前隐藏的DIV)
  5. 希望这在某种程度上有用。

答案 1 :(得分:0)

你应该使用本机mySQL:

INSERT ... ON DUPLICATE KEY UPDATE

请参阅: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

答案 2 :(得分:0)

在客户端确定这一点有什么意义?它有什么不同吗?

对于服务器端,我使用从隐藏字段传递的$ targID。如果它大于零 - 更新,否则 - 插入。