Php Mysql smarty从多个表获取数据
我有个问题。我解决不了。我不擅长PHP MySQL 我有三张桌子 第一个表:linkss-->行:linkid、link、orderlink 第二个表:子链接SS1-->行:子链接1ID、子链接1、ordersublink1、链接、linkid 第三个表:sublinkss2-->行:sublink2id、sublink2、ORDERSSUBLINK2、sublink1、sublink1idPhp Mysql smarty从多个表获取数据,php,mysql,smarty,Php,Mysql,Smarty,我有个问题。我解决不了。我不擅长PHP MySQL 我有三张桌子 第一个表:linkss-->行:linkid、link、orderlink 第二个表:子链接SS1-->行:子链接1ID、子链接1、ordersublink1、链接、linkid 第三个表:sublinkss2-->行:sublink2id、sublink2、ORDERSSUBLINK2、sublink1、sublink1id $get_data=mysql_query("select linkss.link, sublinks
$get_data=mysql_query("select linkss.link, sublinkss1.sublink1, sublinkss2.sublink2 from linkss,sublinkss1, sublinkss2 where sublinkss1.linkid=linkss.linkid and sublinkss2.sublink1id=sublinkss1.sublink1id order by orderlink, ordersublink1, ordersublink2");
while ($row=mysql_fetch_assoc($get_data)) {
$data[$row["link"]][$row["sublink1"]][$row["sublink2"]]=array($row["link"],$row["sublink1"],$row["sublink2"]);
}
$smarty = new Smarty();
$smarty->assign('data',$data);
这是第三方物流文件吗
<ul>
{foreach key=link from=$data item=linkss}
<li><a href="#">{$link}</a>
<ul>
{foreach key=sublink1 item=sublinkss1 from=$linkss }
<li><a href="#">
{$sublink1}
</a>
<ul>
{foreach key=sublink2 item=sublinkss2 from=$sublinkss1 }
<li><a href="#">
{$sublink2}
</a>
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
{foreach key=linkfrom=$data item=linkss}
-
{foreach key=sublink1 item=sublinkss1 from=$linkss}
-
{foreach key=sublink2 item=sublinkss2 from=$sublinkss1}
-
{/foreach}
{/foreach}
{/foreach}
例如,一些数据存储在数据库中,我希望输出如下
<ul>
<li>Home Page
<ul><li>Projects</li></ul>
</li>
<li>About Us
<ul><li>History</li></ul>
<ul><li>Products
<ul><li>Product1</li></ul>
<ul><li>Product2</li></ul>
<ul><li>Product3</li></ul>
</li></ul>
</li>
<li>Contact Us</li>
</ul>
- 主页
- 项目
- 关于我们
历史
- 产品
- 产品1
- 产品2
- 产品3
- 联系我们
但这些代码没有正常工作。我尝试使用内部连接和左连接,但我无法处理它。您能帮助我吗。我想您需要类似于您在问题中所写的SQL查询。在这种情况下,您将得到类似的行:
link1,sublink1,subsublink1
link1,sublink1,subsublink2
link1,sublink1,subsublink3
link1,sublink2,subsublink4
link1,sublink2,subsublink5
link1,sublink2,subsublink6
...
link2,sublink3,subsublink7
...
您可以将此结果重新排列为smarty:
current_link = ""; current_sublink = "";
desired_array = array();
foreach ($result as $r) {
$desired_array[$r["link"]]["sublinks"][$r["sublink1"]][] = $r["sublink2"];
}
如果我写的正确,您的结果将转换为如下数组:
array(
"link1" => array(
"sublinks" => array(
"sublink1" => array("subsublink1","subsublink2",...),
"sublink2" => array("subsublink3","susbulink4",...),
...
)
),
"link2" => array(
// same as link1
)
)
如果你有一个没有子链接的链接,你需要从链接左侧加入子链接1上的。。。在…
上左键连接子链接2,而不是链接、子链接1、子链接2中的,您需要对PHP代码进行一些修改
在smarty中:您需要嵌套的foreach
:
<ul>
{foreach from=$desired_array key=link item=link_item}
<li>{$link}
<ul>
{foreach from=$link_item["sublinks"] key=sublink1 item=sublink_item}
<li>{$sublink1}
<ul>
{foreach from=$sublink item=sublink_item2}
<li>{$sublink_item2}</li>
{/foreach}
</ul></li>
{/foreach}
</ul>
</il>
{/foreach}
{foreach from=$desired_array key=link item=link_item}
- {$link}
{foreach from=$link\u item[“子链接”]key=sublink1 item=sublink\u item}
- {$sublink1}
{foreach from=$sublink item=sublink\u item2}
- {$sublink_item2}
{/foreach}
{/foreach}
{/foreach}
也许这些代码并不完美,但我认为这是一个很好的起点(您可以检查子链接数组的计数是否为零,等等)故障在哪里?SQL的结果是否正常?smarty?生成的html如果任何项为空,则返回$data null数组。例如,它无法打印上面的输出。因此,您是否希望使用具有类似项的数组:数组(“名称”=>“菜单1”,“子菜单”=>数组(数组(“名称”=>“子菜单1”,“子菜单”=>数组(…)),数组(“名称”=>“子菜单2”,“子菜单”=>数组(…)).对吗?非常感谢你的回复…我学到了很多…我会换桌子…我发现这是做菜单的…看起来不错…也许这会比我的跑得更快…这是