2013-05-10 102 views
2

當用戶點擊鏈接時,有沒有辦法更新MySQL數據庫中的數據? 我正在創建一個投票應用程序。它允許用戶存儲問題以便立即使用或稍後使用。當用戶查看他創建的問題時,他/她可以單擊一個鏈接,該鏈接將更新數據庫中的一個列,該列將根據問題ID存儲1或0。 (1表示該問題可用於投票,0表示相反)。我編寫了代碼來從數據庫中檢索問題。現在我正試圖編寫通過單擊鏈接來更新問題數據的代碼。通過點擊使用PHP和HTML的鏈接將數據更新到mysql數據庫

我無法確定的是如何獲得用戶點擊鏈接的問題ID,以便我可以更新數據庫。 對不起,如果我的解釋不清楚。英語是我的第二語言,我正在努力更好地進行溝通。

+0

您應該存儲ID在一個隱藏的輸入值,如果你不想使用AJAX。 – 2013-05-10 22:24:05

+0

@ Siamak.A.M,我如何獲得問題ID來存儲它?這就是我想要的。 – Wabbit 2013-05-10 22:37:02

+0

什麼是QUESTIONS表格結構? – 2013-05-10 22:38:56

回答

1

你可以做這樣的事情:

<?php 
     $username = $_COOKIE['username']; 
     $sql = "SELECT * FROM QUESTIONS WHERE username ='$username'"; 
     $result = mysql_query($sql) or die(mysql_error());  
     if (mysql_num_rows($result) > 0) { 

     //---------- new 
     if(isset($_GET['voteID'])) 
     { 
      $viteID = (int) $_GET['voteID']; 
      // your update query 
     } 

     //-------- 
      ?> 
      <table width="50%" cellpadding="5" cellspacing="0" border="1"> 
       <tr><td><b>Question ID</b></td><td><b>Question</b></td><td><b>Active/Inactive</b></td></tr> 
       <?php 
       $html = ''; 
       while ($row = mysql_fetch_row($result)) { 
        $html .= '<tr>'; 
        $html .= '<td>' . $row[0] . '</td>'; 
        $html .= '<td>' . $row[1] . '</td>'; 
        $activity = $row[3]; 

        // ---- new 
        $html .= '<a href="'.$_SERVER['PHP_SELF'].'?id='.$row[0].'">Vote Up</a>';    
        //------- 

        //if active = 1, do the following 
        if ($activity == 1) { 
         $html .= '<td>' . '<a href=markAsInActive.php>Active</a>' . '</td>'; 
        } else { 
         $html .= '<td>' . 'Inactive' . '</td>'; 
        } 
        $html .='</tr>'; 

       } 
       echo $html; 
       ?> 
      </table> 
      <?php 
     } 
     ?> 
+0

它通過單擊按鈕而不是鏈接來更新數據庫。不管怎樣,謝謝。我現在要用它。 – Wabbit 2013-05-10 23:52:12

+0

編輯爲鏈接和答案如果答案是有幫助的接受它:) – 2013-05-11 00:03:10

+0

你是天才!謝謝。 – Wabbit 2013-05-11 01:05:52

0

您需要添加一個html表單元素。

<from action="yourURL.php" method="post"> 
    <input type="text" name="userInput" /> 
    <input type="submit" value="Submit" /> 
</form> 

現在你的信息來給你如下:

$info = $_POST['userInput']; 

所以後來寫一條UPDATE語句把用戶信息到記錄。

+0

嗨,我考慮過這樣做。但是,我不希望我的用戶每次希望將問題標記爲活動以記住問題ID。我希望它由系統自動完成。 – Wabbit 2013-05-10 22:35:21

+0

只需使用javaScript在輸入更改時爲您發佈表單。您可以發佈到相同的fprm名稱或創建一個單獨的handler.php,它在後臺使用ajax調用來處理它。 – 2013-05-11 16:11:12

1
echo "<td><a href='markAsInActive.php?id=$row[0]'>Active</a></td>"; 

我只是猜測,$row[0]是ID - 您可以更改到相應的列數據庫(它通常最好使用mysql_fetch_assoc因此您可以通過名稱來訪問,而不是毫無意義的列數列) 。

然後,PHP腳本可以使用$_GET['row']來獲取應該更新的ID。

0
  • 我的第一個建議是使用的,而不是mysql_fetch_row功能mysql_fetch_assoc功能。

  • 現在,改變錨鏈接爲"markAsInActive.php?id={$row[0]}",而不是markAsInActive.php

echo "<td><a href='markAsInActive.php?id={$row[0]}'>Active</a></td>";

  • 你在 'markAsInactive.php',你可以如下書寫。

    $sql = "UPDATE `QUESTIONS` SET `is_active`='0' WHERE `ID` = {$_GET['id']}"; 
    $result = mysql_query($sql) or die(mysql_error()); 
    header('Location: ' . $_SERVER['HTTP_REFERER']); 
    

假設QUESTIONS表的主鍵是ID和表中的活性標記欄是is_active

相關問題