2012-03-09 62 views
-1

想知道实现某些东西的最佳方式是什么。总结一下,我有一个表单,我通过ajax加载,用于更新数据库并将新行插入到数据库中。要确定它是更新还是插入,我使用下面的代码(更新后的表单使用mysql查询来填充表单域)。使用PHP标记插入或更新函数的表单

我的代码看起来sl and而不是最佳实践。有没有其他建议,最好的办法是做什么?

<? 
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> 

回答

0

由于您发送或不发送POST数据项,您已经在客户端知道它是更新还是插入。所以我会在原始页面编写JS来控制提交以及如何处理发回的数据。这很难不看到页面的其余部分编写代码,但在伪代码级别,你可以做到以下几点:

  1. 使用的onsubmit()来捕捉原始提交行动
  2. 看看是否targID提供
  3. 如果是,则向服务器发送更新请求。当行数据返回时,填写表单详细信息并显示表单(例如,您可以“显示”包含表单的隐藏DIV)
  4. 如果没有 - 您是否需要发送任何内容? - 只是显示一个空表格(再次显示以前隐藏的DIV)

希望这在某些方面很有用。

+0

只是为了补充一点:不要在SQL查询中直接使用表单数据 - 这就是现在发生的SQL注入攻击。确保你先清理数据。 – 2012-03-09 09:57:06

0

是什么在确定客户端上的意义呢?它有什么区别?

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