PHP MySQL将输出拆分为多个部分
我正试图用PHP和MySQL做一些我无法理解的事情 我有一个采用以下结构的表(它们是两个表,但在SQL查询中联接时将作为一个表): 我已经能够让PHP输出以下内容: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
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>";
}
}
?>