smarty模板原理和增删改查例题
Smarty模板:(前后端分离)
原理:核心是一个类,先修改配置文件,在使用的时候引入配置文件即可,(init.inc.php)
$smarty->assign("ceshi",$a);//注册变量到模板
$smarty->display("test.html");//前台显示
一、登录:login.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head> <body>
<form action="loginchuli.php" method="post">
<div>用户名:<input type="text" name="uid" /></div>
<div>密码:<input type="password" name="pwd" /></div>
<div><input type="submit" value="登录"/></div>
</form>
</body>
</html>
登录:login.php
<?php
include("../init.inc.php"); //把smarty模板引进
$smarty->display("login.html");//在login.html页面写出登录界面,在login.php里执行
登录处理:loginchuli.php
<?php //login登录处理界面
session_start();
$uid = $_POST["uid"];
$pwd = $_POST["pwd"];
include("../DBDA.php");
$db = new DBDA();
$sql = "select pass from login where username = '{$uid}'";
$mm = $db->StrQuery($sql);
if($pwd != "" && $pwd==$mm)
{
$_SESSION["uid"] = $uid;
header("location:main.php");
}
else
{
header("location:login.php");
}
二、主页面:main.html
#top{ width:100%; height:50px}
#name{ float:right; height:50px; width:100px; text-align:center; line-height:50px; vertical-align:middle}
</style>
</head> <body>
<div id="top">
<div id="name"><{$name}></div>
</div>
<div>人员信息表</div>
<div>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>代号</td>
<td>姓名</td>
<td>性别</td>
<td>民族</td>
<td>生日</td>
<td>操作</td>
</tr>
<{foreach $info as $v}>
<tr>
<td><{$v[0]}></td>
<td><{$v[1]}></td>
<td><{$v[2]|sex}></td> <!--把之前的sex=0,1改为男,女,方法->modifier.sex.php(自写小插件)-->
<td><{$v[3]|nation}></td> <!--把之前的nation=n001,n002改为汉族,回族,方法->modifier.nation.php(自写小插件)-->
<td><{$v[4]}></td>
<td><a href="shanchu.php?code=<{$v[0]}>">删除</a><a href="xiugai.php?id=<{$v[0]}>">修改</a></td><!--给删除,修改传键值,此键值为主键值-->
</tr>
<{/foreach}>
</table>
</div>
</body>
所用组件:
modifier.sex.php
<?php
function smarty_modifier_sex($sex)
{
return $sex?"男":"女"; //ture返回'男',false返回'女'
}
modifier.nation.php
<?php
function smarty_modifier_nation($nation)
{
$db = new MySQLi("localhost","root","2786802","text_zuoye"); //引入DBDA的类不可用,只能写入最原始方法来调用数据库
$sql = "select name from nation where code = '{$nation}'";
$result = $db->query($sql);
$attr = $result->fetch_row();
return $attr[0];
}
主页面:main.php
<?php
session_start();
include("../init.inc.php");
include("../DBDA.php");
$db = new DBDA();
if(empty($_SESSION["uid"])) //判断session是否为空,不为空取值,为空跳登录页面
{
header("location:login.php");
exit;
}
$uid = $_SESSION["uid"];
$sql = "select name from login where username = '{$uid}'";
$name = $db->StrQuery($sql);
$smarty->assign("name",$name); //smarty取到登录的uid,到main.html取出显示
$sqli = "select * from info ";
$attr = $db->Query($sqli);
$smarty->assign("info",$attr); //smarty取到info的数据放到数组,到main.html取出显示
$smarty->display("main.html"); //在本页面显示main.html的页面数据
三、修改页面:xiugai.html
<body>
<form action="gai.php" method="post">
<div><input name="code" type="hidden" value="<{$info[0]}>" /></div>
<div>姓名:<input name="name" type="text" value="<{$info[1]}>" /></div>
<div>性别:
<input type="radio" name="sex" value="1" <{$info[2]|cksex}> />男 <!--改为单选按钮,方法->modifier.ck1/ck.php(自写小插件)-->
<input type="radio" name="sex" value="0" <{$info[2]|cksex1}> />女
</div>
<div>民族:
<!--民族改为下拉菜单显示,在xiugai.php页面查询出nation表的name,通过$nation接收,并且根据主键值通过循环给其所属的民族赋属性checked="checked",默认选中;-->
<select name="nation">
<{foreach $nation as $v}>
<{if $v[0]==$info[3]}>
<option selected="selected" value="<{$v[0]}>"><{$v[1]}></option>
<{else}>
<option value="<{$v[0]}>"><{$v[1]}></option>
<{/if}>
<{/foreach}>
</select>
</div>
<div>生日:<input name="birthday" type="text" value="<{$info[4]}>" /></div>
<input type="submit" value="修改" />
</form>
</body>
modifier_cksex.php
<?php
function smarty_modifier_cksex($sex)
{
return $sex?"checked='checked'":""; //如果为ture,checked='checked'
}
modifier_cksex1.php
<?php
function smarty_modifier_cksex1($sex)
{
return $sex?"":"checked='checked'"; //如果为false,checked='checked'
}
修改页面:xiugai.php
<?php
$id = $_GET["id"];
include("../DBDA.php");
$db = new DBDA();
$sql = "select * from info where code='{$id}'";
$attr = $db->Query($sql);
$sqlnation = "select * from nation";
$attrn = $db->Query($sqlnation);
include("../init.inc.php"); //执行修改要显示页面,把smarty模板引入
$smarty->assign("info",$attr[0]); //$attr[0]赋给info,在html页面$info提取
$smarty->assign("nation",$attrn); //xiugai.html页面民族改下拉菜单时用
$smarty->display("xiugai.html"); //把xiugai.html里面的内容拿过来在本页面显示
删除页面:shanchu.php
<?php
include("../DBDA.php");
$db = new DBDA();
$code = $_GET["code"];
$sql = "delete from info where code='{$code}'";
$db->Query($sql,0);
header("location:main.php");
smarty模板原理和增删改查例题的更多相关文章
- ES 17 - (底层原理) Elasticsearch增删改查索引数据的过程
目录 1 增删改document的流程 1.1 协调节点 - Coordinating Node 1.2 增删改document的流程 2 查询document的流程 1 增删改document的流程 ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面
前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...
- python全栈开发day62-两表操作增删改查,外键,if else模板语法
一.今日内容总结: day62 内容回顾: 1. django有关所有命令: pip install django==1.11.14 django-admin startproject 项目名称 cd ...
- 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器
一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...
- 03: zabbix API接口 对 主机、主机组、模板、应用集、监控项、触发器等增删改查
目录:Django其他篇 01: 安装zabbix server 02:zabbix-agent安装配置 及 web界面管理 03: zabbix API接口 对 主机.主机组.模板.应用集.监控项. ...
- 【Mybatis】简单的mybatis增删改查模板
简单的mybatis增删改查模板: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE map ...
- MyBatis增删改查模板
1. 首先,和Spring整合一下 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=& ...
- CopyOnWriteArrayList的增删改查实现原理
https://www.cnblogs.com/simple-focus/p/7439919.html 篇文章的目的如下: 了解一下ArrayList和CopyOnWriteArrayList的增删改 ...
- elasticsearch 增删改查底层原理
elasticsearch专栏:https://www.cnblogs.com/hello-shf/category/1550315.html 一.预备知识 在对document的curd进行深度分析 ...
随机推荐
- Oralce 常用语句
注:大写代表需要替换掉额 --更新字段名 alter table TABLE rename column COL_OLD to COL_NEW --添加字段名 alter table TABLE ad ...
- POJ3680 Intervals(最小费用最大流)
选择若干条线段使权值最大,并且点覆盖次数不超过k. 建图如下:vs到0建立容量为k费用为0的边:坐标终点到vt连接一条容量为k费用为0的边:对于每两个相邻坐标连接一条容量为INF费用为0的边:对于线段 ...
- [R]R下as.Date()函数的坑
问题描述: 在本地使用as.Date()函数从POSIXct类型中提取date时,出现了日期不一致的错误.导致处理数据时,总是出问题. 还好被领导发现数据有误,不然这个bug不知道还要潜伏多久.尽管如 ...
- 洛谷 P1074 靶形数独 Label:search 不会
题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...
- 【BZOJ1088】[SCOI2005]扫雷Mine 递推
调LCT奔溃,刷水调节一下. #include <iostream> #include <cstdio> #include <cstring> using name ...
- Android --日期控件使用并显示选择的日期
1. main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...
- BZOJ3456: 城市规划
Description 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了. 刚才说过, 阿狸的国家有n个城市, 现在国家需要在某些城市对之间建立一些贸易路线, 使得整个国家的任意两个城市都直接或 ...
- 在WeX5中导入项目
在WeX5中导入项目 首先右击,选择[导入]--[导入] 得到如下的对话框,选择[现有项目到工作空间中] 在导入对话框中选择相应的根目录,选择相应的项目,确定 点击完成即可.这样一个项目就被导入到了W ...
- linux ps指令
ps axjf <==連同部分程序樹狀態
- DataTable在内存中的使用
DataTable表示一个与内存有关的数据表,可以使用工具栏里面的控件拖放来创建和使用,也可以在编写程序过程中根据需要独立创建和使用,最常见的情况是作为DataSet的成员使用,在这种情况下就需要用在 ...