Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在视图中显示数据库记录而不重复字段?_Php_Mysql_Sql_Codeigniter - Fatal编程技术网

Php 如何在视图中显示数据库记录而不重复字段?

Php 如何在视图中显示数据库记录而不重复字段?,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,在我的数据库中,我有两个表,一个是politics(politics\u id,politics,politics\u type\u id),另一个是tipo\u politics(politics\u type\u id,politics\u type)。 这是表政治 politics_id | politics | politics_type_id -------- | -------- | ------------- 1 | Politic 1 |

在我的数据库中,我有两个表,一个是politics(politics\u id,politics,politics\u type\u id),另一个是tipo\u politics(politics\u type\u id,politics\u type)。
这是表政治

politics_id | politics    | politics_type_id
--------    | --------    | -------------
1           | Politic 1   | 1
2           | hello world | 2
3           | magic       | 1
4           | love        |1
 politics_type_id | politics_type
  -------------    | --------
  1                | general
  2                | life
这是表tipo_politics

politics_id | politics    | politics_type_id
--------    | --------    | -------------
1           | Politic 1   | 1
2           | hello world | 2
3           | magic       | 1
4           | love        |1
 politics_type_id | politics_type
  -------------    | --------
  1                | general
  2                | life
我需要的是在视图中显示政治表的记录,其中政治类型作为标题,但标题不重复。像这样的

**General**
- Politic 1
- magic
- love

**Life**
- hello world
我尝试使用group by进行查询,但只显示一条政治类型id为1的记录。这是视图代码

 <?php
   for ($j = 0; $j < $contador; $j++) {
 ?>
   <div class="content-layout">
         <p>
           <span>
                <?php echo $list_politic[$j]['politics_type']; ?> 
           </span> 
         </p>
    </div>
    <div>
      <ul style="text-indent: 0px;">
         <li>
             <span>
                   <?php echo $list_politic[$j]['politics']; ?>   
             </span>
         </li> 
       </ul>
    </div>
 <?php } // for j ?>

我希望您能帮助我,我的问题是一个好问题。

看起来您希望标题仅在
政治类型发生变化时显示。这将需要在每次迭代中跟踪其值,因此可以按如下方式构造逻辑:

<?php
$previous_politics_type = "";
for ($j = 0; $j < $contador; $j++) {
    if($previous_politics_type != $list_politic[$j]['politics_type']){  // <-- new if condition
?>

        <div class="content-layout">
            <p>
                <span>
                    <?php echo $list_politic[$j]['politics_type']; ?> 
                </span> 
            </p>
        </div>
<?php
    }       // <-- end if
    $previous_politics_type = $list_politic[$j]['politics_type'];
?> 
    <div>
        <ul style="text-indent: 0px;">
            <li>
                <span>
                    <?php echo $list_politic[$j]['politicas']; ?>   
                </span>
            </li> 
        </ul>
    </div>
<?php 
} // for j 
?>



上面的
的布局可能完全符合您的需要,也可能不完全符合您的需要,但希望它能够提供如何使用新的
$previous\u politics\u type
变量的想法。

如果您进行这样的查询,那么您将得到类型以及实际政治的一行:

select tp.politics_type_id, tp.politics_type politics_text, null politics_id,  1 row_type
from tipo_politics tp
union
select p.politics_type_id, p.politics politics_text, p.politics_id, 2 row_type
from politics p
order by politics_type_id, row_type, politics_id;
结果如下:

 **General**
    - Politic 1
 **General**
    - magic
 **General**
    - love

  **Life**
    - hello world
+------------------+---------------+-------------+----------+
| politics_type_id | politics_text | politics_id | row_type |
+------------------+---------------+-------------+----------+
|                1 | general       |             |        1 |
|                1 | Politic 1     |           1 |        2 |
|                1 | magic         |           3 |        2 |
|                1 | love          |           4 |        2 |
|                2 | life          |             |        1 |
|                2 | hello world   |           2 |        2 |
+------------------+---------------+-------------+----------+
现在,您可以循环查看结果,并且只对标题行执行操作(其中
行\u type=1
)。然后在该循环中,执行另一个循环并选择详细信息行(其中
row\u type=2




你需要一个在政治中循环的内部循环,在类型中循环的外部循环中。当我在显示政治的跨度中放置一个o for循环时,这只会使文本重复,我有一个问题,变量$politics\u type在哪里??我有你的名字吗?或者它是一个错误,并且是$previous_politics_类型变量。如果是这种情况,它的工作,但仍然是相同的标题重复抱歉,谢谢!!!它适用于将$politics\u type更改为$previous\u politics\u type,我在带有注释的模型中有一个where。很抱歉,在该变量的第二次使用中有一个轻微错误,我现在已经更正了。谢谢你指出这一点,我很高兴它对你起了作用。这不是给了每个政治一个全新的
    ,而不是一个单一的
      ,每个政治都在
    • 中吗?不,这给了我每个政治一个答案,这不是完美的设计,而是我想要的,这只是调整问题。