之前我曾问过[类似的问题] [1],以为我得到了答案,但看起来我被卡住了......
我为保险目的创建了一个漫画列表。基本上,它列出了我的所有问题,包括封面,标题,价值等几个领域。
现在,我在MYSQL中创建了两个表:comicstitles和漫画。
在漫画中,我有titID,titPrefix,titTitle和titType(例如:1,The,X-Men,Mini Serie)。
在漫画中,我有comID,comTitle,comVolume,comIssue,comValue,comImgMain等(例如:1,1,1,141,125,DaysOfFuturePast.jpg)。
我可以在comID = comTitle的表上进行左连接,这样我就可以在php中输出类似的内容:
The X-Men (IMAGE) Volume: 1 Issue: 142 Value: $125,00
现在,所有这一切都很好,但我想按标题对它们进行排序。
所以,而不是这个:
Alpha Flight (IMAGE) Volume: 1 Issue: 1 Value: $4,00 Alpha Flight (IMAGE) Volume: 1 Issue: 2 Value: $3,00 The X-Men (IMAGE) Volume: 1 Issue: 15 Value: $800,00 The X-Men (IMAGE) Volume: 1 Issue: 141 Value: $125,00 The X-Men (IMAGE) Volume: 1 Issue: 142 Value: $125,00
我想得到这个:
Alpha Flight (IMAGE) Volume: 1 Issue: 1 Value: $4,00 (IMAGE) Volume: 1 Issue: 2 Value: $3,00 The X-Men (IMAGE) Volume: 1 Issue: 15 Value: $800,00 (IMAGE) Volume: 1 Issue: 141 Value: $125,00 (IMAGE) Volume: 1 Issue: 142 Value: $125,00
一个完美的例子就是按类别分类的Wordpress页面,其中列出了每个类别列表下具有单独帖子的所有类别。
谢谢!祝大家新年快乐:)
编辑: 这是我的疑问:
$result = mysqli_query($con,"SELECT * FROM comics, comicstitles WHERE comics.comTitle = comicstitles.titID ORDER BY comicstitles.titTitle ASC, comics.comIssue ASC");
这给了我一个很好的单级列表,如下所示:
The X-Men, Issue 15, valued at $800 The X-Men, Issue 141, valued at $125 The X-Men, Issue 142, valued at $125 Alpha Flight, Issue 1, valued at $4 Alpha Flight, Issue 2, valued at $3
但我想要,而不是:
The X-Men: Issue 15, valued at $800 Issue 141, valued at $125 Issue 142, valued at $125 Alpha Flight Issue 1, valued at $4 Issue 2, valued at $3
我还需要用漂亮,干净的HTML包装它,所以IDEAL的事情就是能够做到这一点:
<h2>$comicTitle</h2>
<ul>
<li>$comicIssue</li>
<li>$comicIssue</li>
<li>$comicIssue</li>
</ul>
<h2>$comicTitle</h2>
<ul>
<li>$comicIssue</li>
<li>$comicIssue</li>
<li>$comicIssue</li>
<li>$comicIssue</li>
<li>$comicIssue</li>
<li>$comicIssue</li>
</ul>
答案 0 :(得分:0)
解决此类问题的一种简单方法是将标题保存在临时变量中,并仅在标题不同时打印标题。
$oldtitle = NULL;
while ($row = mysql_fetch_array($result)) {
$prefix = empty($row['titPrefix']) ? '' : "{$row['titPrefix']} ";
$title = $prefix . $row['titTitle'];
if ($oldtitle != $title) {
if ($oldtitle !== NULL) echo '</ul>';
echo '<h1>'.htmlspecialchars($title).'</h1><ul>';
$oldtitle = $title;
}
echo '<li><img src="'.$row['comImgMain'].'"/> '.
' Volume: '.$row['comVolume'] .
' Issue: '.$row['comIssue'] .
' Value: '.$row['comValue'] . '</li>';
}
if ($oldtitle !== NULL) echo '</ul>';
答案 1 :(得分:0)
这需要使用PHP而不仅仅是MySQL
首先,如果尚未正确排序,请将<{1}}添加到您的查询中
第二,用PHP形成一个多维数组:
ORDER BY titTitle, ...
然后当你将它们打印到页面上时,使用PHP类似于:
$comics_array = array();
while ($row = mysql_fetch_array($result)) {
$comics_array[$row["titTitle"]][] = array(
"comImgMain" => $row["comImgMain"],
"comVolume" => $row["comVolume"],
"comIssue" => $row["comIssue"],
...
);
}