【发布时间】:2014-06-25 07:16:01
【问题描述】:
从我之前的问题Handling while loop and grouping MYSQL PHP Values - 我又来了,有一些问题 这是我的问题解释如下。
表格
author_id author_name author_book rating
1 A1 ABC 5
1 A1 DEF 6
2 A2 PPP 8
3 A3 FFF 9
输出
author_id author_name author_book rating
1 A1 ABC 5
A1 DEF 6
2 A2 PPP 8
3 A3 FFF 9
预期输出
Author ID Author Name Author Book Rating
1 A1 ABC 5
DEF 6
2 A2 PPP 8
3 A3 FFF 9
代码
<?php
$link = new mysqli('localhost', 'test', 'test', 'test');
$query = mysqli_query($link, 'SELECT * FROM author_master ORDER BY author_id');
$books = array();
while($row = $query->fetch_assoc()) {
$books[$row['author_id']][] = $row;
}
?>
<table border="0" cellpadding="10">
<thead>
<tr>
<th>Author ID</th>
<th>Author Book</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<?php foreach($books as $author_id => $values): ?>
<tr>
<td><?php echo $author_id; ?></td>
<td><?php foreach($values as $author_book) {echo $author_book['author_name'] . '<br/>';} ?></td>
<td><?php foreach($values as $author_book) {echo $author_book['author_book'] . '<br/>';} ?></td>
<td><?php foreach($values as $author_book) {echo $author_book['rating'] . '<br/>';} ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
我知道问题出在我循环的第二个问题上。但是如何解决它。
另外,我在我的 php 代码中使用了许多 foreach。有没有这个可以优化的。
再次感谢,
编辑:
我最关心的是如何优化代码而不是使用许多 foreach 来获取值。 另外,不要坚持让我使用mysqli或pdo,因为这是我的客户要求,他只想拼命地使用mysql
金兹
【问题讨论】:
-
我建议将您从数据库中获得的值放入对象中。如果您愿意,我可以在答案中更详细地解释。作者 id 和姓名也总是相同的吗?
-
我不确定,但如果值相同,您可以尝试为第一个
<td>添加rowspan=<no-of-loops>,并跳过同一列中的其他<td>。对不起我的懒惰回答。有空我一定会尝试写代码。 -
@kpp - 请。我非常需要你的帮助。
-
可能简化您的选择查询会降低复杂性,您可以对 author_id 上的数据进行分组。
-
@kpp 该查询不会返回一个对象吗?
标签: php html arrays for-loop while-loop