Jump to content
Fabyo

DataGrid completo

Recommended Posts

Agora não ta Salvando...

Cotinuo usando o Modelo 6

Pra quem estiver lendo o post, o código completo do arquivo que estamos analizando, 'salvar.php' é:

 

<?php

include_once("JSON/JSON.php");

$json = new Services_JSON();

$dados = $json->decode($_POST["data"]);

 

mysql_connect("localhost", "root", "");

mysql_select_db("sistema");

 

for($i = 0; $i < count($dados); $i++){

$novo = isset($dados[$i]->newRecord) ? $dados[$i]->newRecord : false;

$id = isset($dados[$i]->id_usuario) ? $dados[$i]->id_usuario : false;

$nome = $dados[$i]->nome;

$email = $dados[$i]->email;

$data = isset($dados[$i]->data_cadastro) ? $dados[$i]->data_cadastro : '0000-00-00';

$news = $dados[$i]->news ? "1" : 0;

 

//$data = implode("-", array_reverse(explode("/", $data)));

if($novo){

$sql = "INSERT INTO usuarios (id_usuario, nome, email, data_cadastro, news)

VALUES (

NULL ,

'$nome',

'$email',

'$data' ,

'$news'

) ";

 

} else {

$sql = "UPDATE usuarios SET

nome = '$nome',

email = '$email',

data_cadastro = '$data',

news = '$news'

WHERE usuarios.id_usuario = $id";

 

}

 

mysql_query($sql);

}

 

echo "{success:true}";

?>

 

 

 

 

Fiz vários testes...

Como o resultado da ação do do arquivo 'salvar.php' é "invisível" criei um gerador de log pra ficar analisando o que está acontecendo por debaixo dos panos...

 

Bom, na segunda linha, o código $dados = $json->decode($_POST["data"]); passa os paramêtros que vêem por "POST"...

Exatamente isso:

