2014-11-15 25 views
9

Tôi đã hiển thị một số giá trị từ cơ sở dữ liệu dưới dạng một bảng sử dụng php. Một cột của bảng được dành riêng cho chỉnh sửa. Tôi ước rằng mỗi hàng của bảng có thể được chỉnh sửa.Chỉnh sửa hàng cụ thể của một bảng bằng cách sử dụng id của hàng đó

Mã cho chỉnh sửa là

echo"<td class='success'><button class='btn blue' data-toggle='modal' data-target='#myeditModal'>Edit </button></td>"; 

Mã được sử dụng trong phương thức là

<div class="modal fade" id="myeditModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> 
       <h4 class="modal-title" id="myModalLabel">Edut Treatment</h4> 
      </div> 

      <div class="modal-body"> 
       <form class="form-horizontal" role="form" action="edit.php?id="$row['id']"" enctype="multipart/form-data" method="post"> 
        <div class="form-group"> 
         <label class="col-lg-4 control-label"> Name</label> 
          <div class="col-lg-6"> 
           <input class="form-control" value="" type="text" name="name" > 
          </div> 
        </div> 

        <div class="form-group"> 
        <label class="col-md-3 control-label"></label> 
         <div class="col-md-8"> 
          <input class="btn btn-primary" value="Save Changes" type="submit" name="submit"> 

          <span></span> 
         </div> 
        </div> 
       </form> 

      </div> 
      <div class="modal-footer"> 
       <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
      </div> 
     </div> 
    </div> 
</div> 

Mã cho trang edit.php là

<?php 
include('admin_session.php'); 
$con=mysqli_connect("localhost","root","","db"); 

// Check connection 
if (mysqli_connect_errno()) { 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$id = $_GET['id']; 

mysqli_query($con,"UPDATE treatment_type SET name='".$name.'" WHERE id='".$id."'"); 
mysqli_close($con); 
header("Location: abc.php"); 
?> 

Vấn đề của tôi là khi tôi đạt được edit.php trang Tôi nhận được url như sau: http://example.com/xyz/edit.php?id=

Tôi không thể mang id do đó tôi không thể chỉnh sửa một hàng cụ thể của bảng.

+0

Bạn có thể hiển thị các định nghĩa và một var bãi chứa của $ row? – Stefan

+0

Vâng, tôi sẽ nói rằng bạn phải sử dụng javascript hoặc jquery cho việc này để có thể chuyển hàng sang phương thức chỉnh sửa, sau đó thực hiện cuộc gọi ajax để hiển thị trang chỉnh sửa. Nếu không, bạn sẽ xuất các trang đa phương thức vào trang của mình – KyleK

+0

@ Arif_suhail_123 Bạn nói đúng! – Stefan

Trả lời

2

Nếu bạn được phép gọi URL là tốt. Nhiều khả năng vì dòng này trên báo cáo kết quả UPDATE:

WHERE id='".$id."'"); 
      ^^^^^^^ 

Thứ hai, đúng echo hàng id:

action="edit.php?id=<?php echo $row['id']; ?>" 

Và chắc chắn rằng $name được định nghĩa.

Và tại sao không sử dụng chuẩn bị phát biểu thay vì:

if(isset($_GET['id'], $_GET['name'])) { 
    $con = mysqli_connect("localhost","root","","db"); 

    // Check connection 
    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $id = $_GET['id']; 
    $name = $_GET['name']; 

    $sql = 'UPDATE treatment_type SET name = ? WHERE id = ?'; 
    $update = $con->prepare($sql); 
    $update->bind_param('si', $name, $id); 
    $update->execute(); 

    if($update->affected_rows > 0) { 
     header("Location: abc.php"); 
    } else { 
     echo 'did not update'; 
    } 
} 
+0

@ Arif_suhail_123 có tôi hiểu dòng chảy của nó.Khi phương thức được mở ra, nó sẽ hiển thị một hình thức với tất cả các lĩnh vực trong nó. vấn đề chính là 'echo $ row ['id'];'. vì 'id' không được lặp lại đúng cách, khi nó được gửi, biểu mẫu không thể gửi id tốt. – Ghost

+0

@ Arif_suhail_123, có một số thiếu các phần cần phải được giải quyết vì chúng ta không biết OP lặp lại id như thế nào trong biểu mẫu, câu trả lời thực sự của kyle ở trên là tốt, nếu OP đặt và sử dụng câu trả lời của chúng ta, điều này sẽ giải quyết những vấn đề đó. Lấy :) – Ghost

+0

@Ghost tôi vẫn nhận được cùng một vấn đề và trong khi sử dụng tuyên bố chuẩn bị tôi đã nhận lỗi trong Parse lỗi: lỗi cú pháp, bất ngờ ';' trong truy vấn cập nhật và tôi không thể xóa nó – Sam

2

Cách bạn có nó bây giờ, bạn cần phải thay đổi này ..

<form class="form-horizontal" role="form" action="edit.php?id='<?php echo $row['id'];?>'" enctype="multipart/form-data" method="post"> 

Để đầu ra ID corerectly vào biểu mẫu.

Nhưng theo cách này, bạn đang tạo nhiều biểu mẫu khác nhau cho mỗi hàng ??

Bạn thực sự chỉ cần hiển thị phương thức một lần, sau đó chuyển ID qua jquery/javascript sang phương thức, thực hiện yêu cầu ajax-hiển thị dữ liệu và sau đó chỉnh sửa nó.

Nếu nó chỉ là một hàng, nó phải là tốt, nhưng nếu bạn muốn nhiều hàng bảng, với khả năng chỉnh sửa bất kỳ giá trị trong dòng, sau đó bạn chắc chắn cần phải sử dụng ajax/jquery/javascript

Ví dụ sử dụng một cửa sổ modal, và đi qua ID qua jquery ...

PHP

echo"<td class='success'><button class='btn blue editButton' data-id='<?php echo $row['id'];?>' >Edit </button></td>"; 

jquery

$(document).ready(function(){ 
    //Click button, apply id, and open modal. 
    $('.editButton').click(function(){ 
     var id = $(this).data('id'); 
     //Apply action with id to form 
     $('#myForm').attr('action','edit.php?id='+id); 
     //Open modal 
     $('#myModal').modal({background:'static'}); 
    }): 

    //If you want values to come into the modal you need to do a sepereate ajax call to get the one particular element from database. 


    }); 
+0

tôi vẫn nhận được cùng một url và tôi nhận được lỗi Parse lỗi: lỗi cú pháp, bất ngờ '"' trong truy vấn cập nhật – Sam

+0

Vậy thì bạn rõ ràng không hiển thị cách bạn nhận được kết quả và lặp qua để áp dụng $ hàng biến để hình thức.Có vẻ như hàng chứa không có gì.bạn cần phải sử dụng mysql_fetch_array và loop nó – KyleK

Các vấn đề liên quan