Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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 MySQL将输出拆分为多个部分_Php_Mysql - Fatal编程技术网

PHP MySQL将输出拆分为多个部分

PHP MySQL将输出拆分为多个部分,php,mysql,Php,Mysql,我正试图用PHP和MySQL做一些我无法理解的事情 我有一个采用以下结构的表(它们是两个表,但在SQL查询中联接时将作为一个表): 我已经能够让PHP输出以下内容: brand1 model1 brand1 model2 brand1 model3 brand2 modelA 我真正想做的是将其输出为: Brand1 Model1 Model2 Model3 Brand2 ModelA 有人有什么想法吗 这是我当前的代码: <?php $re

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

我有一个采用以下结构的表(它们是两个表,但在SQL查询中联接时将作为一个表):

我已经能够让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>";
}

?>

下面是网格使用表的代码,它将为您提供实现任务的方法和想法

$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>';
$sql=mysql\u查询(“按id DESC LIMIT 15从成员表顺序中选择id、成员名称”);
$i=0;
//建立输出变量
$dyn_表=“”;
而($row=mysql\u fetch\u数组($sql)){
$id=$row[“id”];
$member_name=$row[“member_name”];
if($i%3==0){//if$i可被我们的目标数整除(在本例中为“3”)
$dyn_table.=''.$member_name'.';
}否则{
$dyn_table.=''.$member_name'.';
}
$i++;
}
$dyn_表='';
下面的链接中逐行解释了此代码

阵列网格输出教程将为您提供一些想法,尝试将其用于您的won scnario

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

Array ( 
    [brand1] => Array ( 
        [1] => model1 
        [2] => model2 
        [3] => model3 
    ) 
    [brand2] => Array ( 
        [4] => modelA 
        [5] => modelB 
        [6] => modelC 
    ) 
)
当我们稍后将模型作为每个品牌的列表进行呼应时,我们利用了这一优势。第一个数组将包含所有品牌,而每个品牌都是自己的一个数组-创建二维数组,其中包含所有模型(以及作为该数组中元素键的产品ID)

将每个元素放入
while($row=mysql\u fetch\u 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>";
}
while($row=mysql\u fetch\u array($result)){
//这里我们获取所有结果,并将其放入二维数组中
//使用密钥作为品牌名和产品ID
$brands[$row['brand'][$row['cameraid']]=$row['model'];
}
//然后我们在一个列表中重复它们!
foreach($key=>$brand的品牌){
//$key是品牌的名称
回声$key.“
    ”; foreach($id为品牌=>$model){ //$id是表中相机的id //$model是模型名称本身 回声“
  • ”; } 回声“
”; }


此外,它是不推荐的,不推荐使用<代码> MySqL**<代码>函数,您应该考虑移动到<代码> MySqLI**<代码>或<代码> PDO<代码>,以获得更好的功能、持续支持和更好的安全性。p> 你应该试试这样的东西。它使用多维数组对项目进行分组

<?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>";
    }
}

?>

创建一个数组。在数据上循环。在该数组中,为每个品牌创建数组(如果尚未创建)。将型号推入正确的品牌。基本上,制作一个2D数组。请给我们你尝试过的代码。你可以使用嵌套查询。外部查询:获取唯一品牌,foreach品牌(内部查询)获取所有模型。你们中的任何一位可以写一小段示例代码来告诉我你们的意思吗?我已经尝试了这两种方法,但都无法实现。我已将当前代码添加到@Ahmad的帖子中。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面更改,只有链接的答案可能会无效。好的,但我想对此发表评论,但我的分数不允许我发表评论。我将在此处粘贴代码谢谢,这很有效。非常好的详细回答和解释了!
<?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>";
    }
}

?>