1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
function xxx_admin_stream( $form , & $form_state , $arr_search = array ()) { $output [ 'list' ] = array ( '#type' => 'container' , '#id' => 'xxx_list_wrapper' , ); $output [ 'list' ][ 'words' ] = array ( '#type' => 'textfield' , '#title' => t( '用户名' ), '#size' => 30 ); $output [ 'list' ][ 'buttons' ] = array ( '#type' => 'submit' , '#value' => t( '搜索' ), '#submit' => array ( 'xxx_admin_stream_search_submit' ), ); ...,,,,这是是一堆SQL语句,可以根据传来的搜索参数 $arr_search ,判断不同的查询条件,并输入内容表格 } |
1
2
3
4
5
6
7
|
function xxx_admin_stream_search_submit( $form , & $form_state ) { $words = trim( $form_state [ 'values' ][ 'words' ]); $arr_search [ 'words' ] = $words ; if (! empty ( $arr_search )){ xxx_admin_stream( $form , $form_state , $arr_search ); } } |
我的代码是上面那样写的,没有效果。不知道哪里写错了,请指点一下,谢谢了。
葛老师,经过我的研究,我发现只要$_POST获取就可以了,
葛老师,经过我的研究,我发现只要$_POST获取就可以了,哎,把简单的东西想复杂了。
另外,还是有一个问题,
$keyword = '';
if(isset($_POST['keyword'])){
$keyword = trim($_POST['keyword']);
}
$query = db_select('experience_stream', 'es')->extend('PagerDefault')->extend('TableSort');
$query->fields('es', array( 'action_id', 'exp','created'))
->fields('u', array('name'));
$where = "1,1";
if(!empty($keyword)){
$query ->condition('u.name','%'.$keyword.'%','LIKE');
}
$query->orderByHeader($header);
$query->limit( 30);
$query->join('users', 'u', 'es.uid = u.uid');
$rows = array();
我发现这样写,没有效果,
但是
$query ->condition('u.name','%b%','LIKE');
$query->orderByHeader($header);
$query->limit( 30);
$query->join('users', 'u', 'es.uid = u.uid');
直接这样的时候,却是有用的,我打印$keyword,都是有传递值过来的。不明白哪里写错了,D7好多坑!!后来改成下面这样,也不行
if (array_key_exists('keyword', $_POST)) {
$query->condition('u.name', '%' . db_like($_POST['keyword']) . '%', 'LIKE');
}
参照:http://stackoverflow.com/questions/7828129/drupal-7-case-insensitive-lik...
这里人家遇到的只是大小写问题,我的问题在哪里呢?
你可以通过drupal_set_message将'%'.$
你可以通过drupal_set_message将'%'.$keyword.'%'输出看看,里面到底什么值,是不是左边有空格什么。有时候一点很小的问题,就会导致程序不正常。