Jump to content


Photo

Sistema De Busca No Site


  • Faça o login para participar
10 replies to this topic

#1 Eder Luciano

Eder Luciano

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino
  • Localidade:Cascavel-PR

Posted 16/11/2011, 21:52

Olá pessoal,tudo bem?

Seguinte:

Eu to com um sistema de busca aqui, ele funciona e tals, mas o resultado quando vem do banco de dados aparece como ta cadastrado no BD, os acentos não aparecem, já coloquei o html_entity_decode mas mesmo assim não funciona, oque devo fazer, qual o procedimento correto?

O código ta assim:

<?php
######################################
# Script de Busca #
# Criado por: Evilásio Costa #
######################################
?>
<?php
$host = "localhost"; // Host do Mysql
$user = "root"; // Usuário do Mysql
$pass = ""; // Senha do Mysql
$banco = "568023_bdkam"; // Nome do Banco no Mysql
$palavra = htmlentities($_POST['palavra'], ENT_QUOTES);
$tabela = htmlentities($_POST['tabela'], ENT_QUOTES);
$con = mysql_connect($host,$user,$pass);
$db = mysql_select_db($banco,$con);
$qr = "SELECT * FROM $tabela WHERE titulo LIKE '%".$palavra."%' ORDER BY post_id DESC";
$sql = mysql_query($qr);
$total = mysql_num_rows($sql);
echo "Sua Busca retornou '$total' resultados.";
while($r = mysql_fetch_array($sql)){
echo"<hr><br>"; ?>
<a href="?config.php=<?php echo $r['post_id'];?> " title="<?php echo html_entity_decode( $r['titulo']); ?>" class="borda-interna"></a>
<?php echo html_entity_decode( $r['titulo']); ?>
<?php
}
?>


#2 Satoru

Satoru

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Minas Gerais
  • Interesses:PHP, Mysql, Javascript,Asp, HTLM, CSS e AS3

Posted 17/11/2011, 07:42

Tente utilizar a função utf8_encode()
Como por exemplo:
utf8_encode($r['titulo']);

Edit: Não entendi se é quando o resultado é escrito na tela que não aparece acentos na palavra, ou se as consultas que possuem acentos que não retornam resultado. Caso a solução acima não resolva seu problema, dê mais detalhes sobre ele.

Edição feita por: Satoru, 17/11/2011, 07:50.


#3 Eder Luciano

Eder Luciano

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino
  • Localidade:Cascavel-PR

Posted 19/11/2011, 16:47

Obrigado por ajudar Satoru, mas oque vc disse não funcionou, alias só mudou como exibe mas não aparece os acentos...

É assim:
quando a pesquisa retorna o resultado na tela, aparece como ta gravado no banco de dados, todo codificado do jeito que ta lá...

qq eu tenho q fazer pra aparecer normal, eu já usei html_entity_decode( $r['titulo']); em outras partes do site e deu tudo certo... não entendo porq não ta dando agora!!

#4 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 19/11/2011, 22:27

@ EDER
Neste caso o documento PHP é que está codificado incorretamente, abra-o e salve-o como utf-8, se seu editor possui a função salve como "Without boom"

Falopa!

#5 Eder Luciano

Eder Luciano

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino
  • Localidade:Cascavel-PR

Posted 20/11/2011, 17:17

iiisso. valeu pela ajuda hostdesigner, era isso mesmo, mas...
agora eu não consigo linkar o resultado da pesquisa, ou seja, consigo fazer mostrar o resultado da pesquisa na tela mas não consigo fazer ir para o resultado pesquisado...

O código ta assim agora:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>

<body>

<?php
######################################
# Script de Busca #
# Criado por: Evilásio Costa #
######################################
?>
<?php
$host = "localhost"; // Host do Mysql
$user = "root"; // Usuário do Mysql
$pass = ""; // Senha do Mysql
$banco = "568023_bdkam"; // Nome do Banco no Mysql
$palavra = $_POST['palavra'];
$tabela = $_POST['tabela'];
$con = mysql_connect($host,$user,$pass);
$db = mysql_select_db($banco,$con);
$qr = "SELECT * FROM $tabela WHERE titulo LIKE '%".$palavra."%' ORDER BY post_id DESC";
$sql = mysql_query($qr);
$total = mysql_num_rows($sql);
echo "Sua Busca retornou '$total' resultados.";
while($r = mysql_fetch_array($sql)){
echo"<hr><br>"; ?>
<a href="?AnSn=noticias&post=<?php echo html_entity_decode( $r['post_id']); ?>" title="?AnSn=noticias&post=<?php echo html_entity_decode( $r['post_id']); ?>" class="borda-interna">
<?php echo html_entity_decode($r['titulo']); ?>
<?php
}
?>
</a>

