2017-10-25 6 views
0

データベースからオブジェクトの配列を取得し、PHPを使用してそれらを繰り返してテーブルを表示しています。テーブルの各結果行には、その特定のレコードをデータベースから削除するオプションがあります。各行はオブジェクトでもあり、オブジェクト型にはデータベースから自身を削除するメソッドがあります。ループ内のビューでのオブジェクトメソッドのアクセスphp7

私が抱えている問題は、これをビューで動作させる方法を考えていることです。今すぐ削除ボタンをクリックすると、POST変数が「削除」に設定され、リスナー・プロセスが変数を検出し、レコード・データベースIDを含む隠れた入力を介して削除を開始する同じページが再ロードされます。

これはすべてうまくいくものですが、これらはすべてオブジェクトです。それぞれのメソッドにアクセスできないようにする必要がありますか?これに対する唯一の障壁は、PHPスクリプトとHTMLフォームの相互作用です。私のコードは以下の通りです。理想的には、削除ボタンを押すと、そのオブジェクトのチームリーダの特定のインスタンスは、そのメソッドteamleader-> delete_team_leader()を実行できます。

 <?php foreach($teamleaders as $teamleader) { ?> 
    <tr> 
     <td><?php echo $teamleader->first_name; ?></td> 
     <td><?php echo $teamleader->last_name; ?></td> 
     <td><img src="<?php echo '../img/' . $teamleader->photo;?>" alt="" class="img-fluid tiny-tl-img"></td> 
     <td><?php echo nl2br(substr($teamleader->bio, 0, 100));?>...</td> 
     <td><?php echo $teamleader->url_name;?></td> 
     <form action="index.php?a=edittl" method="post"> 
      <td> 
       <input type="hidden" name="id" value="<?php echo $teamleader->id?>"> 
       <input type="submit" class="btn btn-default" name="edit" value="Edit"> 
      </td> 
     </form> 
     <form action="index.php" method="post"> 
      <td> 
       <input type="hidden" value="<?php echo $teamleader->id?>" name="id"> 
       <input type="submit" class="btn btn-danger" name="delete" value="Delete" onclick="return confirm('Are you sure you want to delete this team leader?')"> 
      </td> 
     </form> 
    </tr> 
    <?php } ?> 

答えて

1

あなたの場合、編集または削除アクションにajax/jQueryを使用することができると思います。 現在、多くのフォームを使用する必要はありません。このようなフロントエンドで

コード:

<head> 
<script src="jquery.min.js"></script> 
</head> 
... 
<?php foreach($teamleaders as $teamleader) { ?> 
    ... 
    <td><?php echo $teamleader->url_name;?></td>   
    <td> 
     <input type="submit" class="btn btn-default btn-edit" name="edit" value="Edit" data-teamleaderid="<?php echo $teamleader->id?>"> 
    </td> 
    <td> 
     <input type="submit" class="btn btn-danger btn-delete" name="delete" value="Delete" data-teamleaderid="<?php echo $teamleader->id?>"> 
    </td> 
</tr> 
<?php } ?> 

とAjaxを使用してコード/ jQueryのである:

$(document).ready(function(){ 
    $('.btn-delete').on('click',function(){ 
     var _this = $(this); 
     var _teamleaderid = $(this).data('teamleaderid'); 

     if (!confirm('Are you sure you want to delete this team leader?')) return false; 
     $.ajax(
      url:'delete.php', 
      type:'post', 
      data: { 
       teamleaderid: _teamleaderid 
      }, 
      dataType:'json', 
      success:function(data) { 
      if (data.return) { 
       $(_this).parent().parent().remove();/*Remove the current row in table html*/ 
       alert('This teamleader has been deleted'); 
      } 
      } 
    ); 
    }); 
}); 

バックエンドでdelete.phpコードがある:

<?php 
... #connect database 
$teamleader_id = filter_input(INPUT_POST,'teamleader'); 
$check_delete = $dbconn->query("DELETE from teamleader_table WHERE id={$teamleader_id}"); 
print json_encode('return'=>$check_delete); 
die(); 
?> 
関連する問題