如何在Codeigniter中使用PHP在基于列类别的行中显示MySQL数据

时间:2018-08-18 11:41:06

标签: php mysql codeigniter mysqli

在“大酒瓶”表中,我有以下数据:

magnums table data

我想要的是将生产者显示为标题,然后在该标题下显示相应的行。 我想要的输出: desired output

我对PHP和mysql还是很陌生,所以我不确定该怎么做,但这是我到目前为止所要做的:

型号:

class Magnum_model extends CI_Model {
        public function get_magnum_wines() {
          $query = $this->db->query('SELECT * FROM magnums');
          return $query->result();
        }
    }

控制器:

public function index() {
    $data['magnums']= $this->Magnum_model->get_magnum_wines();
    $this->load->view('magnums.php',$data);
    }

查看:

<h3>Domaine Vincent Rapet</h3>
  <?php foreach($magnums as $magnum): ?>
      <div id="magnum-img">
          <div class="gallery">
              <img src="/BurgundyDirect/gallery/<?php echo $magnum->Image; ?>">
          </div><!-- gallery ends -->

          <div class="desc">
            <div id="wine-name">
              <h5><?php echo $magnum->Name_of_wine; ?></h5>
            </div>
            <h6><a href="#"><?php echo $magnum->Producer; ?></a><h6>
            <h4><?php echo $magnum->Magnum_price; ?></h4>
          </div>
      </div>
  <?php endforeach; ?>

以上代码的输出: enter image description here

我不知道如何将其排序为所需的输出。任何帮助将不胜感激,并提前谢谢您:)

2 个答案:

答案 0 :(得分:0)

如果需要显示产品组,则可以在控制器中获取生产商和相关产品的生产商列表。

  1. 在生产者模型中,创建获取所有生产者(select * from producers)的方法。
  2. 让生产者进入控制器$producers = $this->Producer_model->get_producers();
  3. 然后使用生产者的名称和产品创建数组。

示例代码:

$producerWithProducts = array();

foreach($producers as $producer) {
    $producerId = $producer->Id;
    $producerWithProducts[$producerId]['producerName'] = $producer->Name;
    $producerWithProducts[$producerId]['products'] =  $this->Magnum_model->get_magnum_wines_by_producer_id($producerId);
}

然后在模板中传递$producerWithProducts并对其进行迭代。

答案 1 :(得分:0)

我有同样的事情,但是有葡萄酒的种类/颜色,所以这就是我所做的:

首先用2列创建一个名为Producers的新表:id和name。 在酒水表中,新建一个名为producer_id的列。
该列的值与生产者表中的ID对应。

然后您可以像这样遍历它:

function extractWines() {

    $producers = mysqli_query("SELECT id FROM producers");

    foreach($producers as $key => $value) {
        $query = mysqli_query("SELECT * FROM wines WHERE producer_id = " . $value . "");
        $rowname = mysqli_fetch_assoc($query);

        $html = <<<HTML
        <h1>{$rowname['producer']}</h1>
HTML;
        echo $html;

        while($row = mysqli_fetch_assoc($query)) {

        $html = <<<HTML
        (html code of the item with styling)


HTML;
        echo $html;

        }  
    }
}

这应该可以帮助您解决问题。