Silvio Alencar 0 Denunciar post Postado Fevereiro 12, 2010 Fala, pessoal, Tô precisando muito da ajuda do pessoal do Fórum. Estou criando um site em Wordpress e meu cliente precisa que em uma das páginas haja uma consulta ao Banco de Dados. O usuário entra com o nome de seu município e o sistema diz se o município dele é atendido pelo projeto. Já até criei a tabela: t_cidades campos: municipio, estado, populacao, situacao Então precisava criar o formulário e o seu handler para poder fazer as consultas e colocar o resultado na página, que basicamente seria: Ex: Busca: São Paulo Resultado: Município: São Paulo | Estado: SP | População: 10.000.000 | Situação: Não Habilitado Como faço isso no Wordpress? Fiz alguma pesquisa e achei a classe wpdb (para usar tabelas diferentes das padrões do Wordpress) e também o uso de templates para colocar a página no lugar certo. Mas não sei como fazer essas coisas, sou muito padawan em php e mysql. Alguém pode me ajudar, por favor? Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Narciso 3 Denunciar post Postado Fevereiro 14, 2010 Acho que na realidade isso seria puro php. A tabela sendo ou não do Wordpress, funcionaria havendo uma conexao ao DB, a página seria inserida com itens Wordpress onde você escolher. Como você mesmo disse a tabela já foi criada agora é só programar o php e estilizar os campos de consulta. Essa variável global do Wordpress que você citou é fundamental para facilitar, no Codex você encontra a explicação dela bem detalhada. Acesse esse link traduzido, sobre a variável $wpdb Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Silvio Alencar 0 Denunciar post Postado Fevereiro 22, 2010 Acho que na realidade isso seria puro php. A tabela sendo ou não do Wordpress, funcionaria havendo uma conexao ao DB, a página seria inserida com itens Wordpress onde você escolher. Como você mesmo disse a tabela já foi criada agora é só programar o php e estilizar os campos de consulta. Essa variável global do Wordpress que você citou é fundamental para facilitar, no Codex você encontra a explicação dela bem detalhada. Acesse esse link traduzido, sobre a variável $wpdb Abraço. Ei Narciso, obrigado por responder. Como disse sou muito padawan em php. E agora descobri que sou em Wordpress tb. ehhehe. Tentei de bicão fazer, mas não deu certo. Deu um erro aqui de página não encontrada. Você pode me ajudar mais uma vez? Obrigado. Inseri na functions.php o seguinte código (tudo de bicão): function cidade() { global $wpdb, $cidade, $post; $cidade = $wpdb->get_results("SELECT estado, municipio, populacao, situacao FROM {$wpdb->t_cidades} WHERE municipio = {$_POST['municipio']}"); foreach($resultados as $resultado); { print "<p>Municipio: {$resultado->municipio} - {$resultado->estado}</p><p>Populacao: {$resultado->populacao} - Situação: {$resultado->situacao} </p>"; } }; e depois criei o formulário em uma página do wordpress: <div> <h1>Veja se o seu Município tem até 20 mil habitantes</h1> <form action="<?php cidade(); ?>" method="post" name="busca_cidades" lang="pt"> <label>Município</label> <input name="municipio" type="text" lang="pt" size="50" alt="Apenas o nome do Municipio, sem o Estado."/> <input name="submit" type="submit" value="Enviar"/> </form> </div> O que estou fazendo de errado? Compartilhar este post Link para o post Compartilhar em outros sites
Silvio Alencar 0 Denunciar post Postado Fevereiro 22, 2010 Ops... código certo function cidade() { global $wpdb, $cidade, $_POST; $cidade = $wpdb->get_results("SELECT estado, municipio, populacao, situacao FROM {$wpdb->t_cidades} WHERE municipio = {$_POST['municipio']}"); foreach($cidade as $resultado); { print "<p>Municipio: {$resultado->municipio} - {$resultado->estado}</p><p>Populacao: {$resultado->populacao} - Situacao: {$resultado->situacao} </p>"; } }; O que tá faltando? Ele não tá achando os dados... Compartilhar este post Link para o post Compartilhar em outros sites
Alex Hiroshi 7 Denunciar post Postado Fevereiro 22, 2010 A tabela t_cidades tem prefixo, como as tabelas do wordpress? (wp_t_cidades) Você usa prefixo nas tabelas? Se não tiver com prefixo, tente fazer a busca sem o $wpdb, assim: ... populacao, situacao FROM t_cidades WHERE ...O $wpdb, no nome da tabela, vai adicionar, se necessário, o prefixo. Então ele busca as informações na tabela prefixo_t_cidade e não na t_cidade. Compartilhar este post Link para o post Compartilhar em outros sites
Silvio Alencar 0 Denunciar post Postado Fevereiro 23, 2010 A tabela t_cidades tem prefixo, como as tabelas do wordpress? (wp_t_cidades) Você usa prefixo nas tabelas? Se não tiver com prefixo, tente fazer a busca sem o $wpdb, assim: ... populacao, situacao FROM t_cidades WHERE ...O $wpdb, no nome da tabela, vai adicionar, se necessário, o prefixo. Então ele busca as informações na tabela prefixo_t_cidade e não na t_cidade. Opa, Eu uso prefixo sim. Tentei como sugeriu, mas tá dando o seguinte erro (inclusive se renomeio o tabela para wp_t_cidades). Ele diz que não encontrou a página e coloca o seguinte endereço no navegador: http://oendereçodomeudomínio.com.br/<p>Municipio: - </p><p>Populacao: - Situacao: </p> Isso acontece tanto para a tablela com ou sem prefixo. Vou postar novamente os códigos para manter atualizado: Página functions.php function cidade() { global $wpdb, $cidade, $_POST; $cidade = $wpdb->get_results("SELECT estado, municipio, populacao, situacao FROM {$wpdb->t_cidades} WHERE municipio = {$_POST['municipio']}"); foreach($cidade as $resultado); { print "<p>Municipio: {$resultado->municipio} - {$resultado->estado}</p><p>Populacao: {$resultado->populacao} - Situacao: {$resultado->situacao} </p>"; } }; Página buscacidade.php <div> <h1>Veja se o seu Município tem até 20 mil habitantes</h1> <form action="<?php cidade(); ?>" method="post" name="busca_cidades" lang="pt"> <label>Município (sem o Estado)</label> <br /> <input name="municipio" type="text" lang="pt" size="50" alt="Apenas o nome do Municipio, sem o Estado."/> <input name="submit" type="submit" value="Enviar"/> </form> </div> Obrigado pela ajuda de vcs. Compartilhar este post Link para o post Compartilhar em outros sites
Alex Hiroshi 7 Denunciar post Postado Fevereiro 23, 2010 Agora que reparei a parte do formulário. Você está chamando a função cidade(), que retorna a lista completa, no action do formulário. Desse jeito o action ficará com a lista: form action="<p>Município...". Faça um teste só para ver se a busca no banco de dados está retornando alguma cidade. Tire o formulário e adicione apenas <?php cidade(); ?>, e na function.php, tire a parte do where, ficando assim: function cidade() { global $wpdb, $cidade, $_POST; $cidade = $wpdb->get_results("SELECT estado, municipio, populacao, situacao FROM {$wpdb->t_cidades}"); foreach($cidade as $resultado); { print "<p>Municipio: {$resultado->municipio} - {$resultado->estado}</p><p>Populacao: {$resultado->populacao} - Situacao: {$resultado->situacao} </p>"; } }Agora vê se as cidades serão exibidas como você quer. Se o retorno for positivo, agora é só criar uma condicional para que essa função seja chamada só quando o formulário for enviado. Para fazer isso, deixe a acation do form 'apontada' para a mesma página, a buscacidade.php. Depois é só chamar a função, na mesma página, quando o formulário for enviado: <?php if ( getenv("REQUEST_METHOD") == "POST" ) { // eviado, chama função cidade(); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Silvio Alencar 0 Denunciar post Postado Fevereiro 23, 2010 Agora que reparei a parte do formulário. Você está chamando a função cidade(), que retorna a lista completa, no action do formulário. Desse jeito o action ficará com a lista: form action="<p>Município...". Faça um teste só para ver se a busca no banco de dados está retornando alguma cidade. Tire o formulário e adicione apenas <?php cidade(); ?>, e na function.php, tire a parte do where, ficando assim: function cidade() { global $wpdb, $cidade, $_POST; $cidade = $wpdb->get_results("SELECT estado, municipio, populacao, situacao FROM {$wpdb->t_cidades}"); foreach($cidade as $resultado); { print "<p>Municipio: {$resultado->municipio} - {$resultado->estado}</p><p>Populacao: {$resultado->populacao} - Situacao: {$resultado->situacao} </p>"; } }Agora vê se as cidades serão exibidas como você quer. Se o retorno for positivo, agora é só criar uma condicional para que essa função seja chamada só quando o formulário for enviado. Para fazer isso, deixe a acation do form 'apontada' para a mesma página, a buscacidade.php. Depois é só chamar a função, na mesma página, quando o formulário for enviado: <?php if ( getenv("REQUEST_METHOD") == "POST" ) { // eviado, chama função cidade(); } ?> Ei, Lex, Você acertou na mosca. Agora ele tá escrevendo direitinho na página. Fiz a primeira etapa, que você disse. Só que ele só colocou os dados de São Paulo, nenhum outro município. Então fui para a etapa seguinte, para ver se dava certo. Só que ele não pega as informações enviadas pelo formulário: Olha o código: busca_cidades.php <div> <h1>Veja se o seu Município tem até 20 mil habitantes</h1> <form action="http://meudomínio.com.br/inscricao" method="post" name="busca_cidades" lang="pt"> <label>Município (sem o Estado)</label> <br /> <input name="municipio" type="text" lang="pt" size="50" alt="Apenas o nome do Municipio, sem o Estado."/> <input name="submit" type="submit" value="Enviar"/> </form> <?php if ( getenv("REQUEST_METHOD") == "POST" ) { // eviado, chama função cidade(); } ?> </div> functions.php function cidade() { global $wpdb, $cidade, $_POST; $cidade = $wpdb->get_results("SELECT estado, municipio, populacao, situacao FROM wp_t_cidades WHERE municipio = {$_POST['municipio']}"); foreach($cidade as $resultado); { print "<p>Municipio: {$resultado->municipio} - {$resultado->estado}</p><p>Populacao: {$resultado->populacao} - Situacao: {$resultado->situacao} </p>"; } } Compartilhar este post Link para o post Compartilhar em outros sites
Alex Hiroshi 7 Denunciar post Postado Fevereiro 23, 2010 Troque a linha do get_results por essa: $cidade = $wpdb->get_results("SELECT estado, municipio, populacao, situacao FROM wp_t_cidades WHERE municipio = '".$_POST['municipio']."'"); Compartilhar este post Link para o post Compartilhar em outros sites
Silvio Alencar 0 Denunciar post Postado Fevereiro 23, 2010 Troque a linha do get_results por essa: $cidade = $wpdb->get_results("SELECT estado, municipio, populacao, situacao FROM wp_t_cidades WHERE municipio = '".$_POST['municipio']."'"); Lex, Você é o cara!!!! Ficou certinho. Brigadão! Só uma perguntinha. Como faço para fazer uma mensagem, caso não encontre nada na busca? É complicado? Compartilhar este post Link para o post Compartilhar em outros sites
Alex Hiroshi 7 Denunciar post Postado Fevereiro 23, 2010 Antes do foreach, coloque um if: if ( !$cidade ) { echo "nenhuma cidade"; return; }Não testei, mas deve funcionar. Compartilhar este post Link para o post Compartilhar em outros sites
Silvio Alencar 0 Denunciar post Postado Fevereiro 23, 2010 Antes do foreach, coloque um if: if ( !$cidade ) { echo "nenhuma cidade"; return; }Não testei, mas deve funcionar. Perfeito. Obrigado, Lex. Compartilhar este post Link para o post Compartilhar em outros sites