maike 0 Denunciar post Postado Fevereiro 26, 2008 Sou iniciante, peguei um exemplo de grid na net e modifiquei pra se adequar ao que eu queria, o resultado é esse : http://www.bma.com.br/suporte/assistec/soaurce/ O problema é que a busca não funciona, alguem tem alguma ideia do q possa ser? Php <?php include_once("JSON/JSON.php"); $json = new Services_JSON(); mysql_connect("localhost", "user", "senha"); mysql_select_db("banco"); $inicio = isset($_POST['start']) ? $_POST['start'] : 0; $limite = isset($_POST['limit']) ? $_POST['limit'] : 24; $rs = mysql_query("SELECT * FROM assis_tec"); $total = mysql_num_rows($rs); $rs = mysql_query("SELECT * FROM assis_tec LIMIT $inicio, $limite"); $arr = array(); while($obj = mysql_fetch_object($rs)) { $arr[] = $obj; } echo $cb . '({"total":"' . $total . '","resultado":' . $json->encode($arr) . '})'; ?> ja coloquei com o where, sem e fica tudo a mesma coisa, nao busca nada o codigo js é esse Ext.onReady(function(){ Ext.ux.menu.RangeMenu.prototype.icons = { gt: 'img/greater_then.png', lt: 'img/less_then.png', eq: 'img/equals.png' }; Ext.ux.grid.filter.StringFilter.prototype.icon = 'img/find.png'; var myRecordObj = Ext.data.Record.create([ {name:'razao_social'}, {name:'numserie'}, {name:'modelo'}, {name:'nfiscal_e'}, {name:'cnpj'}, {name:'numos'}, {name:'numosaut'}, {name:'nfiscal_s'}, {name:'correio'} ]); ds = new Ext.data.GroupingStore({ proxy: new Ext.data.HttpProxy({ url:'listar_usuarios.php', method: 'POST' }), reader: new Ext.data.JsonReader({ id: 'id', totalProperty: 'total', root: 'resultado' }, myRecordObj), sortInfo: {field: 'razao_social', direction: 'ASC'}, remoteSort: false }); var filters = new Ext.ux.grid.GridFilters({filters:[ {type: 'string', dataIndex: 'razao_social'}, {type: 'string', dataIndex: 'numserie'}, {type: 'string', dataIndex: 'modelo'}, {type: 'string', dataIndex: 'nfiscal_e'}, {type: 'string', dataIndex: 'cnpj'}, {type: 'string', dataIndex: 'numos'}, {type: 'string', dataIndex: 'numosaut'}, {type: 'string', dataIndex: 'nfiscal_s'}, {type: 'string', dataIndex: 'correio'} ]}); var cm = new Ext.grid.ColumnModel([{ dataIndex: 'razao_social', header: 'Razao', width: 250 }, { dataIndex: 'numserie', header: 'Numero de Serie', width: 95 }, { dataIndex: 'modelo', header: 'Modelo', width: 95 }, { dataIndex: 'nfiscale', header: 'Nota Fiscal E', width: 85 }, { dataIndex: 'cnpj', header: 'CNPJ', width: 115 }, { dataIndex: 'numos', header: 'Numero O.S.', width: 85 }, { dataIndex: 'numosaut', header: 'Numero O.S. Autorizada', width: 130 }, { dataIndex: 'nfiscal_s', header: 'Nota Fiscal S', width: 73 }, { dataIndex: 'correio', header: 'Correio', width: 53 }]); cm.defaultSortable = true; var grid = new Ext.grid.GridPanel({ id: 'example', ds: ds, cm: cm, enableColLock: false, loadMask: true, view: new Ext.grid.GroupingView(), plugins: filters, height:560, width:985, el: 'grid-example', bbar: new Ext.PagingToolbar({ store: ds, pageSize: 24 }) }); grid.render(); ds.load({params:{start: 0, limit: 24}}); }); Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 26, 2008 Isso é facil, mas se voce quer fazer a pesquisa via PHP voce precisa mecher no seu codigo, ja se for pesquisar no datagrid só ver onde voce errou eu prefiro fazer a pesquisa no banco, dai pra isso voce precisa montar o arquivo php com os dados da pesquisa por exemplo quando voce faz uma pesquisa ele envia os campos: dir filter limit sort start o filter é um array com os seguintes itens: filtro[]["data"]["comparison"] filtro[]["data"]["type"] filtro[]["data"]["value"] filtro[]["field"] o campo comparison tem as seguintes opções 'GT' => '>' 'LT' => '<', 'GTE' => '>=', 'LTE' => '<=', 'EQ' => '=', 'NEQ' => '!=', 'LIKE' => 'LIKE', 'IN' => 'IN', 'NOTIN' => 'NOT IN' por isso o arquivo php vai ficar um pouco complicado, mas se quiser eu te ajudo a montar ele qualquer duvida pode postar que de EXTjs eu entendo bem. Compartilhar este post Link para o post Compartilhar em outros sites
maike 0 Denunciar post Postado Fevereiro 26, 2008 voi precisar de sua ajuda sim, acho q entendi como funciona, o problema é montar esse php agora opa, achei dois codigos aqui DatabaseFilter <?php final class Direction { const ASC = 0; const DESC = 1; } final class Comparison { public static function GT(){return new Comparison(">");} public static function LT(){return new Comparison("<");} public static function GTE(){return new Comparison(">=");} public static function LTE(){return new Comparison("<=");} public static function EQ(){return new Comparison("=");} public static function NEQ(){return new Comparison("!=");} public static function LIKE(){return new Comparison("LIKE");} public static function IN(){return new Comparison("IN");} public static function NOTIN(){return new Comparison("NOT IN");} private $sql; public function __construct($sql){ $this->sql = $sql; } public static function valueOf($string){ $methods = array('GT', 'LT', 'GTE', 'LTE', 'EQ', 'NEQ', 'LIKE', 'IN', 'NOTIN'); $string = strtoupper($string); if(in_array($string, $methods)) return Comparison::$string(); throw new Exception("comparison ".$string." not found"); } public function __toString(){ return $this->sql; } } abstract class WhereClause { public $field; public /*Comparison*/ $comparison; public $value; public function __construct($field, $value, Comparison $comparison) { $this->field = $field; $this->value = $value; $this->comparison = $comparison; } public abstract function setFieldValue(Statement $stmt, $paramOffset); } class ListWhereClause extends WhereClause { public function __construct($field, Array $value, $inclusive){ parent::__construct($field, $value, $inclusive ? Comparison::IN() : Comparison::NOTIN()); } public function __toString(){ if(count($this->value) > 0){ $string = ""; $string.= $this->field; $string.= ' '; $string.=$this->comparison; $string.=" ("; for($i=0, $len=count($this->value); $i<$len; $i++){ $string.= "?"; if($i < $len - 1) $string.=','; } $string.=')'; return $string; } else { return "0"; } } public function setFieldValue(Statement $stmt, $paramOffset) { foreach($this->value as $val) $stmt->setString($paramOffset++, $val); return $paramOffset; } } class NumericWhereClause extends WhereClause { public function __construct($field, $value, Comparison $comp){ parent::__construct($field, $value, $comp); } public function __toString(){ return $this->field . " " . $this->comparison . " ?"; } public function setFieldValue(Statement $stmt, $paramOffset){ $stmt->setFloat($paramOffset++, $this->value); return $paramOffset; } } class StringWhereClause extends WhereClause{ public function __construct($field, $value, Comparison $comparison) { parent::__construct($field, $value, $comparison); } public function __toString(){ return $this->field . " " . $this->comparison . " ?"; } public function setFieldValue(Statement $stmt, $paramOffset) { $stmt -> setString($paramOffset++, '%' . $this->value . '%'); return $paramOffset; } } class DateWhereClause extends WhereClause { public function __construct($field, $value, Comparison $comp){ parent::__construct($field, $value, $comp); } public function __toString(){ switch($this->comparison->__toString()){ case ">": case ">=": case "<": case "<=": return "TIMESTAMPDIFF(DAY, ?, " . $this->field . ") " . $this->comparison . " 0"; case "=": return "DATE_FORMAT(" . $this->field . ", '%Y-%m-%d') = DATE_FORMAT(?, '%Y-%m-%d')"; default: throw new RuntimeException("Invalid comparison type for date field: " . $comparison); } } public function setFieldValue(Statement $stmt, $paramOffset) { $stmt -> setDate($paramOffset++, $this->value); return $paramOffset; } } class BooleanWhereClause extends WhereClause { public function __construct($field, $value) { parent::__construct($field, $value, Comparison::EQ()); } public function __toString(){ return $this->field . " = ?"; } public function setFieldValue(Statement $stmt, $paramOffset) { $stmt->setBoolean($paramOffset++, $this->value); return $paramOffset; } } class NullWhereClause extends WhereClause { public function __construct($field, $isNull) { parent::__construct($field, $isNull, Comparison::EQ()); } public function __toString(){ return $this->value ? $this->field . " IS NULL" : " IS NOT NULL"; } public function setFieldValue(Statement $stmt, $paramOffset) { return $paramOffset; } } class DatabaseFilter { public /*List<WhereClause>*/ $where; public /*String*/ $orderField; public /*Direction*/ $orderDir; public $offset; public $limit; } ?> ExtTableFilter <?php class ExtTableFilter extends DatabaseFilter { //private static final DateFormat DF = SimpleDateFormat.getDateInstance(DateFormat.SHORT); public function __construct(Request $request, $offsetParam="start", $limitParam="limit", $sortParam="sort", $sortDirParam="dir", $filtersParam="filters") { $this->offset = $offsetParam != null && $request->getParameter($offsetParam) != null ? intval($request->getParameter($offsetParam)) : -1; $this->limit = $offsetParam != null && $request->getParameter($limitParam) != null ? intval($request->getParameter($limitParam)) : -1; $this->orderField = $request->getParameter($sortParam); $this->orderDir = $request->getParameter($sortDirParam) != null ? $request->getParameter($sortDirParam) : null; $this->parseWhereClause($request); } private function parseWhereClause(Request $request) { $this->where = array(); $i = 0; $filters = $request->getParameter("filter"); if(count($filters) > 0){ while(isset($filters[$i]) && isset($filters[$i]['field'])){ $filter = $filters[$i]; $field = $filter['field']; $type = isset($filter['data']['type'])?$filter['data']['type']:null; $value = isset($filter['data']['value'])?$filter['data']['value']:null; if("string" == $type){ $this->where[]= (new StringWhereClause($field, $value, Comparison::LIKE())); } else if("list" == $type){ $value = explode(',', $value); $this->where[]= (new ListWhereClause($field, $value, true)); } else if("numeric" == ($type)) { $comp = Comparison::valueOf(strtoupper($filter['data']['comparison'])); $this->where[]= (new NumericWhereClause($field, floatval($value), $comp)); } else if("date" == $type){ $comp = Comparison::valueOf(strtoupper($filter['data']['comparison'])); $this->where[]= (new DateWhereClause($field, $value, $comp)); } else if("boolean" == ($type)){ $this -> where[]= (new BooleanWhereClause($field, intval($value)==1 || $value == 'true')); } else if("null" == ($type)){ $this -> where[]= (new NullWhereClause($field, intval($value)==1)); } $i++; } } } } ?> agora oq eu devo fazer? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 26, 2008 isso mesmo esses arquivos ja estao prontos pra usar se voce pegou um exemplo do datagrid pronto só editar os dados do banco e montar as colunas nao tem segredo e ira funcionar tudo de acordo, só tome cuidado pra nao errar em alguma coisa, que ira funcionar seguindo o exemplo Compartilhar este post Link para o post Compartilhar em outros sites
osgregs 0 Denunciar post Postado Fevereiro 26, 2008 Olá Maike você poderia dizer onde você baixou esse datagrid?... Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 26, 2008 http://extjs.com/blog/2007/11/26/extended-...-filter-plugin/ http://extjs.com/forum/showthread.php?t=14503 baixe o source http://extjs.com/forum/showthread.php?t=14503&page=3 baixe tbm o phpFilters.zip http://ccinct.com/lab/filter-grid/ site com exemplo e codigo fonte Compartilhar este post Link para o post Compartilhar em outros sites
maike 0 Denunciar post Postado Fevereiro 26, 2008 mas nao entendo direito, dessa forma ele nao precisa das strings de conexão? você nao teria algum exemplo do php montado pra eu me basear? obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 26, 2008 Precisa sim, só baixar o phpFilters.zip e ver os exemplos das paginas PHP ele nao precisa de string de conexao quando ele pesquisa nas paginas ja carregadas do datagrid mas como as vezes um banco de dados tem muitos registros fica inviavel carregar tudo via javascript, fica muito pesado entao o certo é carregar um pouco e pesquisar o resto via PHP/Mysql Compartilhar este post Link para o post Compartilhar em outros sites
maike 0 Denunciar post Postado Fevereiro 26, 2008 então mas nos exemplos não tem a string de conexão, devo adiciona-la? no meu js eu devo chamar os dois php? você tem msn? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 26, 2008 http://extjs.com/forum/showthread.php?t=18435 baixe o grid-php Compartilhar este post Link para o post Compartilhar em outros sites
maike 0 Denunciar post Postado Fevereiro 26, 2008 sim, eu ja baixei, eu quero saber aonde q ele ta chamando o DatabaseFilter e o ExtTableFilter Compartilhar este post Link para o post Compartilhar em outros sites
maike 0 Denunciar post Postado Fevereiro 26, 2008 quando eu faço a busca e dou um debug no firebug ele me retrona isso http://localhost/soaurce/listar_usuarios2....%5Bvalue%5D=rui (172ms) isso mostra q ele faz a busca não? so q nao ta filtrando Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 27, 2008 Entao os exemplos que passei, estao completos e funcionando certo, basta tomarem cuidado na hora de trocar o banco e os campos, pois se rodarem o exemplo do jeito que ele foi baixado verao que ele ta funcionando certo Entao os exemplos que passei, estao completos e funcionando certo, basta tomarem cuidado na hora de trocar o banco e os campos, pois se rodarem o exemplo do jeito que ele foi baixado verao que ele ta funcionando certo Compartilhar este post Link para o post Compartilhar em outros sites
maike 0 Denunciar post Postado Fevereiro 27, 2008 então, instalei aqui o grid-php pra testar e ver se tava tudo funcionando mesmo, ele só busca na página ativa, nao busca no banco, oq eu to fazendo errado? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 27, 2008 você precisa mudar a opção, e colocar local:false exemplo: var filters = new Ext.ux.grid.GridFilters({ local:false, Compartilhar este post Link para o post Compartilhar em outros sites
maike 0 Denunciar post Postado Fevereiro 27, 2008 então fabyo, mudei pra false e agora ele não faz a busca nem na página ativa this.filters = new Ext.ux.grid.GridFilters({ local:true, filters:[ {dataIndex: primaryKey, type: 'numeric'}, {dataIndex: 'razao_social', type: 'string'}, {dataIndex: 'numserie', type: 'numeric'} ] }); Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 27, 2008 Entao agora só debugar e ver o que ta acontecendo com o firebug, voce ve se os campos estao sendo enviados, e o que o datagrid ta recebendo de retorno da pesquisa se tiver como você colocar o seu exemplo online eu consigo debugar pra você, senao você vai ter que achar o erro ai Compartilhar este post Link para o post Compartilhar em outros sites
maike 0 Denunciar post Postado Fevereiro 27, 2008 filter[0][data][type] string filter[0][data][value] alcoa filter[0][field] company limit 10 start 0 task readStock Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 27, 2008 e a pagina que envia os dados esta saindo certo? Compartilhar este post Link para o post Compartilhar em outros sites
maike 0 Denunciar post Postado Fevereiro 27, 2008 oi fabyo, da uma olhada aqui http://www.bma.com.br/suporte/assistec/pesquisa/ so ta fazendo a busca na pagina ativa, ainda nao descobri oq é Compartilhar este post Link para o post Compartilhar em outros sites