我试图用PHP&MySQL做一些我无法理解的事情。
我有一个表,它采用以下结构(它们是两个表,但在SQL查询中加入时将充当一个表):
id | brand | model
1 | brand1 | model1
2 | brand1 | model2
3 | brand1 | model3
4 | brand2 | modelA 我已经能够让PHP输出以下内容:
brand1 model1
brand1 model2
brand1 model3
brand2 modelA 我真正想要做的是将它输出为:
Brand1
Model1
Model2
Model3
Brand2
ModelA 有人有什么想法吗?
这是我目前的代码:
<?php
$result = mysql_query("SELECT cameras.cameraid, cameras.model, brands.brand FROM cameras JOIN brands ON cameras.brandid=brands.brandid WHERE cameras.categoryid='$cat' ORDER BY brands.brand ASC, cameras.level ASC")or die(mysql_error());
while($row = mysql_fetch_array($result))
{
echo "<li><a href='camera.php?id=". $row['cameraid'] . "'>" . $row['brand'] . " " . $row['model'] . "</a></li>";
}
?>发布于 2015-09-16 23:18:15
您要寻找的是一个带有嵌套foreach-loop的二维数组。这将允许您有一个如下所示的数组
Array (
[brand1] => Array (
[1] => model1
[2] => model2
[3] => model3
)
[brand2] => Array (
[4] => modelA
[5] => modelB
[6] => modelC
)
)我们利用这一点为我们的优势,当我们稍后将模型作为每一个品牌的列表。第一个数组将包含所有品牌,而每个品牌都是自己的数组--创建二维数组,其中包含所有模型(以及产品ID作为该数组中元素的关键)。
将每个元素放入while($row = mysql_fetch_array($result))-loop中的数组中,并使用嵌套的foreach-loop来回显它们。
while ($row = mysql_fetch_array($result)) {
// Here we fetch all the results, and put it into a two-dimentional array
// with keys as brandname and the ID of the product
$brands[$row['brand']][$row['cameraid']] = $row['model'];
}
// Then we echo them all out in a list!
foreach ($brands as $key=>$brand) {
// The $key is the name of the brand
echo $key."<ul>";
foreach ($brand as $id=>$model) {
// The $id is the ID of the camera in the table
// The $model is the model-name itself
echo "<li><a href='camera.php?id=".$id."'>".$model."</a></li>";
}
echo "</ul>";
}此外,不推荐使用mysql_*函数,为了获得更好的功能、持续的支持和更好的安全性,您应该考虑迁移到mysqli_*或PDO上。
发布于 2015-09-17 06:37:52
你应该试试这样的东西。它使用多维数组对项进行分组。
<?php
$result = mysql_query("SELECT cameras.cameraid, cameras.model, brands.brand FROM cameras JOIN brands ON cameras.brandid=brands.brandid WHERE cameras.categoryid='$cat' ORDER BY brands.brand ASC, cameras.level ASC")or die(mysql_error());
$brands = array();
while($row = mysql_fetch_array($result))
{
$brands[$row['brand']][] = array($row['model'], $row['cameraid']);
echo "<li><a href='camera.php?id=". $row['cameraid'] . "'>" . $row['brand'] . " " . $row['model'] . "</a></li>";
}
foreach($brands as $brand => $data){
echo $brand . "<br>";
foreach($data as $item){
echo "<li><a href='camera.php?id=" . $item[1] . "'>" . $item[0] . "</a></li>";
}
}
?>发布于 2015-09-16 22:01:43
下面是使用表格的网格代码,它将提供给您并了解如何完成任务。
$sql = mysql_query("SELECT id, member_name FROM member_table ORDER BY id DESC LIMIT 15");
$i = 0;
// Establish the output variable
$dyn_table = '<table border="1" cellpadding="10">';
while($row = mysql_fetch_array($sql)){
$id = $row["id"];
$member_name = $row["member_name"];
if ($i % 3 == 0) { // if $i is divisible by our target number (in this case "3")
$dyn_table .= '<tr><td>' . $member_name . '</td>';
} else {
$dyn_table .= '<td>' . $member_name . '</td>';
}
$i++;
}
$dyn_table .= '</tr></table>';对此代码的逐行解释见下面的链接
数组网格输出教程将给您一些想法,尝试将其用于您获得的scnario 阵列网格输出教程解释得很好的视频。
https://stackoverflow.com/questions/32618704
复制相似问题