ошибка при передаче id в bootstrap modal

я новичок в codeigniter

<?php foreach ($rows as $row) { ?>
  <tr>
    <td><?php echo $i++;?></td> 
    <td><?php echo $row->orderid;?></td>
    <td><?php echo $row->order_date;?></td>
    <td><?php echo $row->name;?></td>
    <td><?php echo $row->price;?></td>
    <td>
      <button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal-<?= $row->customerid?>">View Details</button>
    </td>
  </tr>
  <div class="modal fade" id="myModal-<?= $row->customerid?>" role="dialog">
    <div class="modal-dialog modal-sm">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Order Details</h4>
        </div>
        <div class="modal-body">
          <p><strong>Product Name</strong>:&nbsp;&nbsp;&nbsp;<?php echo $row->name;?></p>
          <p><strong>Quantity</strong>:&nbsp;&nbsp;&nbsp;<?php echo $row->quantity;?></p>
          <p><strong>Price</strong>:&nbsp;&nbsp;&nbsp;<?php echo $row->price;?></p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
    </div>
  </div>
<?php } ?>

во всех модалях отображаются только детали первой строки
мне нужно получить детали каждого из каждого модального

2 ответа

  1. Попробуйте ниже код:

    function get_orders(){ 
        $this->db->select('*');
        $this->db->from('orders o');
        $this->db->join('order_detail od', 'o.serial = od.orderid', 'left');
        $this->db->join('tbl_products p', 'p.prod_id = od.productid', 'left');
        $query = $this->db->get();
        return $query->result();
    }
    

    используйте эту строку $this->db->join('order_detail od', 'o.serial = od.orderid', 'left');
    не $this->db->join('order_detail od', 'od.orderid = o.serial','left');

  2. Я могу помочь вам с bootbox модальный плагин( http://bootboxjs.com/ ). Измените html следующим образом

    <div id="myModal" class="modal fade">
          <div class="modal-dialog">
            <div class="modal-content">
              <!-- dialog body -->
              <div class="modal-body">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <div></div>
              </div>
            </div>
          </div>
        </div>
    

    затем удалите код кнопки и замените его этим кодом

    <a  class="btn btn-primary  your_defined_class_name_for_jquery_use" data-id="<?php echo $row['whatever_id']?>" > What ever name</a>
    

    добавьте сценарий ниже в нижней части страницы

    <script>$(className).on('click','your_defined_class_name_for_jquery_use', function (e) {
        var id=$(this).data('id');
        var dialog = bootbox.dialog({         
            title: title,
            message: $('<div></div>').load(url_to_your_controller_which_shows_the_data ),
    
        });
    
    });
    

    Убедитесь, что jquery предварительно загружен на страницу. Думаю, это вам поможет.