模板引擎(smarty)知识点总结五
---------重点知识:循环------------
/*
smarty 循环之for循环
*/
/*
基本的语法
{for $i=$start to $end step = 1}
表示从$start开始循环 再到$end结束 step 表示步长
{/for}
*/
$msma->assign('start',1);
$msma->assign('end',100);
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> smarty11 </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head> <body>
<pre>
{literal}
模板的循环
{for $i=$start to $end step 1}{/for}
表示从$start开始循环 再到$end结束 step 表示步长
将第一行与最后一行的内容颜色变红
{if $i@first == $i@iteration}
{else if $i@last == $i@iteration}
也可以这样
{if$i@first} {if@last}
因为源码中是只要是first和last就为真其余都为0
{/literal}
</pre>
<P>
{for $i=$start to $end}
{$i}<br/>
{/for}
</p>
<h2>每3个换一行</h2>
<P> {for $i=$start to $end}
{$i} {if ($i%3 == 0)}<br/>{/if}
{/for}
</p>
<p>
输出奇数
{for $i=$start to $end step 2}
{$i}<br/>
{/for}
</p>
<h2>每3个换一行</h2>
<p>
{for $i=$start to $end step 2}
{$i}
{if $i@iteration %3 == 0}<br/>{/if}
{/for}
<h2>一共{$i@total}行</h2>
</p>
<h2>将第一行与最后一行的内容颜色变红</h2>
<p>
{for $i=$start to $end step 5} {if $i@first == $i@iteration}
<font color='red'>{$i} </font>
{else if $i@last == $i@iteration}
<font color='red'>{$i} </font>
{else}
{$i}
{/if}
{/for}
<h2>一共{$i@total}行</h2>
</p>
</body>
</html>
----foreach循环
/*
基本的语法
smarty2的写法---{foreach from=循环的数组 key=k item=item}{/foreach}
smarty3的写法---{foreach $数组 as $k=>$v}{/foreach}
*/
<?php
/************
YJC php 之路
************/
/*
smarty 循环之foreach循环
*/
##########
header('content-type:text/html;charset=utf-8');
require_once 'libs/Smarty.class.php';
require 'MySmarty.class.php';
$msma = new MySmarty();
/*
基本的语法
smarty2的写法---{foreach from=循环的数组 key=k item=item}{/foreach}
smarty3的写法---{foreach $数组 as $k=>$v}{/foreach}
*/
$conn = new mysqli('localhost','root','root','boolshop');
$conn->query('set names utf8');
if($conn->connect_error){
die($conn->connect_error);
}
$sql = 'select * from goods limit 10';
$res = $conn->query($sql);
$data = array();
while($row = $res->fetch_assoc()){
$data[] = $row;
} $msma->assign('goodslist',$data);
$msma->display('temp12.html');
?>
<!DOCTYPE html>
<html>
<head>
<title> smarty12 </title>
<meta charset='utf-8'/>
</head> <body>
{literal}
<pre>
模板的循环
smarty2的写法---{foreach from=循环的数组 key=k item=item}/foreach}
smarty3的写法---{foreach $数组 as $k=>$v}{/foreach}
</pre>
{/literal}
<table height='400' cellspacing='0' cellpadding='0' border='1'>
<tr>
<th>编号</th>
<th>商品序号</th>
<th>商品名</th>
<th>商品价格</th>
</tr>
{foreach key=key item=item from=$goodslist}
{if $item@first || $item@last}
<tr style='background-color:#ccc'>
<td>{$item.goods_id}</td>
<td>{$item.goods_sn}</td>
<td>{$item.goods_name}</td>
<td>{$item.shop_price}</td>
</tr>
{else}
<tr >
<td>{$item.goods_id}</td>
<td>{$item.goods_sn}</td>
<td>{$item.goods_name}</td>
<td>{$item.shop_price}</td>
</tr>
{/if}
{/foreach}
</table>
<pre>方法二</pre>
<table height='400' cellspacing='0' cellpadding='0' border='1'>
<tr>
<th>编号</th>
<th>商品序号</th>
<th>商品名</th>
<th>商品价格</th>
</tr>
{foreach $goodslist as $k=>$v}
{if $v@first || $v@last}
<tr style='background-color:#f69'>
<td>{$v.goods_id}</td>
<td>{$v.goods_sn}</td>
<td>{$v.goods_name}</td>
<td>{$v.shop_price}</td>
</tr>
{else}
<tr >
<td>{$v.goods_id}</td>
<td>{$v.goods_sn}</td>
<td>{$v.goods_name}</td>
<td>{$v.shop_price}</td>
</tr>
{/if}
{/foreach}
</table>
</body>
</html>
/*
smarty 循环之section\ while循环
*/
/*
基本的语法
section 只用于索引数组
{section loop=循环的数组 name=任意符合php变量的名字}
name=index 代表每一次循环的键值 0 1 2 3
{/section}
显示时 $arr[index].键名
{while 变量 条件}
{$i++} or {$i--}
{/while}
smarty数学计算不支持{++$i} {--$i} 因此在while for if
等都不能这样使用
*/
<body>
{literal}
<pre> 基本的语法
section 只用于索引数组
{section loop=循环的数组 name=任意符合php变量的名字}
name=index 代表每一次循环的键值 0 1 2 3
{/section}
显示时 $arr[index].键名
{while 变量 条件}
{$i++} or {$i--}
{/while}
smarty数学计算不支持{++$i} {--$i} 因此在while for if
等都不能这样使用
</pre>
{/literal}
<table height='400' cellspacing='0' cellpadding='0' border='1'>
<tr>
<th>编号</th>
<th>商品序号</th>
<th>商品名</th>
<th>商品价格</th>
</tr>
{section loop=$goodslist name=i}
{if $smarty.section.i.first || $smarty.section.i.last}
<tr style='background-color:#ccc'>
<td>{$goodslist[i].goods_id}</td>
<td>{$goodslist[i].goods_sn}</td>
<td>{$goodslist[i].goods_name}</td>
<td>{$goodslist[i].shop_price}</td>
</tr>
{else}
<tr >
<td>{$goodslist[i].goods_id}</td>
<td>{$goodslist[i].goods_sn}</td>
<td>{$goodslist[i].goods_name}</td>
<td>{$goodslist[i].shop_price}</td>
</tr>
{/if}
{/section}
</table>
<pre>while</pre>
{while $num >=0}
{$num--}<br/>
{/while}
</body>
模板引擎(smarty)知识点总结五的更多相关文章
- PHP的模板引擎smarty原理是什么(整理)
PHP的模板引擎smarty原理是什么(整理) 一.总结 一句话总结:其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者混合为一个ph ...
- PHP模板引擎Smarty内建函数section,sectionelse用法详解
本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...
- Php模板引擎Smarty安装和配置
Smarty 是PHP的一个模板引擎,是由Monte Ohrt 和 Andrei Zmievski 使用PHP语言开发的,发展至今已成为一个非常流行的模板引擎,Smarty 提供了一种易于管理和使用的 ...
- php模板引擎smarty
一. smarty的特点 速度:相对于其他模板引擎,速度较快 编译型:在下次访问模板时直接访问编译文件,不再进行模板重新编译 缓存技术:可以将用户最终看到的HTML文件缓存成一个静态HTML 插件技术 ...
- php模板原理PHP模板引擎smarty模板原理浅谈
mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...
- PHP的模板引擎smarty原理浅谈
mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...
- Smarty模板引擎技术
Smarty模板引擎技术 什么是模板引擎? 什么是Smarty模板引擎? 为何选择Smarty模板引擎? 如何使用Smarty模板引擎? 一.历史背景 场景一:回顾之前编写PHP项目的方式 //链接数 ...
- 推荐13款javascript模板引擎
javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...
- js模板引擎介绍搜集
js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...
- php的模板引擎
设计一个交互式的网站,我们需要关注两个主要的问题:分别是图形用户界面和业务逻辑.例如,一个标准的web开发小组由两三个美工和三个程序员组成,则设计流程是:美工设计者制作了项目的网站的界面模板,然后把它 ...
随机推荐
- c#游戏进程杀手
我认为写博客还是比较重要的,特别是短时间写出一个含有新知识点的软件.这样总结下这次编程经验和再捋顺一下这次编程思路.首先来谈谈为什么想做这个小程序,一是感觉自己太贪玩想控制一下,二是也锻炼下自己的编程 ...
- CCF-201604-3-路径解析
问题描述 试题编号: 201604-3 试题名称: 路径解析 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在操作系统中,数据通常以文件的形式存储在文件系统中.文件系统一般采 ...
- MySQL 性能优化的最佳20多条经验分享(三)(转)
16. 垂直分割 "垂直分割"是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的.(以前,在银行做过项目,见过一张表有100多个字段, ...
- 预防onion比特币勒索病毒,如何快速关闭135,137,138,139,445端口
预防onion比特币勒索病毒,如何快速关闭135,137,138,139,445等端口 如果这种网络端口关闭方法行不通,可以尝试一种新的关闭网络端口方法(比较繁琐)见106楼,补丁安装教程见126 ...
- ThinkPHP的Rbac权限控制
RBAC(Role-Based Access Controll)基于角色的访问控制 在 ThinkPHP3.2.3 中 RBAC 类位于 /ThinkPHP/Library/Org/Util/Rbac ...
- JAVA中静态修饰符static的学习(初学)
静态修饰符static,用于修饰类中的成员变量和成员函数. 用static修饰的成员变量也可叫做类变量. 什么时候使用静态 什么时候定义静态成员变量? 当对象中出现共享数据时,将该数据定义为静 ...
- Java 代码质量
被滥用的instanceof instanceof滥用, 或者直接强转, 大都数情况可以用方法override, 而且应当避免使用isA(), isB()之类的写法; 比如sonA和sonB都继承自p ...
- Windows下编译nginx-rtmp-module
http://nginx.org/en/docs/howto_build_on_win32.html 官网上的操作说明. 官网的方法Nginx编译方法,思路是一致的,只是有几个细节地方需要调整. 需要 ...
- linux个人情况总结
linux主文件夹打不开 killall Nautilus linux下codeblocks编译文件权限不够,将文件建立在用户的目录下
- 百度编辑器的内容改变事件监听bug
先贴上我的初始化代码,可能是用法问题冤枉了百度编辑器,如果是我的用法有问题欢迎大侠们指正 <!DOCTYPE type> <html> <head> <met ...