【问题标题】:jqGrid search data returned from php file从php文件返回的jqGrid搜索数据
【发布时间】:2011-11-03 17:03:35
【问题描述】:

我也在programmers.stackexchange.com 上发布了这个问题,他们告诉我这不是主题。所以..让我告诉你这个故事。

昨天,在阅读了 jqgrid 的文档 (www.trirand.com/jqgridwiki/doku.php) 之后,我创建了一个简单的表,该表从 php 文件返回的 xml 文件中获取数据。

特别是这里的代码。

index.htmlexample.php

作为一个例子,我使用this one, 但问题是我无法使选择搜索方法以这种方式工作。我想在 editoptions 中使用 dataUrl 但在 wiki 中说这仅适用于 HTML 文件。

我无法想象有一种方法可以操纵 xml 文件的数据以使下拉菜单起作用。

如何让它发挥作用?

【问题讨论】:

    标签: php search select jqgrid


    【解决方案1】:

    最后我在这段代码的帮助下解决了这个问题:

    <?php
    $page = $_GET['page']; // get the requested page
    $limit = $_GET['rows']; // get how many rows we want to have into the grid
    $sidx = $_GET['sidx']; // get index row - i.e. user click to sort
    $sord = $_GET['sord']; // get the direction
    if(!$sidx) $sidx =1;
    
    //array to translate the search type
    $ops = array(
        'eq'=>'=', //equal
        'ne'=>'<>',//not equal
        'lt'=>'<', //less than
        'le'=>'<=',//less than or equal
        'gt'=>'>', //greater than
        'ge'=>'>=',//greater than or equal
        'bw'=>'LIKE', //begins with
        'bn'=>'NOT LIKE', //doesn't begin with
        'in'=>'LIKE', //is in
        'ni'=>'NOT LIKE', //is not in
        'ew'=>'LIKE', //ends with
        'en'=>'NOT LIKE', //doesn't end with
        'cn'=>'LIKE', // contains
        'nc'=>'NOT LIKE'  //doesn't contain
    );
    function getWhereClause($col, $oper, $val){
        global $ops;
        if($oper == 'bw' || $oper == 'bn') $val .= '%';
        if($oper == 'ew' || $oper == 'en' ) $val = '%'.$val;
        if($oper == 'cn' || $oper == 'nc' || $oper == 'in' || $oper == 'ni') $val = '%'.$val.'%';
        return " WHERE $col {$ops[$oper]} '$val' ";
    }
    $where = ""; //if there is no search request sent by jqgrid, $where should be empty
    $searchField = isset($_GET['searchField']) ? $_GET['searchField'] : false;
    $searchOper = isset($_GET['searchOper']) ? $_GET['searchOper']: false;
    $searchString = isset($_GET['searchString']) ? $_GET['searchString'] : false;
    if ($_GET['_search'] == 'true') {
        $where = getWhereClause($searchField,$searchOper,$searchString);
    }
    
    // connect to the database
    $dbhost = "host_address";
    $dbuser = "db_user";
    $dbpassword = "db_pass";
    $database = "db_name";
    $tablename
    $db = mysql_connect($dbhost, $dbuser, $dbpassword)
    or die("Connection Error: " . mysql_error());
    
    mysql_select_db($database) or die("Error conecting to db.");
    mysql_set_charset('utf8',$database);
    mysql_query("SET NAMES 'utf8'");
    $result = mysql_query("SELECT COUNT(*) AS count FROM $tablename");
    $row = mysql_fetch_array($result,MYSQL_ASSOC);
    $count = $row['count'];
    
    if( $count >0 ) {
        $total_pages = ceil($count/$limit);
    } else {
        $total_pages = 0;
    }
    if ($page > $total_pages) $page=$total_pages;
    $start = $limit*$page - $limit; // do not put $limit*($page - 1)
    $SQL = "SELECT field1, field2, field3, field4, field5 FROM $tablename "
    .$where." ORDER BY $sidx $sord LIMIT $start , $limit";
    $result = mysql_query( $SQL ) or die("Couldn?t execute query.".mysql_error());
    
    if ( stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml") ) {
    header("Content-type: application/xhtml+xml;charset=utf-8"); } else {
    header("Content-type: text/xml;charset=utf-8");
    }
    $et = ">";
    
    echo "<?xml version='1.0' encoding='utf-8'?$et\n";
    echo "<rows>";
    echo "<page>".$page."</page>";
    echo "<total>".$total_pages."</total>";
    echo "<records>".$count."</records>";
    // be sure to put text data in CDATA
    while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
        echo "<row id='". $row[field1]."'>";
        echo "<cell>". $row[field1]."</cell>";
        echo "<cell>". $row[field2]."</cell>";
        echo "<cell><![CDATA[". $row[field3]."]]></cell>";
        echo "<cell>". $row[field4]."</cell>";
        echo "<cell>". $row[field5]."</cell>";
        echo "</row>";
    }
    echo "</rows>";
    ?>
    

    Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      相关资源
      最近更新 更多