簡體   English   中英

表格中的欄值未更新

[英]Column value not updated in the table

我無法更新一列字段。 請建議我代碼中有什么錯誤

index.php

<?php
  $host    = "localhost";
  $user    = "root";
  $pass    = "";
  $db_name = "logistics";
  $lastId="";
  //create connection
  $con = mysqli_connect($host, $user, $pass, $db_name);
  $result = mysqli_query($con,"SELECT * FROM notification");
?>
<div class="table-inner-wrapper">
  <h5 class="text- blll"> Active Alerts </h5>
  <table class="table table-hover table-striped">
    <tr class="t_head">
      <th>ID </th>
      <th>Forklift ID</th>
      <th>Timestamp</th>
      <th>Duration</th>
      <th>Alert Details</th>
      <th></th>
      <th>Remark</th>
      <th></th>
    </tr>
    <?php
      while($row = mysqli_fetch_array($result)){
        echo "<form action='' id='remarks' method='post'>";
        echo "<tr>";
        echo "<td>" . $row['id'] . "</td>";
        echo "<td>" . $row['forklift_id'] . "</td>";
        echo "<td>" . $row['noti_start'] . "</td>";
        echo "<td>" . $row['duration'] . " hr</td>";
        echo "<td>" . $row['alert_details'] . "</td>";
        echo "<td><i class='email' id='". $row['id'] ."'> &nbsp;<i class='fa fa-inbox fa-2x'> </i> </i> </td>";
        echo "<td><textarea class='remarks' id='".$row['id']."'> ".$row['remarks']."  </textarea></td>";
        echo "<td><input type='button' class='btn btn-info remark' value='submit' id='".$row['id']."'></td>";
        echo "</tr>";
        echo "</form>";
      }
    ?>
  </table>
</div>
<script type="text/javascript">
  $(() => {

    $(document).ready(function(){

      $(".remark").on('click',function(e){
        e.preventDefault();
        var id = $(this).attr('id');
        var remarks    = $("textarea.remarks").val();
        //  alert(remarks);
        // alert(id);
        $.ajax({
          url:'remark.php',
          method:'POST',
          data: {id: id, remarks: remarks},
          success:function(data){
            alert(data);
            // return data;
          }
        });
      });
    });

  })
</script>

remark.php

<?php
  $conn = new mysqli('localhost', 'root', '', 'logistics');

  $remarks = $_POST['remarks'];
  echo $remarks;
  $id = $_REQUEST['id'];
  echo $id;

  $sql = "UPDATE notification SET remarks='".$remarks."' WHERE id='".$id."' " ;

  if($conn->query($sql)===TRUE){
    echo "DATA updated";
  }
?>

我正在嘗試根據行ID更新提交時的備注列值,但它僅更新列值的第一行,如果我單擊其余行,則不會更新備注值。

幾件事:

我將更改$id = $_REQUEST['id']; $id = $_POST['id'];

其次,您的<form>標記位於while循環內,這意味着您在每次迭代中都回顯出一個新的表單。 所有表格將具有相同的ID。 這將給您帶來問題,並符合您描述的行為類型。 像這樣從循環內部刪除<form>標記:

echo "<form action='' id='remarks' method='post'>"; 

  while($row = mysqli_fetch_array($result)){

    echo "<tr>"; 
    echo "<td>" . $row['id'] . "</td>";
    echo "<td>" . $row['forklift_id'] . "</td>";
    echo "<td>" . $row['noti_start'] . "</td>";
    echo "<td>" . $row['duration'] . " hr</td>";
    echo "<td>" . $row['alert_details'] . "</td>";
    echo "<td><i class='email' id='". $row['id'] ."'> &nbsp;<i class='fa fa-inbox fa-2x'> </i> </i> </td>";
    echo "<td><textarea class='remarks' id='".$row['id']."'> ".$row['remarks']."  </textarea></td>";
    echo "<td><input type='button' class='btn btn-info remark' value='submit' id='".$row['id']."'></td>";
    echo "</tr>";


  }

echo "</form>"; 

這行:

var remarks = $("textarea.remarks").val();

只會給你第一個textarea的值和班級remarks 您需要改為從與按鈕關聯的文本區域訪問這些備注。 您確實有一個問題,盡管您有多個具有相同id元素,所以您需要先解決該問題。 嘗試更改此代碼:

echo "<td><i class='email' id='". $row['id'] ."'> &nbsp;<i class='fa fa-inbox fa-2x'> </i> </i> </td>";
echo "<td><textarea class='remarks' id='".$row['id']."'> ".$row['remarks']."  </textarea></td>";

echo "<td><i class='email' id='e". $row['id'] ."'> &nbsp;<i class='fa fa-inbox fa-2x'> </i> </i> </td>";
echo "<td><textarea class='remarks' id='t".$row['id']."'> ".$row['remarks']."  </textarea></td>";

現在,您的textarea字段具有唯一的id ,該id仍與$row['id'] 因此,在事件代碼中,您可以編寫:

var remarks = $("#t" + id).val();

獲取與該按鈕關聯的備注的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM