您的位置:首页 > 编程语言 > PHP开发

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

2010-08-26 14:16 447 查看
关键词: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);


生活还真是有意思!~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