2012-10-12 172 views
0

我有这个问题,我有多个字段,通过AJAX调用更新数据库。 AJAX调用如下所示:通过AJAX/jQuery保存到数据库,发送两个变量

$(".fresheditable").fresheditor("save", function (id, parsedHtml) { 
    $.ajax({ 
     url: 'save.php', 
     type: 'POST', 
     data: { 
      id: id, 
      parsedHtml: parsedHtml 
     } 
    }); 
}); 

ID值根据正在编辑的元素而变化。问题是何时将更新发送到save.php文档。我如何仅使用特定ID运行更新?

见我save.php:

if($_POST['id']='link') 
{ 
    $link = $_POST['parsedHtml']; //get posted data 

    // query 
    $sql = "UPDATE buttons SET linkname=? WHERE id=?"; 
    $q = $conn->prepare($sql); 

    if ($q->execute(array($link,$_SESSION['button']))) 
    { 
     echo 1; 
    } 
} 

//The next if-statement could look like this: 

if($_POST['id']='contactperson') 
{ 
    $contactperson = $_POST['parsedHtml']; //get posted data 

    // query 
    $sql = "UPDATE buttons SET contactperson=? WHERE id=?"; 
    $q = $conn->prepare($sql); 

    if ($q->execute(array($contactperson,$_SESSION['button']))) 
    { 
     echo 1; 
    } 
} 

如果有多个ID发送到save.phplinkcontactperson两个if语句是真实和更新设置相同的值,因为parsedHtml变量。

有什么我可以做的save.php可以防止这种情况吗?不知何故,我需要将正确的parsedHtml与相应的id相关联。

+1

如何的'id'可以在同一时间'contactperson'和'link'价值? –

+0

我唯一的想法是脚本发送的值与正在编辑的元素数量一样多。 –

+0

无关紧要,每次编辑元素时都会发送新的请求。 –

回答

2

在PHP(以及在Javascript)进行比较,运营商是==,而不是=

if($_POST["id"]=="link") 
+0

这解决了问题,我认为午餐的时间:) –

-1

使用else-if结构。您可以使用

if($_POST['id']='link') { 

} 
else if($_POST['id']='contactperson') { 

} 
+0

问题在于这两种情况都是如此,这是事实。该脚本为每个可编辑的项目发送一次ID –

0

一件事是数据属性我的意思是

<span item-data="some_id">data</span>现在你可以在jQuery的选择,从你的HTML特定项目数据进行更新。

1

是不是因为你用你的IF测试单等号,其分配和数值返回true存在?不是双等于比较?

E.g.

if($_POST['id']=='link') 

if($_POST['id']='link')