2014-07-20 30 views
0

我嘗試通過單擊我的頁面上的閱讀按鈕來更新我下午的messes狀態。所以我在這個網站上找到了一些解決方案,但它並不適合我。使用onClick更新數據庫

我使用AJAX的HTML按鈕之前:

 <script type="text/javascript"> 
function setRead(){ 
     $.ajax({ 
     type: "POST", 
     url: "update_pm_status.php", 
     data: { name: $("select[name='gelesen']").val()}, 
     success:function(msg) { 
     alert("Data Saved: " + msg); 
     } 
     }); 
    } 
</script> 

按鈕的樣式CSS和使用它自己的JavaScript來切換內容(開/關) ,所以我想通過打開更新狀態消息

<span class="toggleOpen" onclick="setRead()"><input type="hidden" method="post" name="gelesen" value="<?php echo $row['id']; ?>">lesen</span> 

所包括的位點是

<?php 
ini_set('include_path', 'inc'); 
    require("connect.php"); 

     { 
        $id = $_POST['id']; 


      $sql = "UPDATE 
        PMS 
        SET 
        gelesen = 'yes' 
        WHERE id = '".mysql_real_escape_string($id)."' AND gelesen = 'no'"; 
        mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); 

     } 

但我總是得到未定義變量'id'的通知。 我如何將這個變量提供給包含的網站?


,因爲我必須要耐心等待8小時,然後我可以回答我編輯自己的帖子:

感謝您的答案,但我仍然得到一個未定義指數的消息:所以變量不postet命名 我update_pm_staus.php IHAVE更新我的腳本是:

<script type="text/javascript"> 

功能setRead(){$ 阿賈克斯({ 類型: 「POST」, 網址: 「update_pm_status.php」, data:{id:$(this).children(「[name ='gelesen']」)。val()}, 成功:function(msg){ alert(「Data Saved: 「+ msg); } }); }

和update_pm_status.php這樣:

ini_set('include_path', 'inc'); 
    require("connect.php"); 

      $id = $_POST['name']; 

      $sql = "UPDATE 
        PMS 
        SET 
        gelesen = 'yes' 
        WHERE id = '".mysql_real_escape_string($id)."' AND gelesen = 'no'"; 
        mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); 

我也改變了我的HTML像這樣希望把它的工作。

<span class="toggleOpen" onclick="setRead()" input type="hidden" method="post" name="gelesen" value="<?php echo $row['id']; ?>">lesen</span> 

回答

1

它看起來好像你是正確發送id,但你要發送它作爲name。您希望更新JavaScript以傳遞您期望的key:value對,並在您的PHP中使用您期望的關鍵名稱。

 <script type="text/javascript"> 
     function setRead(){ 
      $.ajax({ 
      type: "POST", 
      url: "update_pm_status.php", 
      data: { id: $(this).children("[name='gelesen']").val()}, 
      success:function(msg) { 
       alert("Data Saved: " + msg); 
      } 
      }); 
     } 
    </script> 

你會發現,在AJAX請求data: {}塊,我已經更新了你的關鍵字:值對被命名爲id,而不是name。如果你做了什麼你的鑰匙被命名爲name時POST'ing,那麼你會想升級你的PHP來尋找一個:

$id = $_POST['name']; 
+1

對不起,我upvoted,但後來意識到沒有'select'?將它更新爲'data:{id:$(this).children(「[name ='gelesen']」).val()},'這可以從幾個'read'按鈕中調用 –

+0

謝謝@RobSchmuecker,I做出了改變! –

0

遺憾的響應晚。我得到了工作。我使用

<script type="text/javascript"> 
function setRead($id){ 
    $.ajax({ 
    type: "POST", 
    url: "update_pm_status.php", 
    data: { id: $id} 
    }); } 

像這樣的HTML

onclick="setRead(this.id); 

感謝所有幫助我:)