具有不同str的表迭代

时间:2018-08-11 11:37:46

标签: php mysql sql loops

我想设计一个包含几个列的表,但是这些列不是我的问题。 问题是行。 这些是mysql表:

tables-sql

我想基于str表的计数来迭代表,而行基于包含相同str_id的substr的计数来进行迭代。 每个str都有一张桌子。 在每个表的行中,都有指定str的substr。 希望您能理解我的意思。

这是我的html和PHP代码:

<?foreach ($stra as $str) { ?>
<div>

  <table id="homeTable">

    <thead>
    <th>str</th>
    </thead>

    <tr>

      <td>

       **********

      </td>

    </tr>

  </table>

</div>
  

**********我想在这里将substrs动态地迭代到每一行,直到它们的str_id相同为止,然后,新表将基于新主题和新substrs进行迭代****** ****

这是我的SQL代码:

$db = Db::getInstance();
  $stra= $db->query("SELECT * FROM str-table");
  $substr= $db->query("SELECT * FROM str-table");

我该怎么办?

1 个答案:

答案 0 :(得分:0)

认为,您想要这样的东西:

<?php
    $db = Db::getInstance();
    $stra= $db->query("SELECT * FROM `str-table`");
?>

<?php while ($str = $stra->fetch_array()) : ?>
<div>
  <table id="homeTable">

    <thead>
    <th><?php echo $str['str']; ?></th>
    </thead>

    <?php $substr = $db->query("SELECT * FROM `substr-table` WHERE str_id = ".$str['str_id']); ?>
    <?php while ($sub = $substr->fetch_array()) : ?>

    <tr>

      <td>

       <?php echo $sub['substr']; ?>

      </td>

    </tr>

    <?php endwhile; ?>

  </table>

</div>
<?php endwhile; ?>

第一个SQL查询从str表中获取所有类别。 然后foreach循环遍历它们,并为每个循环打印一张表。

在表内部,第二个SQL查询从substr表中获取外循环中当前“ str”类别的所有子类别。然后,它为每个substr类别打印一个表格行和一个表格单元格。

让我知道这是否是您所需要的。 :)

更新并分离了模型-视图-控制器

型号:

<?php
    $db = Db::getInstance();

    $categories = array();

    $stra= $db->query("SELECT * FROM `str-table`");

    while ($str = $stra->fetch_assoc()) {

        $substr = $db->query("SELECT * FROM `substr-table` WHERE str_id = ".$str['str_id']);

        $subcategories = array();

        while ($sub = $substr->fetch_assoc()) {

            $subcategories[] = $sub;

        }

        $categories[] = array_merge($str, array('substrs' => $subcategories));

    }

    return $categories;
?>

与上述相同,第一个SQL查询从str-table获取类别,第二个SQL查询从substr-table获取每一行的相应子类别。然后将类别及其子类别添加到多维数组,然后将其返回给调用代码。

控制器可以从模型中获取类别数组,并将其传递给视图以进行显示。

查看:

<?php foreach ($categories as $category) : ?>
<div>
  <table id="homeTable">

    <thead>
    <th><?php echo $category['str']; ?></th>
    </thead>

    <?php foreach ($category['substrs'] as $subcategory) : ?>

    <tr>

      <td>

       <?php echo $subcategory['substr']; ?>

      </td>

    </tr>

    <?php endforeach; ?>

  </table>

</div>
<?php endforeach; ?>