2016-04-27 34 views
0

我試圖將一個HTML表格作爲mySQL數據庫的前端。表格顯示正常,我可以輸入我想要對錶格的每一行進行的編輯,但是當我按下提交按鈕時,實際上並未進行更改。任何人都可以看到我要去哪裏嗎?嘗試使用PHP和mySQL創建可編輯的HTML表格,但表格不會更新

<?php 

include("db.php"); 

$sql = "SELECT * FROM `artist`"; 
$result = mysqli_query($conn, $sql); 

if (isset($_POST['update'])){ 

    $artID = $_POST['artID']; 
    $artName = $_POST['artName']; 
    $key = $_POST['hidden']; 

    $UpdateQuery = "UPDATE `artist` SET `artID` = '$artID', `artName` = '$artName' WHERE `artist`.`artID` = '$key'"; 

    mysqli_query($conn,$UpdateQuery); 
    header("Location: {$_SERVER['HTTP_REFERER']}"); 
    exit; 

}; 
echo "<table border='1'>"; 
echo "<tr>"; 
echo "<th>ID</th>"; 
echo "<th>Name</th>"; 
echo "</tr>"; 

if ($result->num_rows > 0) { 
    echo "<form id ='artisttable' action ='getartiststable.php' method ='post'>"; 
    // output data of each row 
    while($row = mysqli_fetch_array($result)) { 
     echo "<tr>"; 
     echo "<td>" ."<input type='text' name ='artID' value ='" . $row['artID'] . "' </td>"; 
     echo "<td>" . "<input type='text' name ='artName' value ='" . $row["artName"] . "' </td>"; 
     echo "<td>" . "<input type = 'hidden' name ='hidden' value='" . $row['artID'] . "' </td>"; 
     echo "<td>" . "<input type='submit' name ='update'" . " </td>"; 
     echo "</tr>"; 
    } 
    echo "</form>"; 
    echo "</table>"; 
} else { 
    echo "0 results"; 
} 
$conn->close(); 

?> 

db.php文件只包括連接信息到MySQL數據庫,我100%肯定沒有什麼不妥之處,因爲它正確,它只是不更新​​檢索表。

+0

具有圍繞'tr'一個'form'標籤__invalid__瀏覽器重建你的HTML和你沒有得到你期望。 –

+0

可能無效,但不是問題的原因。 –

+0

這可能是由於您的輸入標籤,他們沒有關閉..您可以嘗試至少確保。 – Aparna

回答

0

您的form正在構建具有相同名稱的多個元素。當您提交表單時,它將使用最後一個元素作爲值,因此無論您想要更新的最後一條記錄的更新情況如何(或者由於字符串封裝而引發錯誤)。你也應該使用參數化查詢。

所以不是:

if ($result->num_rows > 0) { 
    echo "<form id ='artisttable' action ='getartiststable.php' method ='post'>"; 
    // output data of each row 
    while($row = mysqli_fetch_array($result)) { 
     echo "<tr>"; 
     echo "<td>" ."<input type='text' name ='artID' value ='" . $row['artID'] . "' </td>"; 
     echo "<td>" . "<input type='text' name ='artName' value ='" . $row["artName"] . "' </td>"; 
     echo "<td>" . "<input type = 'hidden' name ='hidden' value='" . $row['artID'] . "' </td>"; 
     echo "<td>" . "<input type='submit' name ='update'" . " </td>"; 
     echo "</tr>"; 
    } 
    echo "</form>"; 
    echo "</table>"; 

用途:

if ($result->num_rows > 0) { 
// output data of each row 
    while($row = mysqli_fetch_array($result)) {?> 
     <form class='artisttable' action ='getartiststable.php' method ='post'> 
      <tr> 
       <td><input type='text' name ='artID' value ='<?php echo $row['artID'];?>' /></td> 
       <td><input type='text' name ='artName' value ='<?php echo $row["artName"];?>' /></td> 
       <td><input type = 'hidden' name ='hidden' value='<?php echo $row['artID'];?>' /></td> 
       <td><input type='submit' name ='update'" . " </td> 
      </tr> 
     </form> 
    <?php } ?> 
    </table> 

所以,你得到的每一個數據集form。這裏有一個關於mysqli:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php的準備好的語句的鏈接。你也應該更新你的標記。用於格式化的Table不是最好的方法。您的input也沒有關閉丟失>

此外,這從id改爲artisttableclass,因爲會有倍數。相應地更新CSS/JS。

0

你正在把表單標籤放入tr中,這是不允許的td只允許使用 所以你必須從那裏刪除那個tr。

你必須使用jQuery的,也可以與其他一些電網結構替換表,以便它可以看起來相同且形式可以放在那裏,以及

一個建議不要混用PHP和HTML一起把它們分開了乾淨的代碼

如果所有的這些,你的代碼會是這樣