Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá meus amigos.
Estou com uma duvida dentro desse assunto. Eu preciso coler a informação a informação do banco for passada pelo GET id dentro da minha pagina, porém não tenho ideia de como fazer, será que alguém pode ajudar?
A estrutura da URL deve ser a seguinte:
http://www.meusite.com.br/filtro.php?method=filtrarProduto&codigo=1&callback=?
É essa a estrutura..
Desde ja agradeço a ajuda de vocês.
Peços desculpas por não explicar direito, iniciei a pouco tempo com o PHP.
Atraves da URL que irei passar a seguir, é possivel observar que só está sendo exibida as informaçoes relacionadas ao ID passado pela URL, é exatamente isso que quero montar, preciso fazer a pagina recuperar as informações relacionadas atraves do link que irei passar que fica parecido com esse:
Observe que esta sendo filtrado o código 1 que é o ID do produto.
Conseguiu entender?
Sei que é possivel, mas n sei como ser feito. Por isso estou aqui pedindo ajuda.
Essa técnica de passar parâmetros pelo URL chama-se Query String. Leia mais sobre isso, que entenderá como funciona.
Em poucas palavras, você sempre usará $_GET['nome_do_parametro'].
Outra técnica semelhante, mais avançada e profissional, são as URLs Amigáveis (URL Rewriting), que deixa as URLs neste padrão: dominio.com.br/param1/valor1/param2/valor2.
:thumbsup:
Sim, eu conheço essa técnica.
Eu uso em meus sites.
Eu queria uma ideia para recuperar arquivos em uma PÁGINA específica quando o ID for passado pela URL que informei no outro post.
Mesmo assim agradeço a sua ajuda.
Você vai passar o ID pela URL e quer buscar informações na base de dados?
Explique exatamente onde tem dificuldades.
Acho que ainda não entendi. :unsure:
se entendi bem, se estiver usando bancos de dados pesquise sobre "where".
umas dicas legais:
http://www.linhadecodigo.com.br/artigo/75/principais-instrucoes-em-sql.aspx
http://www.linhadecodigo.com.br/artigo/2975/comandos-basicos-em-sql-insert-update-delete-e-select.aspx
se não for isso, foi mal..
>
Você vai passar o ID pela URL e quer buscar informações na base de dados?
Explique exatamente onde tem dificuldades.
Acho que ainda não entendi. :unsure:
Exatamente, eu vou passar o ID pela URL, a estrutura da URL será a seguinte: http://www.meusite.com.br/pagina.php?method=filtrarProduto&codigo=ID&callback=?
A página vai recuperar o ID passado e em seguida joga na tela as informações passadas pelo banco de dados referentes aquele ID. Essa consulta eu irei fazer em uma tabela de produtos e quero que seja exibido apenas o produto referente a esse ID.
Só que a URL precisa ser passada nessa estrutura que informei aí em cima.
Veja um exemplo dessa consulta através do LINK: http://www.imediabrasil.com.br/cursojquerymobile/kwai_produtos.cfc?method=filtrarProduto&codigo=1&callback=?
É exatamente isso que preciso, só que não sei como fazer a recuperação.
Desculpe se não estou sendo claro..
É isso?
function filtrarProduto($param) {
$stmt = $bd->prepare('SELECT * FROM produto WHERE id=?');
$stmt->execute(array($param));
return $stmt->fetch();
}
$param = $_GET['codigo'];
$func = $_GET['method'];
echo json_encode($func($param));Vlw meu amigo, ajudou bastante. Deu certo.
Vlw galera..
>
É isso?
function filtrarProduto($param) {
$stmt = $bd->prepare('SELECT * FROM produto WHERE id=?');
$stmt->execute(array($param));
return $stmt->fetch();
}
$param = $_GET['codigo'];
$func = $_GET['method'];
echo json_encode($func($param));
Consegui fazer a listagem utilizando a função que você passou, porém, só consegui fazer a função em outro arquivo.php, será que vc poderia me ajudar com a função para listar e filtrar os produtos dentro da mesma página?
Como mostra os exemplos:
Listar Produtos: http://www.imediabrasil.com.br/cursojquerymobile/kwai_produtos.cfc?method=getProdutosListagem&callback=listarProdutos
Filtrar Produtos: http://www.imediabrasil.com.br/cursojquerymobile/kwai_produtos.cfc?method=filtrarProduto&codigo=1&callback=?
Observe que está tudo na mesma página, porém muda a partir do ?method...
Poderia me ajudar?
Nessa outra pagina, existe uma função chamada getProdutosListagem?
Nessa outra pagina, existe uma função chamada getProdutosListagem?
Não existe essa função não.
Nesse exemplo aí eu não sei como ele tá usando não, eu só sei que preciso seguir o mesmo modelo.
Pelo o que entendi eu preciso ter as duas funções na mesma página, que serão ativas com a alteração da URL. Certo? Eu consegui listar os arquivos de outra forma e deu certo, porém, quando clico para exibir os detalhes não funciona, porém, eu estou fazendo a listagem em uma página e o filtro em outra página, pelo o que entendi é isso, eu preciso fazer as duas funções na mesma página e fazer elas funcionarem apenas quando eu passar o method.
Porém, não sei como fazer isso, não tenho nem ideia.
Esse exemplo que passei pra vc eu não tenho acesso ao código.
Vou explicar ai você tenta novamente ai:
// Função que será chamada
function filtrarProduto($param) {
$stmt = $bd->prepare('SELECT * FROM produto WHERE id=?');
$stmt->execute(array($param));
return $stmt->fetch();
}
// Aqui fica os parametros que serão enviados para função
$param = $_GET['codigo'];
// Aqui é o nome da função aqui será chamada, no caso é filtrarProduto
$func = $_GET['method'];
// Aqui chamamos a função pelo nome passado na URL, ou seja, se recebermos
// no $_GET['method'] a função deletarUsuario, deve existir uma função deletarUsuario()
// que será chamado pelo PHP. Lembre-se de filtrar as possibilidades para que o usuário
// não chame funções maliciosas
$result = $func($param);
// Aqui pegamos o retorno da função chamada e exibimos ela como JSON
echo json_encode($result);
Se tiver alguma duvida só avisar
>
Vou explicar ai você tenta novamente ai:
// Função que será chamada
function filtrarProduto($param) {
$stmt = $bd->prepare('SELECT * FROM produto WHERE id=?');
$stmt->execute(array($param));
return $stmt->fetch();
}
// Aqui fica os parametros que serão enviados para função
$param = $_GET['codigo'];
// Aqui é o nome da função aqui será chamada, no caso é filtrarProduto
$func = $_GET['method'];
// Aqui chamamos a função pelo nome passado na URL, ou seja, se recebermos
// no $_GET['method'] a função deletarUsuario, deve existir uma função deletarUsuario()
// que será chamado pelo PHP. Lembre-se de filtrar as possibilidades para que o usuário
// não chame funções maliciosas
$result = $func($param);
// Aqui pegamos o retorno da função chamada e exibimos ela como JSON
echo json_encode($result);
Se tiver alguma duvida só avisar
Da outra vez que você passou esta função eu consegui fazer ela funcionar sem nenhuma dúvida, veja no link: http://varandasgastronomia.com.br/app_teste/jsonx.php?method=filtrarProduto&codigo=21&callback=?
Em outra página eu consegui fazer a listagem de todos os produtos que tenho no banco só que de uma outra forma, não utilizei uma função. Por isso não tá dando certo. Eu preciso criar duas funções no mesmo arquivo, uma função chamada getProdutosListagem e outra (que é essa que vc passou) chamada filtrarProduto, eu preciso fazer essas duas funções funcionarem no mesmo arquivo, quando eu passar na URL o valor ?method=getProdutosListagem&callback=listarProdutos ela exibe todos os produtos, quando eu passar o valor: ?method=filtrarProduto&codigo=1&callback=? ela vai exibir apenas o valor passado pelo ID.
Entende?
Entendi, eu acho...
Você só precisa então colocar essas funções no mesmo arquivo ou em um arquivo separado e usar include. Se fizer isso vai funcionar perfeitamente pra quantas funções forem necessárias.
LEMBRE-SE DE FILTAR USANDO UM IF OU UM SWITCH AS FUNÇÕES QUE PODEM SER CHAMADAS PELO USUÁRIO.
>
Entendi, eu acho...
Você só precisa então colocar essas funções no mesmo arquivo ou em um arquivo separado e usar include. Se fizer isso vai funcionar perfeitamente pra quantas funções forem necessárias.
LEMBRE-SE DE FILTAR USANDO UM IF OU UM SWITCH AS FUNÇÕES QUE PODEM SER CHAMADAS PELO USUÁRIO.
Sim, eu entendi, já tentei fazer isso e não deu certo.
Eu não tô conseguindo criar uma função para fazer a listagem, eu tô fazendo da seguinte forma:
// parametros iniciais
$callback = isset($_GET['callback']) ? preg_replace('/[^a-zA-Z0-9$_]/s', '', $_GET['callback']) : false;
header('Content-Type: ' . ($callback ? 'application/javascript' : 'application/json') . ';charset=UTF-8');
header('Access-Control-Allow-Origin: *');
// conexar com banco
$con = mysql_connect('localhost','gastrono_painel','master#01');mysql_select_db('gastrono_painel');
// criar consulta
$produtos = mysql_query("SELECT id_servico, foto_servico, titulo_servico, conteudo_servico FROM servicos");
// criar objeto
$retorno = array();
while ($row = mysql_fetch_object($produtos)) {
$retorno[] = $row;}
// saida
echo ($callback ? $callback . '(' : '') . json_encode($retorno) . ($callback ? ')' : '');
mysql_close($con);
Não tem um getProdutosListagem aí, ela tá só puxando do banco.
Por isso eu preciso criar essa função e colocar as duas juntas.
E fazer o que vc falou no final, um IF para separar elas.
Entendeu?
acho que é isso que vc quer:
// parametros iniciais
$callback = isset($_GET['callback']) ? preg_replace('/[^a-zA-Z0-9$_]/s', '', $_GET['callback']) : false;
header('Content-Type: ' . ($callback ? 'application/javascript' : 'application/json') . ';charset=UTF-8');
header('Access-Control-Allow-Origin: *');
// conexar com banco
$con = mysql_connect('localhost','gastrono_painel','master#01');mysql_select_db('gastrono_painel');
if ($_GET['method'] == 'getProdutosListagem') {
//$resultados = Consulta de produtos
} else if ($_GET['method'] == 'filtrarProduto') {
//$resultados = Consulta com filtros
}
// criar objeto
$retorno = array();
while ($row = mysql_fetch_object($resultados)) {
$retorno[] = $row;}
// saida
echo ($callback ? $callback . '(' : '') . json_encode($retorno) . ($callback ? ')' : '');
mysql_close($con);>
acho que é isso que você quer:
// parametros iniciais
$callback = isset($_GET['callback']) ? preg_replace('/[^a-zA-Z0-9$_]/s', '', $_GET['callback']) : false;
header('Content-Type: ' . ($callback ? 'application/javascript' : 'application/json') . ';charset=UTF-8');
header('Access-Control-Allow-Origin: *');
// conexar com banco
$con = mysql_connect('localhost','gastrono_painel','master#01');mysql_select_db('gastrono_painel');
if ($_GET['method'] == 'getProdutosListagem') {
//$resultados = Consulta de produtos
} else if ($_GET['method'] == 'filtrarProduto') {
//$resultados = Consulta com filtros
}
// criar objeto
$retorno = array();
while ($row = mysql_fetch_object($resultados)) {
$retorno[] = $row;}
// saida
echo ($callback ? $callback . '(' : '') . json_encode($retorno) . ($callback ? ')' : '');
mysql_close($con);não entendi o que tem isso
Desculpa, respondi sem querer.
No caso ali, quando for passado pela URL getProdutos ele vai pesquisar todos os produtos e quando for passado FiltrarProduto ele vai pegar apenas o produto passado pelo ID. Certo?
Assim que eu tiver no PC vou fazer os testes e dou o retorno.
.
não entendi o que tem isso
Desculpa, é que estou respondendo do celular.
Deixa eu ver se entendi, no caso ali, quando a URL passar getProdutos ele vai exibir todos os produtos e quando passar o FiltrarProdutos ele exibe apenas o produto referente ao ID que for passado certo?
Assim que eu estiver no PC farei os testes e darei um retorno.
Sim, é basicamente colocar um IF e fazer com que dependendo da função ele mude a consulta e depois é só exibir já que todos serão exibidos da mesma forma
Sim, é basicamente colocar um IF e fazer com que dependendo da função ele mude a consulta e depois é só exibir já que todos serão exibidos da mesma forma
É meu amigo, estou fazendo alguma coisa errada, não está dando certo. Infelizmente.
Mande o codigo de como está atualmente
Mande o codigo de como está atualmente
Cara, o código tá uma bagunça, eu fui fazendo vários testes, mas não funciona. Coloquei tudo online pra vc dar uma olhada. Veja aqui como está o código de chamada dos arquivos. Não tá na estrutura que vc mandou, daquele jeito eu não soube fazer funcionar, desse jeito aqui, pelo menos o filtro dos produtos ele faz. Dê uma olhada:
<?php
if ($_GET['method'] == 'getProdutosListagem') {
// parametros iniciais
$callback = isset($_GET['callback']) ? preg_replace('/[^a-zA-Z0-9$_]/s', '', $_GET['callback']) : false;
header('Content-Type: ' . ($callback ? 'application/javascript' : 'application/json') . ';charset=UTF-8');
header('Access-Control-Allow-Origin: *');
// conexar com banco
$con = mysql_connect('localhost','gastrono_painel','*******');mysql_select_db('gastrono_painel');
// criar consulta
$produtos = mysql_query("SELECT id_servico, foto_servico, titulo_servico, conteudo_servico FROM servicos");
// criar objeto
$retorno = array();
while ($row = mysql_fetch_object($produtos)) {
$retorno[] = $row;}
// saida
echo ($callback ? $callback . '(' : '') . json_encode($retorno) . ($callback ? ')' : '');
mysql_close($con);
}else if ($_GET['method'] == 'filtrarProduto') {
}
?>
Veja os links:
Filtro: http://varandasgastronomia.com.br/app_teste/jsonx.php?method=filtrarProduto&codigo=21&callback=?
No meu APP, eu chamo os dados da seguinte forma:
Primeiro chamo o script:
<!-- LISTA DE PRODUTOS -->
<script src="http://varandasgastronomia.com.br/app_teste/jsonx.php?method=getProdutosListagem&callback=listarProdutos" type="text/javascript"></script>
Em seguida faço a leitura em um JS:
function listarProdutos(data) {
var anterior="";
var resposta="";
resposta += '<ul data-role="listview" class="ui-icon-alt" data-filter="true" data-filter-placeholder="Filtrar dados...">'
$.each( data, function( chave, valor) {
if ( anterior != valor.titulo_servico ) {
resposta += '<li data-role="list-divider" data-theme="d">' + valor.titulo_servico + '</li>'
}
anterior = valor.titulo_servico;
resposta += '<li>';
resposta += '<a href="#detalhe" onclick="mostrarDetalhe(' + valor.id_servico + ')">';
resposta += '<img src="http://varandasgastronomia.com.br/upload/images/' + valor.foto_servico + '"/>';
resposta += '<h3>' + valor.titulo_servico + '</h3>';
resposta += '<p>' + valor.conteudo_servico + '</p>';
resposta += '</a>';
resposta += '</li>';
});
resposta += '</ul>'
$('#minhalista').html(resposta);
}
function mostrarDetalhe(id) {
$('#detalhe_produto').empty();
$.getJSON('http://www.varandasgastronomia.com.br/app_teste/jsonx.php?method=filtrarProduto&codigo='+id+'&callback=?',
function(data) {
var saida='';
saida += '<img src="http://varandasgastronomia.com.br/upload/images/' + data[0].foto_servico + '" class="imagemdetalhe">';
saida += '<h2>' + data[0].titulo_servico + '</h2>';
saida += '<p>' + data[0].conteudo_servico + '</p>'
$('#detalhe_produto').html(saida);
});
}
A listagem tá funcionando, na hora de exibir os detalhes não funciona.
Acesse o link e confira: http://varandasgastronomia.com.br/app_teste/#cardapio
Agora não vai funcionar pq não tô passando nenhum parâmetro dentro do Else, mas com os testes que fiz antes também não consegui.
Deu pra entender?
Faça assim:
<?php
// parametros iniciais
$callback = isset($_GET['callback']) ? preg_replace('/[^a-zA-Z0-9$_]/s', '', $_GET['callback']) : false;
header('Content-Type: ' . ($callback ? 'application/javascript' : 'application/json') . ';charset=UTF-8');
header('Access-Control-Allow-Origin: *');
// conexar com banco
$con = mysql_connect('localhost','gastrono_painel','*******');mysql_select_db('gastrono_painel');
if ($_GET['method'] == 'getProdutosListagem') {
// criar consulta
$resultados = mysql_query("SELECT id_servico, foto_servico, titulo_servico, conteudo_servico FROM servicos");
} else if ($_GET['method'] == 'filtrarProduto') {
// criar consulta
$resultados = mysql_query("A oltra consilta aqui");
}
$retorno = array(); $retorno[] = $row;
}
// saida
echo ($callback ? $callback . '(' : '') . json_encode($retorno) . ($callback ? ')' : '');
mysql_close($con);
Não sei se entendi direito.
$_GET['callback'] retorna o valor do parâmetro callback da URL.
Se não for isso, explique melhor o que precisa