- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题。我无法解决它。我不擅长 PHP-MySQL。
我有三个表。
第一个表:linkss --> 行:linkid,link,orderlink
第二个表:sublinkss1 --> 行:sublink1id,sublink1,ordersublink1,link,linkid
第三个表:sublinkss2 --> 行:sublink2id,sublink2,ordersublink2,sublink1,sublink1id
$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);
tpl文件就是这个
<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>
例如一些数据存储在数据库中,我想要这样的输出
<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>
但是这些代码不能正常工作。我尝试使用 inner join 和 left join 但我无法处理它。你能帮帮我吗?
最佳答案
我认为您将需要与您在问题中所写的类似的 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
)
)
如果你的链接没有子链接,你需要 FROM link LEFT JOIN sublink1 ON ... LEFT JOIN sublink2 ON...
而不是 FROM link,sublink1 ,sublink2
并且您需要对 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}
也许这些代码并不完美,但我认为这是一个很好的起点(您可以包括检查子链接数组的计数是否不为零等)
关于php-Mysql-smarty 获取多表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11808513/
我有一个多维关联数组,我将其传递给 smarty 模板。我在我的 smarty 模板中使用下面的代码在我的浏览器中生成显示的两个表。 聪明的代码: {foreach from=$allarr key
如何打印聪明的变量的前n个字符,例如{$ var}的前30个字符? 最佳答案 您应该使用truncate修饰符: {$var|truncate:30} 更多信息here。 关于smarty - Sma
我有这个聪明的代码: {iterate from=fruits item=fruit} .... {/iterate} 我想在这个循环内有一个计数器,它接受一个起始值并增加一直到循环继续。 我应该用
我想自动转义所有模板变量,也就是我想转义它们而不必写|escape每时每刻。因此我启用了 $escape_html选项。 然而,显然 Smarty 处理使用 {capture} 创建的变量。以同样的方
我想在不使用循环的情况下获取 smarty 模板中数组的最后一个元素 assign("arr",$arr); 最佳答案 有一种简单的方法可以使用 variable modifier 在您的 Smart
我正在尝试向我的模板添加一些 smarty 到我想要提供的第一个元素 以及下一个元素 我尝试做这样的事情: {foreach $imageCollection as $image key=s
现在,我的日期显示如下: 19\06\2013 我想要的是这个: 19\6\2013 我目前的 smarty 代码是: {$variable|date_format:"%e\%m\%Y"} 我尝试使
我已经为 smarty 模板创建了一个文件夹结构 f .f1 ..template1.tpl ..test.tpl template1.tpl the template_dir path is poi
我正在尝试向我的模板添加一些 smarty 到我想要提供的第一个元素 以及下一个元素 我尝试做这样的事情: {foreach $imageCollection as $image key=s
我有一个“links.tpl”文件,其中包含具有许多变量的行,如下所示 {assign var=link_main value="index.php"} {assign var=link_log
如何使用Smarty获取URL,类似于JavaScript中的window.location? 我做到了 {$smarty.server.PHP_SELF} 但它不起作用。 最佳答案 你也可以使用这个
我将 Smarty 用于服务器端模板,我想将 Handlebars.js 用于客户端模板,但 Smarty 原因是错误,因为 Handlebars 使用与 Smarty 相同的大括号。 我可以在 Sm
我是 Smarty 的新手。我想对 smarty 中的数组元素进行 mod 操作。以下是我试图实现的代码片段: {if {$que_seq_no}.{$sub_ques_no+1} % 10 == 1
我正在尝试在表单中添加新的谷歌分析事件。所以我有这样的事情: Button 1 到目前为止,一切都很好。但我得到了这个奇怪的聪明错误: Fatal error: Uncaught e
我想用 smarty 编码一个 url。 $var 包含我的数据网址 最佳答案 与 escape modifier您可以设置可选的escape_type 'url' 以返回rawurlencode
哪种将我网站的模板化部分组合在一起的方法是最佳做法?我更喜欢第一种解决方案,但我不确定使用多次调用 display() 是一种好的做法。我正在寻找易于维护和速度。 display('header.tp
我们在所有前端模板中大量使用 Smarty。我观察到以下情况: 当我的Smarty模板类似如下: {if $a == 'A'} {$var1} {else}
在某些项目中,我必须使用 Perl 和 Template Toolkit在其他使用 PHP 和 Smarty模板。您能否以某种方式将两者配置为具有每种语言的公共(public)子集,以便您可以在 sm
如果它为空需要另一个结果,我有聪明的值(value) {get_video_meta video_id=$video_data.id key='test'} 这个值打印“测试”如果这个值是空的否则我该
PHP Smarty 的修改器插件可以访问 Smarty 对象吗? block 和 function 插件类型都将当前的 Smarty 对象作为参数。即 function smarty_functio
我是一名优秀的程序员,十分优秀!