duanchi4184 2017-10-25 06:43
浏览 31
已采纳

在循环php7中的视图中访问对象方法

I'm pulling an array of objects from my database and iterating through them using PHP to display a table. Each result row of the table has the option of deleting that particular record from the database. Each row is also an object, and the object type has a method that will delete itself from the database.

The problem I'm having is thinking through how to get this to work in the view. Right now if you click the delete button, it sets a POST variable to "delete" and reloads the same page wherein a listener process detects the variable and initiates the delete via a hidden input that contains the records database id.

This is all well and good, but these are all objects. Shouldn't each object be able to access it's own methods? It seems the only barrier to this is the interplay between PHP script and HTML forms. My code is below. Ideally, when the delete button is pressed, that particular instance of the object teamleader can run its method 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条回答 默认 最新

  • douturan1807 2017-10-25 07:32
    关注

    In your case, the best solution I think you can use ajax/jQuery for editing or deleting action. You don't need to use many forms as now.

    The code in front-end like this:

    <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 } ?>
    

    And the code with using ajax/jQuery is:

    $(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');
                 }
              }
          );
       });
    });
    

    The delete.php code in backend is:

    <?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();
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么