2014-11-06 109 views
1

我正在爲學校的課程做一個計算項目。它涉及PHP,MySQL和HTML - 實質上構建了一個基於Web的應用程序。PHP - 如何編輯HTML表格中顯示的PHP表格的內容?

我有一個名爲「用戶」在一個名爲「cp11641_users」 此表的內容數據庫中的PHP表,可以使用以下的mysql_query一直迴盪成HTML表格:

<div id='accordion'> <ul> 
      <li> 
       <a href='#one'><h4>Edit User Table</h4></a> 
       <div id='one' class='accordion'>"; 
       $query = "SELECT * FROM users"; //You don't need a ; like you do in SQL 
       $result = mysql_query($query); 

     echo "<table class='container'>"; // start a table tag in the HTML 
     echo " <thead>  <tr> 
      <th>Firstname</th> 
      <th>Lastname</th>  
      <th>Username</th> 
      <th>Edit</th> </tr> </thead> "; 
    echo "<tbody>"; 
while($row = mysql_fetch_array($result)){ //Creates a loop to loop through results 
echo "<tr><td>" . $row['first'] . "</td><td>" . $row['last'] . "</td><td>" . $row['username'] . "</td><td>" . "edit" . "</td></tr>"; } 
echo "</tbody> </table>"; //Close the table in HTML 
       echo "</div> 
      </li>"; 

這顯然放將PHP表格的內容轉換爲HTML表格進行查看。但我希望能夠單擊html表中每行旁邊的「編輯」選項卡,並且能夠將該行中的數據更改/修改/刪除。

這是爲管理員頁面應該能夠更改每個用戶的具體細節,這實際上是我想要做的。

我在想,我將需要使用的事實,即循環使用的數組,我可以拉特定行的數據(即$行[1]),然後把它放在$ _POST [] ?我不確定

回答

0

你的MySQL應該包含一個唯一的ID。現在我們來調用該列ID。

然後像做

while($row = mysql_fetch_array($result)){ //Creates a loop to loop through results 
echo "<tr> 
    <td>" . $row['first'] . "</td> 
    <td>" . $row['last'] . "</td> 
    <td>" . $row['username'] . " </td> 
    <td><a href='editUser.php?id='".$row['id']."'> . "edit" . "</a></td> 
</tr>"; } 

然後在你的editUser.php,加

$userid = mysql_real_escape_string($_GET['id']); 

$query = "SELECT * FROM users WHERE id = ".$userid; 
$result = mysql_query($query); 

你編輯。

+0

嗨,我期待這個工作,但是當我把鼠標懸停在生成的鏈接上時,它只顯示「http://cp11641.khsict.com/user_edit.php?id=」,沒有任何東西會進入鏈接的最後部分,該號碼不會繼續它,沒有? – 2014-11-06 21:00:33

+0

別擔心,我懂了!偉大的工作人員,在while循環中,你的代碼的第二行代碼中有一些錯位「'」。但我現在已經開始工作了!非常感謝:)! – 2014-11-06 21:23:45

0

您可能希望將編輯功能放入單獨的頁面。基本上,你有一個鏈接旁邊的每個項目發送到一個單獨的頁面與表單,然後將發送新的信息來更新項目。

對於將它放入$ _POST中(雖然使用$ _GET實際上更常見)。您將通過「編輯」鏈接發送該ID,以便表單知道要編輯的內容。然後它會在您提交時在MySQL中對該項目執行UPDATE。

+0

我也在想這個,這是有道理的。這只是從數組中拉出特定的行並將其放在單獨的頁面中使用的問題。我將試驗$ _POST ['$ Row [x]']; – 2014-11-06 19:25:17

+0

如果你一次只編輯一個,使用ajax也是一個有效的方法。 – 2014-11-06 19:39:23

0

我不認爲你需要使用$ _POST一旦你沒有發送注意到服務器。而是從服務器請求。所以你需要的是回聲。只要。

首先。我認爲你正在這樣做,但你需要有你的頁面.php。否則它將無法工作(沒有在htaccess上進行更改)。

看起來你的代碼很好,但你需要<php? ?>標籤。他們在哪?

<div id='accordion'> 
      <ul> 
       <li> 
        <a href='#one'><h4>Edit User Table</h4></a> 
        <div id='one' class='accordion'> 
        <php? 
        //Connect to your database .... 
        $query = "SELECT * FROM users"; 
        $result = mysql_query($query); 

        echo "<table class='container'>"; 
        echo " <thead><tr><th>Firstname</th><th>Lastname</th><th>Username</th>   <th>Edit</th></tr></thead> "; 
        echo "<tbody>"; 
         while($row = mysql_fetch_array($result)){ 
           echo "<tr><td>" . $row['first'] . "</td><td>" .     $row['last'] . "</td><td>" . $row['username'] . "</td><td>" . "edit" . "</td></tr>"; } 

        echo "</tbody> </table>"; 
        ?> 
     </div> 
      </ul> 
       </li> 
</div> 
+0

嗨,這只是一個代碼塊,標籤是在開始(就在if語句之前,檢查$ _SESSION []是否是管理會話而不是標準) – 2014-11-06 20:13:33