[{\"nome\":\"JonasPoli\",\"email\":\"teste@wab.com.br\",\"news\":true,\"newRecord\":true,\"data_cadastro\":\"2007-09-06T00:00:00\"}]

 

tirando os \" fica assim:

[{'nome':'JonasPoli','email':'teste@wab.com.br','news':true,'newRecord':true,'data_cadastro':'2007-09-06T00:00:00'}]

 

...

 

Depois, quando o código chega no laço do "for" , ha sempre uma unica iteração a ser feita...

count($dados) sempre é 1.. mesmo quando são alterados vários registros

 

 

Como o valor do count($dados) sempre é 1, o código passa exatamente uma vez por ...

$novo = isset($dados[$i]->newRecord) ? $dados[$i]->newRecord : false;

$id = isset($dados[$i]->id_usuario) ? $dados[$i]->id_usuario : false;

$nome = $dados[$i]->nome;

$email = $dados[$i]->email;

$data = isset($dados[$i]->data_cadastro) ? $dados[$i]->data_cadastro : '0000-00-00';

$news = $dados[$i]->news ? "1" : 0;

 

E essa parte do código, sempre retorna

 

$novo =

$id =

$nome =

$email =

$data = 0000-00-00

$news = 0

 

e no final, echo "{success:true}"; sempre informa que deu tudo certo... mesmo não dando

 

Creio que estamos com algum problema na conversão dos dados que chegam pelo POST em uma ARRAY legível pelo sistema

Se alguém tiver o mesmo problema, e já tiver solucionado, por favor, me informe a solução

 

Obrigado pela atenção

Share this post


Link to post
Share on other sites

sobre sua primeira duvida que você mesmo respondeu, que era a configuração do banco, você mudou no salvar.php tbm?

 

use firebug para debugar melhor o javascript

Share this post


Link to post
Share on other sites

sobre sua primeira duvida que você mesmo respondeu, que era a configuração do banco, você mudou no salvar.php tbm?

 

use firebug para debugar melhor o javascript

Os configurações estão certas... eu só coloquei no post a versão original porque o meu 'salvar.php' já esta cheia de códigos para a verificação de erros...

 

O código do meu 'salvar.php' está assim:

 

<?phpinclude_once("JSON/JSON.php");$json = new Services_JSON();$dados = $json->decode($_POST["data"]);// inicio codigo para erro	$post_limpo=str_replace('\"',"'",$_POST["data"]);$quantidade=substr_count($post_limpo, '{');$somecontent='-inicio-------------------------------------------------------------------';// fim codigo erro	mysql_connect("192.168.223.128", "polix", ""); mysql_select_db("sistema");					for($i = 0; $i < count($dados); $i++){	$novo  = isset($dados[$i]->newRecord) ? $dados[$i]->newRecord : false;	$id	= isset($dados[$i]->id_usuario) ? $dados[$i]->id_usuario : false;	$nome  = $dados[$i]->nome;	$email = $dados[$i]->email;	$data  = isset($dados[$i]->data_cadastro) ? $dados[$i]->data_cadastro : '0000-00-00';	$news  = $dados[$i]->news ? "1" : 0;					// inicio codigo para erro		$somecontent=$somecontent.'		post[data]= '.$_POST["data"].'		$novo  = '.$novo.'	$id	= '.$id.'	$nome  = '.$nome.'	$email = '.$email.'	$data  = '.$data.'	$news  = '.$news.'		count= '.count($dados).'	post limpo  = '.$post_limpo.'	$quantidade = '.$quantidade.'	$novo = '.$novo.'		';// fim codigo erro									if($novo){		$sql = "INSERT INTO usuarios (id_usuario, nome, email, data_cadastro, news)			VALUES (				NULL , 				'$nome', 				'$email', 				'$data' , 				'$news'				) ";							} else {		$sql = "UPDATE usuarios SET 			nome  = '$nome',			email = '$email',			data_cadastro = '$data',			news = '$news' 			WHERE usuarios.id_usuario = $id";			}		mysql_query($sql);	}// inicio codigo para erro	$filename = 'teste.txt';$somecontent=$somecontent.'--fim------------------------------------------------------------------';if (is_writable($filename)) {	if (!$handle = fopen($filename, 'a')) {		 exit;	}	if (!fwrite($handle, $somecontent)) {		exit;	}}// fim codigo erro	echo "{success:true}";?>

Bom, agora estou usando o 'firebug'

o arquivo 'salvar.php' recebe exatamente

[{"nome":"nome","email":"email","news":"0","newRecord":true},{"nome":"nome","email":"email","news":"0","newRecord":true}]

como eu já havia visto...

 

mas o código count($dados)

continua contando só um...

a variavel $novo está sempre vazia...

e os valores das demais variáveis estão definidos em...

$novo =

$id =

$nome =

$email =

$data = 0000-00-00

$news = 0

 

Sempre assim. Não importa se eu altere um registro no grid, ou insira 200.

 

Obrigado pelo esforço e desculpa o post gigante

Share this post


Link to post
Share on other sites

mto bom o exemplo..

 

tentei adaptar para minha base de dados, mas o grid não aparece:

 

a principio errei algo na deficinção de " var cm = new Ext.grid.ColumnModel( "

 

mudei o nome dos campos para os campos que eu preciso, mas o grid cisma em não aparecer,

alguma ideia por onde começar a olhar o código?

var cm = new Ext.grid.ColumnModel(		[			{				header: "Instância",				dataIndex: 'instancia',				width: 220,				sortable: true,				tooltip: 'Instância',				editor: new Ext.grid.GridEditor(new Ext.form.TextField(					{						allowBlank: false,					}				))			},					{				header: "Número do BA",				dataIndex: 'nrba',				width: 220,				sortable: true,				editor: new Ext.grid.GridEditor(new Ext.form.TextField(					{						allowBlank: false,					}				))			},			{				header: "Observação",				dataIndex: 'obs',				width: 220,				editor: new Ext.grid.GridEditor(new Ext.form.TextField(					{						allowBlank: false,					}				))							},						{				header: "COD",				dataIndex: 'cod',				width: 220,				hidden:true			}					]	);	cm.defaultSortable = true;

Share this post


Link to post
Share on other sites

aparentemente essa parte esta certa, tenta debugar com o firebug pra ver exatamente o que ta acontecendo

Share this post


Link to post
Share on other sites

Perfeito :) parabens Sr

 

unica coisa que na pesquisa ele só faz na página corrente se o usuario quiser pesquisar algo no arquivo todo não da, tem como passar algum parametro para p sql para filtrar e mostrar o que atende o termo pesquisado e ajustar a numeração das paginas?

 

achei um otimo exemplo em : http://www.ricardosantos.com.br/extjs/example-grid.php

 

alguem ai teria os codigos deste ai para aprender mais? ou algo parecido, sem ser inline e pesquisar no banco de dados e não la lista

Edited by Mário Monteiro

Share this post


Link to post
Share on other sites

Agradeço a todos aqui do forum e principalmente o Fabio pelo exemplos postados aqui.

 

Tomara que o nosso amigo polix tenha resolvido seu problema pq eu fique até com dor de cabeça.

 

[{\"nome\":\"JonasPoli\",\"email\":\"teste@wab.com.br\",\"news\":true,\"newRecord\":true,\"data_cadastro\":\"2007-09-06T00:00:00\"}]

 

 

 

Resolvir o problema usando o comando.

o comando retirar a barra invertida.

 

$dados = $json->decode(stripslashes($_POST['data']));

 

segue meu código completo.

 

 

 

<?php

include_once("JSON/JSON.php");

$json = new Services_JSON();

//$dados = $json->decode($_POST["data"]);

//var_dump($json->decode(stripslashes($_POST['data'])));

//file_put_contents('log-salvar.txt',$dados);

//file_put_contents('log-salvar.txt',$json);

mysql_connect("localhost", "root", "");

mysql_select_db("sistema");

 

$dados = $json->decode(stripslashes($_POST['data']));

 

 

for($i = 0; $i < count($dados); $i++){

$novo = isset($dados[$i]->newRecord) ? $dados[$i]->newRecord : false;

$id = isset($dados[$i]->id_usuario) ? $dados[$i]->id_usuario : false;

$nome = $dados[$i]->nome;

$email = $dados[$i]->email;

$data = isset($dados[$i]->data_cadastro) ? $dados[$i]->data_cadastro : '0000-00-00';

$news = $dados[$i]->news ? "1" : 0;

 

if($novo){

$sql = "INSERT INTO usuarios (id_usuario, nome, email, data_cadastro, news)

VALUES (

NULL ,

'$nome',

'$email',

NOW( ) ,

'$news'

) ";

 

} else {

$sql = "UPDATE usuarios SET

nome = '$nome',

email = '$email',

data_cadastro = '2007-08-02',

news = '$news'

WHERE usuarios.id_usuario = $id";

 

}

 

mysql_query($sql);

}

file_put_contents('log-salvar.txt',$sql);

 

echo "{success:true}";

?>

Share this post


Link to post
Share on other sites

Olá, É possível fazer um formulário de cadastro e inserir o grid?Ex.: Nome:Endereço:Telefone:Pessoas para contato: (Esses dados serão inseridos no grid)PS:Copiei o seu grid, e ele nem conecta com a minha BD e já diz que foi salvo com sucesso.Gostaria de um helpObrigada

Share this post


Link to post
Share on other sites

Já peguei o exemplo e deu alguns problemas, tvz por estar utilizando o php 4, ele não permite a edição.

 

Aqui está o exemplo : Grid

 

A minha dúvida é: como ele vai vincular todos os dados do grid com as informações que estarão fora do Grid?

 

Obrigada pela resposta, Fabio!

 

ATT

Share this post


Link to post
Share on other sites

No meu formulário, haverá um mini cadastro (cliente, endereço...blablabla), e um grid onde diariamente alguém fará inserções (como um histórico, por exemplo).

 

Esse histórico, ficará salvo no BD, além das outras informações evidentemente.

 

Quando feita a consulta de um determinado cliente, ele retornará o Grid já preenchido com o histórico do cliente, além dos dados cadastrados.

 

Tks http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Edited by Mário Monteiro

Share this post


Link to post
Share on other sites

bom funciono mais nao totalmenteExt.Form.ComboBox(oque por aki)eu keria quando a pessoa clicar pra editar, ele puxe do banco de dados as "secretarias" e jogar no combobox, como eu faria isso??Obrigado

Share this post


Link to post
Share on other sites

Agradeço a todos aqui do forum e principalmente o Fabio pelo exemplos postados aqui.

 

Tomara que o nosso amigo polix tenha resolvido seu problema pq eu fique até com dor de cabeça.

 

[{\"nome\":\"JonasPoli\",\"email\":\"teste@wab.com.br\",\"news\":true,\"newRecord\":true,\"data_cadastro\":\"2007-09-06T00:00:00\"}]

 

 

 

Resolvir o problema usando o comando.

o comando retirar a barra invertida.

 

$dados = $json->decode(stripslashes($_POST['data']));

Olá! Eu estava com o mesmo problema: No localhost funcionava, mas quando testava no servidor online com php mais recente, não gravava. Mas com o stripslashes deu certo, em ambos.

 

Obrigado pela ajuda,

Abraços.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.