jqGrid search with select list and php/mysql

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

jqGrid search with select list and php/mysql

Δημοσίευση από netpumber » 03 Νοέμ 2011 12:52

Καλησπέρα σας.

Λοιπόν διάβασα το documentation του jqgrid και έφτιαξα ενα απλό πίνακα ο οποίος παίρνει τα δεδομένα που του επιστρέφει ένα php αρχείο σε μορφή xml.

Εδώ είναι ο κώδικας.

index.html

Κώδικας: Επιλογή όλων

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http&#58;//www.w3.org/TR/xhtml1/DT&#8230;..">
<html xmlns="http&#58;//www.w3.org/1999/xhtml&quot; xml&#58;lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My First Grid</title>
 
<link rel="stylesheet" type="text/css" media="screen" href="css/smoothness/jquery-ui-1.8.16.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />
 
<script src="js/jquery-1.5.2.min.js" type="text/javascript"></script>
<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script type="text/javascript" src="js/jquery.jqGrid.min.js"></script>

<style>
html, body &#123;
    margin&#58; 0;
    padding&#58; 0;
    font-size&#58; 75%;
&#125;
</style>

<script type="text/javascript">

$&#40;function&#40;&#41;&#123;
    
  mygrid = $&#40;"#list"&#41;;
    
  mygrid.jqGrid&#40;&#123;
    url&#58;'example.php',
    datatype&#58; 'xml',
    mtype&#58; 'GET',
    colNames&#58;&#91;'Inv No','Date', 'Amount','Tax','Total','Notes'&#93;,
    colModel &#58;&#91;
      &#123;name&#58;'invid', index&#58;'invid', width&#58;55&#125;,
      &#123;name&#58;'invdate', index&#58;'invdate', width&#58;90&#125;,
      &#123;name&#58;'amount', index&#58;'amount', width&#58;80, align&#58;'right', edittype&#58;'select', search&#58;true , stype&#58;'select',
      searchoptions&#58;&#123;value&#58;'&#58;All;8&#58;8.00;6&#58;6.00'&#125;&#125;,
      &#123;name&#58;'tax', index&#58;'tax', width&#58;80, align&#58;'right'&#125;,
      &#123;name&#58;'total', index&#58;'total', width&#58;80, align&#58;'right', sortable&#58;true&#125;,
      &#123;name&#58;'note', index&#58;'note', width&#58;150, sortable&#58;false, align&#58;'center'&#125;
    &#93;,
    pager&#58; '#pager',
    rowNum&#58;10,
    rowList&#58;&#91;10,20,30&#93;,
    sortname&#58; 'tax',
    sortorder&#58; 'desc',
    viewrecords&#58; true,
    gridview&#58; true,
    caption&#58; 'My first grid'
  &#125;&#41;;
  // Search toolbar.
  mygrid.jqGrid&#40;'filterToolbar', &#123;stringResult&#58; true, searchOnEnter&#58; false, defaultSearch &#58; "bw"&#125;&#41;;
 
&#125;&#41;;
</script>
 
</head>
<body>

<table id="list"><tr><td/></tr></table>
<div id="pager"></div>

</body>
</html>
example.php

Κώδικας: Επιλογή όλων

<?php
$page = 1; //$_GET&#91;'page'&#93;;
 
// get how many rows we want to have into the grid &#8211; rowNum parameter in the grid
$limit = 9; //$_GET&#91;'rows'&#93;;
 
// get index row &#8211; i.e. user click to sort. At first time sortname parameter -
// after that the index from colModel
$sidx = 'invid'; //$_GET&#91;'sidx'&#93;;
 
// sorting order &#8211; at first time sortorder
$sord = 'invid' ;//$_GET&#91;'sord'&#93;;
 
// if we not pass at first time index use the first column for the index or what you want
if&#40;!$sidx&#41; $sidx =1;

// connect to the MySQL database server
$db = mysql_connect&#40;'localhost', 'user', 'user123'&#41; or die&#40;"Connection Error&#58; " . mysql_error&#40;&#41;&#41;;
$database = 'test';
// select the database
mysql_select_db&#40;$database&#41; or die&#40;"Error connecting to db."&#41;;
 
// calculate the number of rows for the query. We need this for paging the result
$result = mysql_query&#40;"SELECT COUNT&#40;*&#41; AS count FROM invheader"&#41;;
$row = mysql_fetch_array&#40;$result,MYSQL_ASSOC&#41;;
$count = $row&#91;'count'&#93;;
 
// calculate the total pages for the query
if&#40; $count > 0 && $limit > 0&#41; &#123;
              $total_pages = ceil&#40;$count/$limit&#41;;
&#125; else &#123;
              $total_pages = 0;
&#125;
 
// if for some reasons the requested page is greater than the total
// set the requested page to total page
if &#40;$page > $total_pages&#41; $page=$total_pages;
 
// calculate the starting position of the rows
$start = $limit*$page &#8211; $limit;
 
// if for some reasons start position is negative set it to 0
// typical case is that the user type 0 for the requested page
if&#40;$start <0&#41; $start = 0;
 
// the actual query for the grid data
$SQL = "SELECT invid, invdate, amount, tax, total, note FROM invheader ORDER BY $sidx , $sord LIMIT $start , $limit";
$result = mysql_query&#40; $SQL &#41; or die&#40;"Couldn't execute query.".mysql_error&#40;&#41;&#41;;
 
// we should set the appropriate header information. Do not forget this.
header&#40;"Content-type&#58; text/xml;charset=utf-8"&#41;;
 
$s  = "<?xml version='1.0' encoding='utf-8'?>";
$s .= "<rows>";
$s .= "<page>".$page."</page>";
$s .= "<total>".$total_pages."</total>";
$s .= "<records>".$count."</records>";

// be sure to put text data in CDATA
while&#40;$row = mysql_fetch_array&#40;$result,MYSQL_ASSOC&#41;&#41; &#123;
    $s .= "<row id='". $row&#91;'invid'&#93;."'>";            
    $s .= "<cell>". $row&#91;'invid'&#93;."</cell>";
    $s .= "<cell>". $row&#91;'invdate'&#93;."</cell>";
    $s .= "<cell>". $row&#91;'amount'&#93;."</cell>";
    $s .= "<cell>". $row&#91;'tax'&#93;."</cell>";
    $s .= "<cell>". $row&#91;'total'&#93;."</cell>";
    $s .= "<cell><!&#91;CDATA&#91;". $row&#91;'note'&#93;."&#93;&#93;></cell>";
    $s .= "</row>";
&#125;
$s .= "</rows>";
 
echo $s;

?>
Το θέμα είναι οτι δεν μπορώ να κάνω το search να δουλέψει με τo select.

Αυτό που είχα σκοπό να κάνω είναι κάτι σαν το παρακάτω.
http://www.ok-soft-gmbh.com/jqGrid/Simp ... olbar1.htm

Υποψιάζομαι πως φταίει ο τρόπος που επιστρέφω τα δεδομένα.
Έχετε κάποια ιδέα για το πώς μπορεί να λυθεί ?

Ευχαριστώ εκ των προτέρων.

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης