php后台查询功能实现,后台查询(搜索)管理功能该怎么实现? | Think in Drupal

问题: 后台查询(搜索)管理功能该怎么实现?

解答:

在Drupal中么?

1,上面的查询,每个过滤条件都可以保存到$_SESSION中,使用表单API实现,当点击查询时,在表单的submit函数中,处理查询操作。

2,下面的使用table显示。

3,分页有专门的分页函数,http://www.thinkindrupal.com/node/958

大概的框架,你需要按照下面的思路进行细化,并且设计数据库表结构,以及具体的实现:

页面菜单回调:

mymodule__menu{

}

mymodule__page{

$output= '';

$output .=  drupal_get_form('mymodule_searchuser');

$output .= mymodule_get_search_result_table();

return;

}

表单实现:

mymodule_searchuser(){

$form = array();

...

return $form;

}

表单处理:

mymodule_searchuser_submit(){

//这里把form_state中的表单元素的值存放到对应的Session中。

比如$_SESSION['start'] = $form_state['values']['start'];

}

mymodule_get_search_result_table(){

$start = $_SESSION['start'];

....

根据上面的3个过滤条件,生成SQL,并查询数据库,将返回的结果放到table中,

最后返回输出 $output;

.....

return $output;

}

反馈: 收到了,之前没有想到用session实现。

只想着用 像block模块一样,在模块中是用主题函数,页面内容就是默认搜索(所有搜索参数为空)结果,然后在表单提交查询符合条件的。

这样有个问题:搜索后都放入session中,也就是说无论什么时候点开这个页面都是这个搜索结果只要在这个session周期内,无法返回到默认搜索结果状态,除非所有搜索条件全部为空再次搜索一下才行。

若是在 mymodule_page(){

令搜索条件($_session['star']) = null ;

翻页就无法实现了,因为我发现,翻页一次就貌似调用这个 mymodule_page()一次,

($_session['star']) = null 这样的话就等于翻页的时候把session = null 了,条件又没了。

}

能不能 在下次点击回来的时候 ,$_session['star'] = null 一下,这样问题就解决了。

难道不能用 $_POST 提交到本页面?

解答:

可以这样.但是很多时候,Drupal内部的表单,都是可以记录最近一次的状态的.

不可以用Post.

Drupal的Session是存放在数据库中的,简单的字段,没有特别大的影响.

mymodule__page{

$output= '';

$output .=  drupal_get_form('mymodule_searchuser');

$output .= mymodule_get_search_result_table();

//在这里unset一下就可以了,返回output之前。

unset($_session['star']);

unset($_session['end']);

这样下次访问的时候,就是空的了

return $output ;

}

总结:这是使用Drupal,作为框架进行开发,经常遇到的问题,一个页面,上面是一个表单,用来查询(过滤)内容,下面是一个table。除了上面所写的框架性代码,这里需要注意的是$_SESSION的应用,很多学过PHP的人,刚学Drupal的时候,很不适应这种方式。POST的方式,不是Drupal的方式,是一种PHP的解决办法。在页面直接传递参数,Drupal中最地道的方式就是使用$_SESSION。

Drupal的$_SESSION是保存在数据库中的,Drupal自己对PHP的会话作了自己的实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值