在产品标题PHP&;下显示产品;MySQL
我有两张桌子;子级和子级1。sublevel包含产品标题或集合组名称,另一个subcat1包含所有实际产品 这是次级表在产品标题PHP&;下显示产品;MySQL,php,mysql,Php,Mysql,我有两张桌子;子级和子级1。sublevel包含产品标题或集合组名称,另一个subcat1包含所有实际产品 这是次级表 类别ID子级别名称 67 1个麻醉温度计 67 2个前额温度计 67 3个药物测试温度计 67 4药物测试温度计 这是另一张表,SUBAT1 类别ID子级别ID子级别名称 67 2 12级温度计 67 1临床试验结果 67 2前额温度计 67 3英国人 67 3英国事件 我想要的是输出,当我指的是输出时,我在php代码中的意思是这样的 麻醉温度计-Clinitrend 前
类别ID子级别名称
67 1个麻醉温度计
67 2个前额温度计
67 3个药物测试温度计
67 4药物测试温度计
这是另一张表,SUBAT1
类别ID子级别ID子级别名称
67 2 12级温度计
67 1临床试验结果
67 2前额温度计
67 3英国人
67 3英国事件
我想要的是输出,当我指的是输出时,我在php代码中的意思是这样的
麻醉温度计-Clinitrend
前额温度计-6个一次性事件,6个可重复使用事件,12个事件
药物测试温度计-Briteline,BriteEvent
我经常遇到的问题是,我总是对每个产品重复相同的标题,但我只想要一次。我尝试过分组方式、区分方式和左联接方式,但检索到的每个产品都会显示其类别标题-我知道我可能是以错误的方式查看查询…每次我想到一些新的内容,可以更改查询时,我都失败了
换个角度看,但我的大脑不是那样工作的
function catLevelsName(){
// This would be used to select which category $cat_id = $_GET['cat_id'];
global $dbc;
$query = "SELECT subcat1.SubCatName FROM subcat1 RIGHT JOIN sublevel ON sublevel.CategoryID = subcat1.CategoryID";
$result = mysqli_query($dbc, $query) or die(mysqli_error(). "<p>with query;<br />$query");
while($row = mysqli_fetch_array($result)){
echo $row['Name'];
echo $row['SubCatName'];
}
函数catLevelsName(){
//这将用于选择哪个类别$cat_id=$\u GET['cat_id'];
全球$dbc;
$query=“在subvel.CategoryID=subcat1.CategoryID上从subcat1右联接子级中选择subcat1.SubCatName”;
$result=mysqli_query($dbc,$query)或die(mysqli_error()。“with query;
$query”);
while($row=mysqli\u fetch\u数组($result)){
echo$row['Name'];
echo$row['SubCatName'];
}
有没有关于我做错了什么的线索
另外,对于我的格式设置,我深表歉意。我不确定这是否是您想要的,但我建议您提出以下问题:
select sl.Name, sc.SubCatName from sublevel sl
join subcat1 sc
on sc.CategoryID=sl.CategoryID
and sc.SublevelID=sl.SublevelID
order by sl.Name;
这为我提供了示例数据的输出,如下所示:
'Anaesthsia Thermometers', 'Clinitrend'
'Drug Testing Thermometers', 'BriteEvent'
'Drug Testing Thermometers', 'Briteline'
'Forehead Thermometers', 'Forehead Thermometer'
'Forehead Thermometers', '12 Level Thermometer'
一旦您按照自己的喜好设计了查询,只需使用PHP代码读取数据并以您想要的格式打印即可。简短编辑,回答您的问题:您不能将子级别标签作为sql查询结果,只需一次,因为它将出现在每个sql连接结果行中。我建议您不要这样做o深入了解连接理论以及sql本身如何提供输出行
我对你的设想有两个很大的怀疑:
<?php
// Weird database init
$connection = mysql_connect('localhost', 'root', 'my awesome root password');
mysql_select_db('stack', $connection);
$result = mysql_query("select * from SubLevel s inner join SubCat c on s.SublevelID=c.SublevelID", $connection);
// Output array
$subLevels = array();
// Build our output array
while ($row = mysql_fetch_assoc($result)) {
$subLevelId = $row['SublevelID'];
$subLevels[$subLevelId]['subLevelToDisplay'] = $row['Name'];
$subLevels[$subLevelId]['subCats'][] = "<a href='{$row['SubCatName']}'>{$row['Url']}</a>";
}
// Format output
foreach ($subLevels as $id => $row) {
print "{$row['subLevelToDisplay']} - " . implode(',', $row['subCats']) . "<br />";
}
希望这真的能帮助你们,无论如何,我会重新考虑数据库层在一个更清晰和更清晰的
结构化方式。您可以尝试一种肮脏的解决方案…:) 使用Emo Mosley的回复…您可以使用数组 例如:
$array_results = array();
$query = "select sl.Name, sc.SubCatName from sublevel sl
join subcat1 sc
on sc.CategoryID=sl.CategoryID
and sc.SublevelID=sl.SublevelID
order by sl.Name;"
$result = mysqli_query($dbc, $query) or die(mysqli_error(). "<p>with query;<br />$query");
while($row = mysqli_fetch_array($result)){
$array_results[$row['Name']][] = $row['SubCatName'];
}
虽然我没有测试过,但我认为它应该起作用:HiBasoRF,感谢你在“数据库”的结构中工作。在你的帮助下,页面看起来像我想要的那样。我还认为它是PHP代码来帮助显示我想要的,但是我的技术水平仍然是基础时期。我想问一件事。内爆,现在我有了每个产品,我可以使用另一个内爆或“For each loop”为每个产品提供唯一的链接(我将从数据库收集数据以构建url)?感谢谢伊·阿佐帕迪,链接不起作用。请提供一个正确的链接,否则我无法理解你的观点:)很抱歉@brazorf,这是正确的链接。这是一个静态图像,我希望这能帮助你理解我的问题。我编辑了sql和php代码来添加产品链接。这就是你要找的吗?嗨@brazorf,谢谢你的持续帮助n这..我还没有尝试过你的编码。我可能有复杂的事情,因为你以前的代码工作得很好。我遇到的问题是用锚标记包装产品。当我指的是从数据库获取url时,我指的是类似于此产品的东西。php?category=forum&subvel=1(这只是一个示例)我可以构建链接没有问题,它只是处理内爆函数,因为我无法在每个函数周围放置锚定标记…现在它更像是一个PHP问题,而不是MySQL现在..嗨Klian,为什么这是一个肮脏的解决方案?编码是冗长的吗?这会产生结果,所以我正朝着正确的方向前进。就像我在回复@brazo时提到的那样rf.introde显示产品,但它们需要是指向其产品页面的链接,但我对该编辑的处理很差。要使这些链接成为链接,我需要通过一个“for each循环”,如;[code]$links=array();foreach($arr as$value){$links[]=“”;}$links\u str=introde(,,$links);echo$links\u str;[/code]嗨@Emo Mosley..当我试图弄明白它时,这个查询与我使用的类似。老实说,我抛出了许多类似的版本。但我认为这是我真正需要的PHP代码来显示我想要的,但我只是不知道要写什么才能达到目的。@D_Azzopardi,我很困惑-你在寻找PHP代码来构建像你这样的网页吗U
Forehead Thermometers - 12 Level Thermometer,Forehead Thermometer
Anaesthsia Thermometers - Clinitrend
Drug Testing Thermometers - Briteline,BriteEvent
$array_results = array();
$query = "select sl.Name, sc.SubCatName from sublevel sl
join subcat1 sc
on sc.CategoryID=sl.CategoryID
and sc.SublevelID=sl.SublevelID
order by sl.Name;"
$result = mysqli_query($dbc, $query) or die(mysqli_error(). "<p>with query;<br />$query");
while($row = mysqli_fetch_array($result)){
$array_results[$row['Name']][] = $row['SubCatName'];
}
foreach ($array_results as $key => $value) {
if(is_array($value)){
echo $key.": ".implode(", ", $value);
}
}