Feeeh 0 Denunciar post Postado Outubro 29, 2013 Boa tarde pessoal, estou criando um sistema de busca com filtros, já fiz tudo, porém não estou conseguindo retornar o conteudo em uma nova pagina. Abaixo segue o codigo <?php $conectar = mysql_connect('localhost','root','') or die(mysql_error()); if($conectar){ $banco = mysql_select_db('video_aula'); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Listar Imoveis</title> </head> <body> <form action="" method="get" enctype="multipart/form-data"> <span>Tipo</span><br /> <select name="tipo"> <option value="" selected="selected">Selecione o tipo...</option> <?php $pega_tipos = mysql_query("SELECT * FROM tipo ORDER BY id DESC"); if(mysql_num_rows($pega_tipos) == 0){ echo '<option value="">Não foram encontrados tipos ainda</option>'; }else{ while($linha = mysql_fetch_array($pega_tipos)){ echo '<option value="'.$linha['id'].'">'.$linha['tipo'].'</option>'; } } ?> </select><br /> <span>Finalidade</span><br /> <select name="finalidade"> <option value="" selected="selected"> Selecione a finalidade...</option> <?php $pega_finalidade = mysql_query("SELECT * FROM finalidade ORDER BY id DESC"); if (mysql_num_rows($pega_finalidade) == 0){ echo '<option value="">Não foram encontrados finalidades ainda</option'; }else{ while ($linhaB = mysql_fetch_array($pega_finalidade)){ echo '<option value="'.$linhaB['id'].'">'.$linhaB['finalidade'].'</option>'; } } ?> </select><br /> <span>Bairro</span><br /> <select name="bairro"> <option value="" selected="selected">Selecione o bairro...</option> <?php $pega_bairro = mysql_query("SELECT * FROM bairros ORDER BY id DESC"); if(mysql_num_rows($pega_bairro) == 0){ echo '<option value="">Não foram encontrados bairros ainda</option>'; }else{ while($linhaC = mysql_fetch_array($pega_bairro)){ echo '<option value="'.$linhaC['id'].'">'.$linhaC['bairro'].'</option>'; } } ?> </select><br /> <span>Preço</span><br /> <select name="preco"> <option value="" selected="selected">Selecione o preço...</option> <option value="15000">Até 15000</option> <option value="20000">Até 20000</option> <option value="30000">Até 30000</option> <option value="17000">Até 17000</option> </select><br /> <input type="hidden" name="acao" value="enviar" /> <input type="submit" value="Buscar" name="s" /> </form> <hr /> <?php if(isset($_GET['acao']) && $_GET['acao'] == 'enviar'){ $tipo = $_GET['tipo']; $bairro = $_GET['bairro']; $preco = $_GET['preco']; switch($preco){ case '15000'; $valor = 'AND preco <= 15000'; break; case '20000'; $valor = 'AND preco BETWEEN 15000 AND 20000'; break; case '30000'; $valor = 'AND preco BETWEEN 20000 AND 30000'; break; case '17000'; $valor = 'AND preco BETWEEN 15000 AND 17000'; break; } $seleciona_imovel = mysql_query("SELECT * FROM imoveis WHERE tipo = '$tipo' AND bairro = '$bairro' $valor"); if(mysql_num_rows($seleciona_imovel) == 0){ echo '<h1>Desculpe, mais sua busca, não retornou resultados</h1>'; }else{ while($linhaImovel = mysql_fetch_array($seleciona_imovel)){ echo '<h1>'.$linhaImovel['titulo'].'</h1>'; printf('<li><a href="resultado1.php?id=%s">%s</a></li>', $linhaImovel['id_imovel'], $linhaImovel['titulo']); } } } ?> </body> </html> <?php //primeiro incluimos o arquivo de conexão na nossa página require('conexao.php'); /** * Verificamos se a $_GET['s'] existe( isset), caso exista usamos * mysql_real_escape_string para escapar os valores * Senão o valor será vazio */ //$seleciona_imovel = mysql_query("SELECT * FROM imoveis WHERE tipo = '$tipo' AND bairro = '$bairro' $valor"); $pesq = (isset($_GET['linhaImovel'])) ? mysql_real_escape_string($_GET['linhaImovel']) : ''; /** * Verificamos se o valor está preenchido, realizando a pesquisa * Senão retornará todos os dados do banco de dados */ //if(!empty($pesq)){ /** * Montamos o SQL, onde selecionamos todos os campos da tabela, * para isso utilizamos o sinal de asteristico * E escolhemos a tabela, que no nosso caso se chama artigos * Restringimos a busca pelo titulo, e usamos LIKE para realizar a pesquisa * E também pesquisamos no campo conteudo. */ $strSQL = "SELECT * FROM imoveis WHERE tipo = '$tipo' AND bairro = '$bairro' $valor"; /** * * Caso esteja vazio o valor vindo do formulário, * selecionamos todos os valores da tabela * Ordenando pelo id em ordem decrescente * Logo vai mostra do mais recente ao mais antigo * */ $strSQL = "SELECT * FROM imoveis ORDER BY id_imovel DESC"; //Executamos o SQL $qr = mysql_query($strSQL) or die(mysql_error()); //Contamos o total de registros retornado da pesquisa $num = mysql_num_rows($qr); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="pt-BR"> <head> <title>Sistema de Busca</title> </head> <body> <h1>Resultado da Pesquisa</h1> <?php /** * Verificamos se retorna alum registro * Se não retornar, mostrará a mensagam de * Nenhum registro encontrado */ if($num == 0){ //imprime o resultado que não foi encontrado nenhum item echo '<h2>Nenhum registro encontrado</h2> '; }else{ //Mostra quantos resultados foram encontrados echo '<h2>Total de Itens Encontrados: '.$num.'</h2>'; //imprimi a tag de lista não ordenada echo '<ul id="artigos">'; /** * Agora recuperaremos os dados da tabela * para isso utilizando um loop * Ele retornará um array associativo * Sendo que o seu indice será o nome do campo */ while($linhaImovel = mysql_fetch_array($qr)){ /** * Utilizamos a função printf para mostra o link * Atribuimos os valores que serão substituidos * para isso utilizamos o sinal de porcentagem + a letra s (%s) * */ printf('<li><a href="resultado.php?id=%s">%s</a></li>', $linhaImovel['id_imovel'], $linhaImovel['titulo']); } //imprime o fechamento da tag ul echo '</ul>'; } ?> </body> </html> <?php //primeiro incluimos o arquivo de conexão na nossa página require('conexao.php'); //verifica se o id ($_GET['id_imovel']) existe, se não existir ele terá o valor 0 $id = (isset($_GET['id_imovel'])) ? intval($_GET['id_imovel']) : 0 ; //se o Id for igual, ele será redirecionado a página index.php if($id == 0 ){ header('location: index.php'); } /** * Montamos agora o SQL, selecionamos todos os campos * da tabela, para isso utilizamos o asteristico, * escolhemos a tabela ( FROM artigos) * Filtramos pelo campo ID */ $sql = "SELECT * FROM imoveis WHERE id_imovel = '$id' "; //Executamos o SQL $qr = mysql_query($sql); //Recupera o valor do registro selecionado $linhaImovel = mysql_fetch_array($qr); //atribui o conteúdo do título a variável $titulo $titulo = $linhaImovel['titulo']; //atribui o conteúdo do Conteudo a variável $coteudo $conteudo = $linhaImovel['conteudo']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="pt-BR"> <head> <title><?php echo $titulo ?> | Artigos</title> </head> <body> <?php //imprimi o resultado echo "<h1>$titulo</h1>"; echo $conteudo; ?> </body> </html> ... Acho que o erro esta nesta linha: $id = (isset($_GET['id_imovel'])) ? intval($_GET['id_imovel']) : 0 ; Porem n sei como solucionar Compartilhar este post Link para o post Compartilhar em outros sites
Bruno RafaeI 3 Denunciar post Postado Outubro 29, 2013 qual é a mensagem de erro que você está recebendo amigo? você poderia mudar esta expressão que mostrou: $id = (isset($_GET['id_imovel'])) ? intval($_GET['id_imovel']) : 0 ; por esta: if(isset($_GET['id_imovel'])) { $id = $_GET['id_imovel']; } else { $id = 0; } basicamente é a mesma coisa, só não entendi ao certo o motivo do "intval"! manda um print do erro que está recebendo, ou então a mensagem de erro em si. Compartilhar este post Link para o post Compartilhar em outros sites
Feeeh 0 Denunciar post Postado Outubro 29, 2013 qual é a mensagem de erro que você está recebendo amigo? você poderia mudar esta expressão que mostrou: $id = (isset($_GET['id_imovel'])) ? intval($_GET['id_imovel']) : 0 ; por esta: if(isset($_GET['id_imovel'])) { $id = $_GET['id_imovel']; } else { $id = 0; } basicamente é a mesma coisa, só não entendi ao certo o motivo do "intval"! manda um print do erro que está recebendo, ou então a mensagem de erro em si. Bruno, não recebi nenhuma mensagem de erro, simplesmente a pagina resultado abriu, capturando o parametro ID, porém não exibe a coluna conteudo do banco de dados Bruno, não recebi nenhuma mensagem de erro, simplesmente a pagina resultado abriu, capturando o parametro ID, porém não exibe a coluna conteudo do banco de dados Bruno, o link esta aparacendo assim http://127.0.0.1:8080/teste/resultado.php?id=1 Compartilhar este post Link para o post Compartilhar em outros sites
Bruno RafaeI 3 Denunciar post Postado Outubro 29, 2013 entendi, bom... a principio o script esta certo, deveria retornar o valor do conteudo, seguinte... verifica quais os campos que a sua tabela tem, segundo verifique se existe algum dado no campo conteudo. Compartilhar este post Link para o post Compartilhar em outros sites
Feeeh 0 Denunciar post Postado Outubro 29, 2013 entendi, bom... a principio o script esta certo, deveria retornar o valor do conteudo, seguinte... verifica quais os campos que a sua tabela tem, segundo verifique se existe algum dado no campo conteudo. Dentro do banco de dados, tenho : bairros ( id, bairro ) finalidade (id, finalidade) tipo (id, tipo) imoveis (id_imovel, tipo, finalidade, bairro, titulo, conteudo e preco) E sim, tenho conteudo pra cada id que esta lá Um detalhe Na linha que voce me mandou trocar, antes estava assim $id = (isset($_GET['id'])) ? intval($_GET['id']) : 0; //se o Id for igual, ele será redirecionado a página index.php if($id == 0){ header('location:index.php'); } Onde esta o 0 em vermelho, quando eu mudava para 1 por exemplo, exibia só o conteudo da id 1 Compartilhar este post Link para o post Compartilhar em outros sites
Bruno RafaeI 3 Denunciar post Postado Outubro 29, 2013 O que está falando é definir o valor do ID inicial e fazer ele exibir de acordo com os que estão no banco de dados! vamos fazer um teste, na URL, no final do endereço, digita assim: ?id=2 por exemplo: http://meusite.com/?id=2 entendeu? vai mudando os valores e verifica se vai sendo exibido os resultados. Compartilhar este post Link para o post Compartilhar em outros sites
Feeeh 0 Denunciar post Postado Outubro 29, 2013 O que está falando é definir o valor do ID inicial e fazer ele exibir de acordo com os que estão no banco de dados! vamos fazer um teste, na URL, no final do endereço, digita assim: ?id=2 por exemplo: http://meusite.com/?id=2 entendeu? vai mudando os valores e verifica se vai sendo exibido os resultados. Bruno, ficou assim http://127.0.0.1:8080/teste/?id=1 Porém continua sem exibir o resultado, mudei para id 2 e 3 e também nada Bruno, ficou assim http://127.0.0.1:8080/teste/?id=1 Porém continua sem exibir o resultado, mudei para id 2 e 3 e também nada Já li o codigo umas 20 vezes, não sei o que pode ser Compartilhar este post Link para o post Compartilhar em outros sites
Bruno RafaeI 3 Denunciar post Postado Outubro 29, 2013 antes de mudar pro script que lhe enviei, estava funcionando normal, quando vc alterava na url? me manda novamente o seu script ATUAL. pois antes você tinha me dado como: $_GET['id_imovel'] e agora você me mostra ele assim: $_GET['id'] então manda ai, pra eu verificar o atual agora. Compartilhar este post Link para o post Compartilhar em outros sites
Feeeh 0 Denunciar post Postado Outubro 29, 2013 antes de mudar pro script que lhe enviei, estava funcionando normal, quando vc alterava na url? me manda novamente o seu script ATUAL. pois antes você tinha me dado como: $_GET['id_imovel'] e agora você me mostra ele assim: $_GET['id'] então manda ai, pra eu verificar o atual agora. Bruno, não sei o que aconteceu aqui, mas voltei com o código antigo e funcionou. Mas não estava funcionando não, não sei o que houve '-' Mesmo assim, mt obg pela ajuda cara! Compartilhar este post Link para o post Compartilhar em outros sites
RobyFLC 6 Denunciar post Postado Novembro 1, 2013 Feeeh, da forma como estão sendo feitas as consultas, seu código está sucetível a SQL Injection. Se for um projeto pessoal ou para estudo, isso não vai fazer muita diferença (talvez tenha poucos acessos ou a segurança não seja uma preocupação).Se for um projeto maior ou pra algum cliente, eu realmente recomendaria que você tratasse essa vulnerabilidade pra evitar maiores dores de cabeça no futuro. Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Feeeh 0 Denunciar post Postado Novembro 28, 2013 Feeeh, da forma como estão sendo feitas as consultas, seu código está sucetível a SQL Injection. Se for um projeto pessoal ou para estudo, isso não vai fazer muita diferença (talvez tenha poucos acessos ou a segurança não seja uma preocupação). Se for um projeto maior ou pra algum cliente, eu realmente recomendaria que você tratasse essa vulnerabilidade pra evitar maiores dores de cabeça no futuro. Abraço! RobyFLC, sou iniciante nisso, poderia me explicar melhor? Tenho outra duvida, por exemplo, tenho os campos "select", porém, só exibirá resultados se todos os valores forem preenchidos, tem como exibir os valores, sem preencher um campo, por exemplo " Valor " ? Compartilhar este post Link para o post Compartilhar em outros sites