Periotto 0 Denunciar post Postado Novembro 26, 2013 Olá pessoal sou novo com PHP e preciso de uma ajuda. Tenho um sistema onde realizo uma busca por like e a retorno com json. Porém ela nao retorna nada nem mesmo um erro. Desde já agradeço Seguem os códigos Script da pagina de busca <script type="text/javascript"> function pesquisa(){ var nome= $('#nome').val(); console.log("entrou \n"+nome); $.ajax({ url: "../Dao/UserDao.php?acao=pesq?nome="+nome, dataType: "json", success: function(json){ console.log("Teste"); var teste = $.parseJSON(json); var j = json_decode(teste); var msg=""; $.each(j, function(i, item) { msg = "Nome: " + j[i].nome + "\n"; msg += "ID: " + j[i].id + "\n"; msg += "Login: " + j[i].login; i++; }); console.log(msg); } }); } </script> Pagina PHP public function pesquisa() { /*ini_set( 'display_errors', 0 );*/ try { $nome = $_GET['nome']; echo "<script> alert('$nome');</script>"; $query = "SELECT * FROM user where nome like'$nome%'"; $consulta = mysql_query($query); if(mysql_num_rows($consulta) > 0){ $retorno = array(); $i = 0; while($dados = mysql_fetch_array($consulta)){ $retorno[$i]["id"] = $dados["id"]; $retorno[$i]["nome"] = $dados["nome"]; $retorno[$i]["login"] = $dados["login"]; $retorno[$i]["dataCad"] = $dados["dataCad"]; $retorno[$i]["status"] = $dados["status"]; $i++; } $teste= json_encode($rotorno); echo "<script> console.log($teste);</script>"; echo $teste; }else{ echo "Nenhum valor encontardo"; } return $retorno; } catch (PDOException $ex) { echo "Erro: " . $ex->getMessage(); } } Compartilhar este post Link para o post Compartilhar em outros sites
Paulo de Tarso F. M. 24 Denunciar post Postado Novembro 26, 2013 Quando você executa a função pesquisa( ) do JavaScript? E a função pesquisa( ) do PHP? São coisas diferentes... Na página que retorna os dados em JSON, você precisa fazer assim: header("Content-Type: application/json; charset=utf-8"); $return = array(); [ aqui você monta o array que armazenará os dados que serão retornados ] echo json_encode($return); Compartilhar este post Link para o post Compartilhar em outros sites
fabiorossetto 1 Denunciar post Postado Novembro 26, 2013 Tenta assim: <script type="text/javascript"> function pesquisa() { var nome = $('#nome').val(); console.log("entrou \n" + nome); $.ajax({ url: "../Dao/UserDao.php?acao=pesq&nome=" + nome, dataType: "json" }).done(function(json) { var msg = ""; $.each(json, function(i, item) { msg = "Nome: " + item.nome + "\n"; msg += "ID: " + item.id + "\n"; msg += "Login: " + item.login; console.log(msg); }); }); } pesquisa() </script> <? use \PDO as PDO; class Busca{ public function pesquisa(){ $nome = '%'.$_REQUEST['nome'].'%'; $conexao = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password'); $query = $conexao->prepare('SELECT id, nome, login, dataCad, status FROM user WHERE nome LIKE :nome'); $query->bindValue('nome', $nome, PDO::PARAM_STR); $query->execute(); $return = array(); while($row = $query->fetch(PDO::FETCH_ASSOC)){ $return[] = array( 'id'=>$row['id'], 'nome'=>$row['nome'], 'login'=>$row['login'], 'dataCad'=>$row['dataCad'], 'status'=>$row['status'] ); } return $return; } } //seta o tipo de retorno header('Content-Type: application/json', true); //Cria a busca $busca = new Busca(); //Consulta dados $array = $busca->pesquisa(); //converte em string echo json_decode($array); Compartilhar este post Link para o post Compartilhar em outros sites
Periotto 0 Denunciar post Postado Novembro 26, 2013 Quando você executa a função pesquisa( ) do JavaScript? E a função pesquisa( ) do PHP? São coisas diferentes... Na página que retorna os dados em JSON, você precisa fazer assim: header("Content-Type: application/json; charset=utf-8"); $return = array(); [ aqui você monta o array que armazenará os dados que serão retornados ] echo json_encode($return); A função pesquisa( ) do JavaScript é chamada por um onclick na minha pagina de busca. Já dou um encode() nos dados dentro da pagina php o problema é q nao consigo tratar o retorno com json_decode() Compartilhar este post Link para o post Compartilhar em outros sites
fabiorossetto 1 Denunciar post Postado Novembro 26, 2013 se você usar o "done"do ajax ele já te retorna um json <script type="text/javascript"> function pesquisa() { var nome = $('#nome').val(); $.ajax({ url: "../Dao/UserDao.php?acao=pesq&nome=" + nome, dataType: "json", }).done(function(json) { $.each(json, function(i, item) { msg = "Nome: " + item.nome + "\n"; msg += "ID: " + item.id + "\n"; msg += "Login: " + item.login; console.log(msg); }); }); } </script> Compartilhar este post Link para o post Compartilhar em outros sites
Periotto 0 Denunciar post Postado Novembro 26, 2013 Tenta assim: <script type="text/javascript"> function pesquisa() { var nome = $('#nome').val(); console.log("entrou \n" + nome); $.ajax({ url: "../Dao/UserDao.php?acao=pesq&nome=" + nome, dataType: "json" }).done(function(json) { var msg = ""; $.each(json, function(i, item) { msg = "Nome: " + item.nome + "\n"; msg += "ID: " + item.id + "\n"; msg += "Login: " + item.login; console.log(msg); }); }); } pesquisa() </script> <? use \PDO as PDO; class Busca{ public function pesquisa(){ $nome = '%'.$_REQUEST['nome'].'%'; $conexao = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password'); $query = $conexao->prepare('SELECT id, nome, login, dataCad, status FROM user WHERE nome LIKE :nome'); $query->bindValue('nome', $nome, PDO::PARAM_STR); $query->execute(); $return = array(); while($row = $query->fetch(PDO::FETCH_ASSOC)){ $return[] = array( 'id'=>$row['id'], 'nome'=>$row['nome'], 'login'=>$row['login'], 'dataCad'=>$row['dataCad'], 'status'=>$row['status'] ); } return $return; } } //seta o tipo de retorno header('Content-Type: application/json', true); //Cria a busca $busca = new Busca(); //Consulta dados $array = $busca->pesquisa(); //converte em string echo json_decode($array); se você usar o "done"do ajax ele já te retorna um json <script type="text/javascript"> function pesquisa() { var nome = $('#nome').val(); $.ajax({ url: "../Dao/UserDao.php?acao=pesq&nome=" + nome, dataType: "json", }).done(function(json) { $.each(json, function(i, item) { msg = "Nome: " + item.nome + "\n"; msg += "ID: " + item.id + "\n"; msg += "Login: " + item.login; console.log(msg); }); }); } </script> cara troquei todo o meu codigo pra fazer um teste e tbm nao deu certo. Mas agradeço pela ajuda Compartilhar este post Link para o post Compartilhar em outros sites
Paulo de Tarso F. M. 24 Denunciar post Postado Novembro 26, 2013 Faça do jeito que sugeri, alterando a página da consulta para retornar um JSON setando um header, e ao invés de usar $.ajax, use $.post, eu faço assim direto e não tenho problema nenhum... $.post('../Dao/UserDao.php', { acao: 'pesq', nome: nome }, function(data) { console.info(data); }); Compartilhar este post Link para o post Compartilhar em outros sites
fabiorossetto 1 Denunciar post Postado Novembro 26, 2013 tenta assim ele tem um "error" se der algum erro no servidor ele joga no console do navegador <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <script type="text/javascript"> function pesquisa() { var val_nome = $('#nome').val(); $.ajax({ type: 'GET', url: "../Dao/UserDao.php", dataType: "json", data: {acao: "pesq", nome: val_nome}//Parametros }).done(function(json) { $.each(json, function(i, item) { console.log("Nome: " + item.nome + " - ID: " + item.id + " - Login: " + item.login); }); }).error(function(erro){ //Se der um erro no servidor ele joga no console console.error(erro.responseText) }); } pesquisa() </script> Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Jacinto 74 Denunciar post Postado Novembro 26, 2013 Calmaê! Qual o sentido disto? Usar um try/catch com retorno de uma exception do PDO sendo que você está usando MySQL::mysql_query? Você tem que usar MySQL::mysql_error ou deixar de usar funções do MySQL e migrar de vez para o PDO. Para iniciar no PDO: :seta: PHP Data Objects :seta: Desenvolvendo com PDO PHP Data Objects | iMasters Voltando ao seu problema: Quando você executa a página de pesquisa, sem ser por AJAX, a página mesmo, no navegador, o que aparece? Aparece os resultados da pesquisa corretamente? Compartilhar este post Link para o post Compartilhar em outros sites
Periotto 0 Denunciar post Postado Novembro 26, 2013 Pessoal agradeço a ajuda de cada um de vcs Resolvi o problema Compartilhar este post Link para o post Compartilhar em outros sites
Paulo de Tarso F. M. 24 Denunciar post Postado Novembro 27, 2013 Como o problema foi resolvido? Nos diga qual foi a solução, dessa forma outras pessoas que por ventura tenham o mesmo problema futuramente poderão resolver o problema com suas dicas... :joia: Compartilhar este post Link para o post Compartilhar em outros sites
Marcos_imasters 288 Denunciar post Postado Junho 27, 2014 por tabem tou com esse poblema quando coloco detro da classe nao fufa sendo que retorno o mesmo resultado Compartilhar este post Link para o post Compartilhar em outros sites