2017-05-09 95 views
0

代碼:如何使用唯一ID更新表格行數據?

<?php 
if(isset($_POST['save'])) 
{ 
    $comment1 = $_POST['comment2'].",".date('Y-m-d'); 
    $comment2 = $_POST['comment2']; 
    $id = $_POST['id']; 
    $query = "update enquires2 set comment1 = '$comment1', comment2 = '$comment2', s_date = '$s_datee' where id='$id'"; 
    $result = mysqli_query($link,$query); 
    if($result==true) 
    { 
    echo "successfull"; 
    } 
    else 
    { 
    echo "error!"; 
    } 
} 
?> 

<form method="post" name="myform"> 
<table> 
    <tr> 
    <th>comment1</th> 
    <th>comment2</th> 
    <th>Action</th> 
    </tr> 
    <?php 
    $sql = "select * from enquires2 "; 
    $result = mysqli_query($link,$sql); 
    while ($row = mysqli_fetch_array($result)) 
    { 
    ?> 
    <tr> 
    <td> 
     <input type='hidden' name='id' value='<?php echo $row['id']; ?>'> 
    </td> 

    <td> 
    <?php echo $row['comment1']; ?> 
    </td> 

    <td> 
     <input type='text' name='comment2' id='comment2' value=""/> 
    </td> 

    <td> 
     <input type ='submit' name='save' id='save' value='Save' /> 
    </td> 
    </tr> 
    <?php 
    } 
    ?> 
</table> 
</form> 

enter image description here

在這段代碼我想更新與獨特的ID表enquires2。在下面的圖片中,你會看到具有保存按鈕的表格行只有一行,同樣它有多行,每行中都有保存按鈕。現在我希望當我點擊特定行的保存按鈕時,只有行數據將被更新。我該如何解決這個問題?請幫忙。

謝謝

+0

可能重複[創建一個HTML表格,其中每個TR是FORM](http://stackoverflow.com/questions/4035966/create-a-html-table-where-each-tr-is-a-form ) – Ivar

+0

據我所見$ s_datee是未定義的 –

+0

它不是重複的@Ivar – Demonyowh

回答

0

你可以使用AJAX和jQuery做到這一點,將數據發送到一個單獨的PHP文件並分配$row['ID']到按鈕的數據值屬性,

$("#save-btn").click(function(){ 
    id = $(this).attr(data-value); 
    ***** rest of values here 
    $.ajax({ 
     method: "GET", 
     data: {id: id, rest of: data here}, 
     url: phpfile.php, 
     success: function(){ 
      console.log("Success"); 
     } 
    }) 
}); 

雖然在PHP文件中,你會得到這樣的ID:

$_GET['id'],和其他值相同,因爲我們使用GET方法,然後將它們放在更新查詢中。

-1

請不要使用您的代碼來解決安全漏洞。閱讀更多關於sql注入Here。畢竟,對於每一行(),創建一個隱藏輸入存儲id行的表單。

-1

我修改我的代碼,使其工作,創建一個嵌套表的TD內,使標籤將被接受,

也看到這個鏈接,工作參考, HTML: Is it possible to have a FORM tag in each TABLE ROW in a XHTML valid way?

<?php 
    if(isset($_POST['save'])) 
    { 
     $comment1 = $_POST['comment2'].",".date('Y-m-d'); 
     $comment2 = $_POST['comment2']; 
     $id = $_POST['id']; 
     $query = "update enquires2 set comment1 = '$comment1', comment2 = '$comment2', s_date = '$s_datee' where id='$id'"; 
     $result = mysqli_query($link,$query); 
     if($result==true) 
     { 
     echo "successfull"; 
     } 
     else 
     { 
     echo "error!"; 
     } 
    } 
    ?> 


    <table> 
     <tr> 
     <th>comment1</th> 
     <th>comment2</th> 
     <th>Action</th> 
     </tr> 
     <?php 
     $sql = "select * from enquires2 "; 
     $result = mysqli_query($link,$sql); 
     while ($row = mysqli_fetch_array($result)) 
     { 
     ?> 
<tr><td><table> 

    <form method="post" name="myform"> 

     <tr> 
     <td> 
      <input type='hidden' name='id' value='<?php echo $row['id']; ?>'> 
     </td> 

     <td> 
     <?php echo $row['comment1']; ?> 
     </td> 

     <td> 
      <input type='text' name='comment2' id='comment2' value=""/> 
     </td> 

     <td> 
      <input type ='submit' name='save' id='save' value='Save' /> 
     </td> 
     </tr> 
    </form> 

</table> 
</td> 
</tr> 
     <?php 
     } 
     ?> 
    </table> 
+0

不允許將表單纏繞tr標籤。 ['tr'只能有'table','thead','tbody'或'tfood'作爲父項。](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr ) – Ivar

+0

它可能不被允許,但它可以工作,可能在某些瀏覽器上 – apelidoko

+0

也可能不在其他人上。我不會抓住機會,只是遵守規則。而是使用可以在所有情況下都能正常工作的答案。 – Ivar

0

首先,出於安全原因,你需要這個查詢更改爲準備好的語句看到PHP MySQLI Prevent SQL Injection

$id = $_POST['id']; 
    $query = "update enquires2 set comment1 = '$comment1', comment2 = $comment2', s_date = '$s_datee' where id='$id'"; 
    $result = mysqli_query($link,$query); 


無論如何,這條線是壞的,你錯過了$ comment2的開盤報價。

$query = "update enquires2 set comment1 = '$comment1', comment2 = $comment2', s_date = '$s_datee' where id='$id'"; 

你確定$鏈接是一個實際的mysqli鏈接?

至於html部分,你需要每個記錄mkae一個表單。見鏈接貼HTML: Is it possible to have a FORM tag in each TABLE ROW in a XHTML valid way?

或者,也可以做壞事像只增加了$ id來埃夫裏現場的每一行(類似於:)

<input type ='submit' name='save[<?=$id;?>]' id='save' value='Save' /> 

,並在PHP代碼檢查女巫鍵設置。

if(isset($_POST['save']) && is_array($_POST['save'])){ 
    $id=key($_POST['save']); 
} 

您將需要複製壞事您的意見很好,但作爲一個概念證明可以運行在phpfiddle這個片段。ORG

<?php 
print_r($_POST); 
if(isset($_POST['save']) && is_array($_POST['save'])){ 
    echo key($_POST['save']); 
} 
?> 
<html> 
    <form method='post'> 
     <input type='submit' name='save[1]' value='1' /> 
     <input type='submit' name='save[2]' value='2' /> 
    </form> 
</html> 

希望我能爲你提供一個非常完整的答案,但有大量的工作要在你的代碼做了它是「正確的編碼」。除了這樣一個事實,即你的代碼可以被SQL注入並且不可被接受的事實之外,這又是一個意見問題。

相關問題