首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL将输出分成几个部分

问MySQL将输出分成几个部分
EN

Stack Overflow用户
提问于 2015-09-16 21:06:39
回答 3查看 212关注 0票数 1

我试图用PHP&MySQL做一些我无法理解的事情。

我有一个表,它采用以下结构(它们是两个表,但在SQL查询中加入时将充当一个表):

代码语言:javascript
复制
id | brand  | model  
1  | brand1 | model1  
2  | brand1 | model2  
3  | brand1 | model3  
4  | brand2 | modelA  

我已经能够让PHP输出以下内容:

代码语言:javascript
复制
brand1 model1  
brand1 model2  
brand1 model3  
brand2 modelA  

我真正想要做的是将它输出为:

代码语言:javascript
复制
Brand1  
Model1  
Model2  
Model3  

Brand2  
ModelA  

有人有什么想法吗?

这是我目前的代码:

代码语言:javascript
复制
<?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>";
}

?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-16 23:18:15

您要寻找的是一个带有嵌套foreach-loop的二维数组。这将允许您有一个如下所示的数组

代码语言:javascript
复制
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来回显它们。

代码语言:javascript
复制
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上。

票数 4
EN

Stack Overflow用户

发布于 2015-09-17 06:37:52

你应该试试这样的东西。它使用多维数组对项进行分组。

代码语言:javascript
复制
<?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>";
    }
}

?>
票数 1
EN

Stack Overflow用户

发布于 2015-09-16 22:01:43

下面是使用表格的网格代码,它将提供给您并了解如何完成任务。

代码语言:javascript
复制
$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 阵列网格输出教程解释得很好的视频。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32618704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档