php与smarty结合应对表单get的一个小例子

本文介绍了一种在无数据库的简易网站上实现搜索功能的方法,通过关键词匹配来完成搜索,并展示了使用PHP和Smarty模板引擎的具体实现过程。

关键词:smarty, php, get

 

目的: 给一个简易网站(无数据库)设计简易搜索功能,搜索原理,由于不是基于数据库的,只能采用关键词比对的方法,比如,用户在搜索框中输入某个词,点击搜索按钮,然后程序获取该关键词,与数据库中事先设置好的关键词比对,如果是,则进行下一步的处理,比如跳转,比如展示。

 

index.php

<form action="search.php" method="get"> <input type="text" name="k" value="搜索" /> <input type="submit" title="搜索" value=" " onclick="javascript:if(k.value =='搜索'){ alert('您好像忘记输入关键词了哦?!'); return false;}" /> </form> 

 

search.php 处理页面

<?php require('libs/Smarty.class.php'); $smarty = new Smarty; $smarty->force_compile = true;//最后要注销 $smarty->debugging = false; $smarty->caching = true; $smarty->cache_lifetime = 120; //$smarty->caching = false;//强迫永久编译 //$smarty->clear_all_cache();//清除所有缓存 $smarty->display('search.tpl'); ?> 

 

search.tpl 模板

$keyword= $_GET['k']; $find1 = '保健'; $find2 = '叶酸'; $find3 = '妈妈'; $find4 = '孕'; $find5 = '宝'; $find6 = '婴'; $find7 = '奶粉'; $find8 = '美赞臣'; $find9 = '雅培'; $find10 = '纸尿布'; $find11 = '母婴'; $find12 = '用品'; $pos1 = strpos($keyword, $find1) || strpos($keyword, $find2) || strpos($keyword, $find3) || strpos($keyword, $find4); $pos2 = strpos($keyword, $find5) || strpos($keyword, $find6) || strpos($keyword, $find7) || strpos($keyword, $find8) || strpos($keyword, $find9); $pos3 = strpos($keyword, $find10) || strpos($keyword, $find11) || strpos($keyword, $find12); if ($pos1 != false) { echo "已经搜索到结果,正在为您进行跳转...."; ?> <mce:script language='javascript'><!-- window.location.href='list.php#health'; // --></mce:script> <?php } else if ($pos2 != false){ echo "已经搜索到结果,正在为您进行跳转...."; ?> <mce:script language='javascript'><!-- window.location.href='list.php#health'; // --></mce:script> <?php } else if ($pos3 != false){ echo "已经搜索到结果,正在为您进行跳转...."; ?> <mce:script language='javascript'><!-- window.location.href='list.php#commodity'; // --></mce:script> <?php } else{ ?> 

 

运行,可以,但是很不妥,每次这样添加关键词太麻烦,要改很多地方,于是重写search.tpl 模板

 

<?php $keyword= $_GET['k']; foreach ($find1 as $value1) { if( strpos($keyword, $value1) >-1) { echo "<mce:script language='javascript'><!-- window.location.href='list.php#powder' // --></mce:script>"; } } foreach ($find2 as $value2) { if( strpos($keyword, $value2) !== false) { echo "<mce:script language=javascript><!-- window.location.href=list.php#health // --></mce:script>"; } } foreach ($find3 as $value3) { if( strpos($keyword, $value3) !== false) { echo "<mce:script language=javascript><!-- window.location.href=list.php#commodity // --></mce:script>"; } } ?> 

运行,报错。纠结中...

各种错误,那个烦.....

 

最后研究发现 smarty 自带了 从get 获取 值的方法,这样就不必套用php 来搞定了!紧急更新,最终成功!

{* use '$smarty.get.k' to get the 'k' value in URL eg: index.php?k=xxx *} {assign var="userinput" value=$smarty.get.k} {foreach from=$search.keywords[0] item=words} {$words} - {$userinput} {if strpos($userinput, $words) !== false} } 搞定! {/if} {/foreach} 

 

当然别忘了配置调用它的php文件:

$search = array( //keywords prepared for search 'keywords' => array( array('奶粉','naifen','宝','bao','婴','ying','美赞臣','meizanchen','雅培','yapei'), array('保健','baojian','孕','yun','母','mu','妈','ma'), array('尿','niao','用品','yongpin') ) //其他配置.... ); ... $smarty->assign('search',$search); 

生活还真是有意思!~

转载于:https://www.cnblogs.com/lechie/archive/2010/08/26/2383239.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值