</body>
</html>


E ele da sempre esse erro:


( ! ) Notice: Undefined index: palavra in C:\wamp\www\Pj-site-novo\config.php on line 21
Call Stack
# Time Memory Function Location
1 0.0005 374656 {main}( ) ..\config.php:0

( ! ) Notice: Undefined index: tabela in C:\wamp\www\Pj-site-novo\config.php on line 22
Call Stack
# Time Memory Function Location
1 0.0005 374656 {main}( ) ..\config.php:0

( ! ) Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\Pj-site-novo\config.php on line 27
Call Stack
# Time Memory Function Location
1 0.0005 374656 {main}( ) ..\config.php:0
2 0.0124 381752 mysql_num_rows ( ) ..\config.php:27
Sua Busca retornou '' resultados.
( ! ) Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\Pj-site-novo\config.php on line 29
Call Stack
# Time Memory Function Location
1 0.0005 374656 {main}( ) ..\config.php:0
2 0.0125 381888 mysql_fetch_array ( ) ..\config.php:29


Como que eu posso resolver isso?
Tenho q fazer algum código...

Fico no aquardo!!!

#6 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 20/11/2011, 17:48

O índice palavra não existe, isto significa que não houve um header POST no momento que a página foi processada. De qualquer forma eu preferiria utilizar REQUEST http://br2.php.net/m...les.request.php

Falopa!

#7 Eder Luciano

Eder Luciano

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino
  • Localidade:Cascavel-PR

Posted 20/11/2011, 18:00

O índice palavra não existe, isto significa que não houve um header POST no momento que a página foi processada. De qualquer forma eu preferiria utilizar REQUEST http://br2.php.net/m...les.request.php

Falopa!


Como q eu uso esse REQUEST pois coloquei ele no lugar do post e não deu...

#8 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 20/11/2011, 18:05

Não é mágica, tem que dar os valores também... index.php?pagina=algum_valor_no_url

Falopa!

#9 Eder Luciano

Eder Luciano

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino
  • Localidade:Cascavel-PR

Posted 20/11/2011, 18:17

Não é mágica, tem que dar os valores também... index.php?pagina=algum_valor_no_url

Falopa!


Ta dando certo...
agora tenho q ver um jeito de fazer linkar o resultado de outras tabelas...
pensei em fazer com o if, tipo, se o resultado da pesquisa não for ele, daídesce pro outro e tals...
tem outra forma de fazer isso?

#10 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 20/11/2011, 19:48

@ EDER
Faça a consulta com novos parametros
SELECT /* bla bla bla */ 
WHERE campo = 'xarope'
AND titulo LIKE '%xarope%' OR titulo != 'maracujá'


#11 Eder Luciano

Eder Luciano

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino
  • Localidade:Cascavel-PR

Posted 21/11/2011, 20:49

Consegui resolver aqui...
Obrigado pela ajuda hostdesigner, foi de grande valia...

O código ficou assim... não tenho experiência nenhuma em php lembrei das aulas de programação do Técnico que fiz e fui fazendo e foi dando certo...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>

<body>

<?php
######################################
# Script de Busca #
# Criado por: Evilásio Costa #
######################################
?>
<?php
$host = "localhost"; // Host do Mysql
$user = "root"; // Usuário do Mysql
$pass = ""; // Senha do Mysql
$banco = "568023_bdkam"; // Nome do Banco no Mysql
$palavra = $_REQUEST['palavra'];
$tabela = $_REQUEST['tabela'];
$con = mysql_connect($host,$user,$pass);
$db = mysql_select_db($banco,$con);
$qr = "SELECT * FROM $tabela WHERE titulo LIKE '%".$palavra."%' ORDER BY post_id DESC";
$sql = mysql_query($qr);
$total = mysql_num_rows($sql);
$c_news = 'c_news';
echo "Sua Busca retornou '$total' resultados.";
while($r = mysql_fetch_array($sql)){
echo"<hr><br>";
if($tabela == $c_news){
?>
<a href="index.php?AnSn=noticias&post=<?php echo html_entity_decode( $r['post_id']); ?>" title="?AnSn=noticias&post=<?php echo html_entity_decode( $r['post_id']); ?>" class="borda-interna">
<?php echo html_entity_decode($r['titulo']); ?></a>
<?php
}else{ ?>
<a href="index.php?AnSn=videos&videos=<?php echo html_entity_decode( $r['post_id']); ?>" title="?AnSn=videos&videos=<?php echo html_entity_decode( $r['post_id']); ?>" class="borda-interna">
<?php echo html_entity_decode($r['titulo']); ?></a>
<?php
}
?>

<?php }?>


</body>
</html>





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq