Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ALINERAPOSO

Sistema de busca ao bancod e dados MySQL

Recommended Posts

Olá,

tenho um scrit em php que busca dados cadastrados no banco de dados, porém, quero que nesse resultado só seja exibido texto (isso porque existe todo um código html sendo usado nos campos de textarea, e adiciono por exemplo, tabelas, imagens etc) e com um limite de caracter (Ex. Exibir apenas as 100 letras incluindo a digitada no campo de "busca" e que fique em negrito, por exemplo).

 

Como adaptar isso gente, no meu/nosso código?????????????!!!!!!!!!!! Sei que poderão me/nos ajudar.

 

Grata,

Aline

 

 

config_busca.php

 

<?php$link = mysql_connect('localhost', 'usuario', 'senha');mysql_select_db("bd");// verifica se e buscaif (isset($_POST['busca'])){$consulta = "SELECT * FROM paginas where texto like '%".$_POST['busca']."%'";}else{$consulta = "SELECT * FROM paginas";}$resultado = mysql_query($consulta) or die("<BR><BR><B>Consulta falhou:</b> " . mysql_error());//$resultado= substr($consulta,0,20);$linhasRetornadas = mysql_num_rows($resultado);if ($linhasRetornadas>0) {?><p><a href="java script:history.back()">Voltar</a> </p><hr><table width="90%"><TR><th>Título</th> <th>Texto</th></TR><?while ($linha= mysql_fetch_row($resultado)){ echo "\t<tr>\n";echo "<td align=center>$linha[1]</td>";echo "<td align=center>$linha[2]</td>";echo "</TR>\n";} echo "</table><HR>\n";} else{?><BR><center>Nenhum registro retornado!</center><BR><?}mysql_free_result($resultado);/* fecha conexão */mysql_close($link);?>

 

busca.php

 

<!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><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /></head><body><form action="config_busca.php" method="post"><TABLE><TR><TD> Busca por nome: <input type="text" name="busca"><input type="submit" value="ok"></TD></TR></TABLE></form></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, grata pela resposta. mas como eu faço isso????Estou tenatando aqui e não consigo nenhum resultado positivo.Por favor, me ajude.Obs.: Eu não quero que apareça o código em html, e sim, o texto que existe no campo xxx da taleba.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo:

 

$string = "Aqui tem <strong>HTML</strong>.";echo $string . "<br />";echo strip_tags($string);

Como pode ver, é simples ;)

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

completando na linha que tem echo "<td align=center>$linha[1]</td>";vai ficar assim: echo "<td align=center>".substr(strip_tags($linha[1]),0,100)."</td>";espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

completando na linha que tem echo "<td align=center>$linha[1]</td>";vai ficar assim: echo "<td align=center>".substr(strip_tags($linha[1]),0,100)."</td>";espero ter ajudado

Muitíssimo obrigado!!!!!!Funcionou mesmo.Só mais uma pergunta: Tem como aparecer no resultado de busca, além desse número de caracteres limites, a palavra que foi inserida na box "busca" em negrito??? E ela aparecer no resultado, já que o que aparece são as caracteres iniciais daquele determinado campo do bd.Obrigado por mais essa força!!!Aguardo ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar str_replace pra isso. É só pegar a palavra-chave e substituir o texto pela própria palavra entre as tags <strong> e </strong>.

O ideal é definir uma classe (CSS) pra palavra-chave (tipo <span class="palavra_chave">), aí formate-a como precisar, com cor, tamanho da fonte etc.

 

Outra dica é dar uma estudada por expressões regulares e na função preg_replace(). Pra essa substituição, é o mais indicado, do contrário terá problemas com maiúsculas e minúsculas (no caso de str_replace).

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a todos pela a ajuda, ams eu ainda não consegui. Já tentei adicionar o srt_replace por exemplo em tudo que é canto e <strong> também, porém, sem sucesso.Quem puder em dar uma forcinha, de onde eu posso adicionar tais tags, eu seria muito grato. Isso tudo porque eu não sou programadora, porém, tenho que me virar para completar algum projeto e suas necessidades.Agurado,e vou tenatando por aqui,Aline

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estou tentando, testando, ams não está dando certo.. nehum resultado positivo.

 

(Deixei o teste "//")

 

Por favor, me ajudem!!!!!

 

config_busca.php

 

<?php$link = mysql_connect('localhost', 'usuario', 'senha');mysql_select_db("bd");// verifica se e buscaif (isset($_POST['busca'])){//$palavra1 = str_replace(" ", "%", $busca);//$consulta = "SELECT * FROM paginas where texto like '%".$palavra1."%' ORDER BY paginas.titulo;";$consulta = "SELECT * FROM paginas where texto like '%".$_POST['busca']."%' ORDER BY paginas.titulo;";}else{$consulta = "SELECT * FROM paginas";}$resultado = mysql_query($consulta) or die("<BR><BR><B>Consulta falhou:</b> " . mysql_error());$linhasRetornadas = mysql_num_rows($resultado);if ($linhasRetornadas>0) {?><p><a href="java script:history.back()">Voltar</a> </p><hr><table width="90%"><?//preg_replace //while ($linha= mysql_fetch_row($resultado)){ while ($linha= mysql_fetch_array($resultado)){ 	$id		  = $linha["id_paginas"];echo "<tr>\n";echo "<td>Título: <a href=\"../pagina_teste_padrao.php?id=$id\" target=\"_parent\">$linha[1]</a></td></tr>";//echo "<tr><td>Texto: $linha[2]</td>";//echo "<b>".$palavra1."</b>";echo "<tr><td>".substr(strip_tags($linha[2]),0,100)."...</td>";echo "</TR>\n";} echo "</table><HR>\n";} else{?><BR><center>Nenhum registro retornado!</center><BR><?}mysql_free_result($resultado);/* fecha conexão */mysql_close($link);?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou tentar te dar um exemplo, aí você altera no seu código.

 

$texto = str_replace($palavra1, "<strong>$palavra1</strong>", $linha[2]);

Onde, segundo teu código, entendi que a $palavra1 é a palavra chave da busca e $linha[2] é o texto a ser exibido.

Porém, você está usando strip_tags, ou seja, vai anular o negrito da variável $texto. Dá uma olhada na documentação, tem um terceiro argumento que você define quais as tags permitidas ;)

 

PS: não vi onde a variável $busca é inicializada, então presumo que esteja dependendo de register_globals On. Dê uma lida aqui pra entender as recomendações do seu uso.

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá brabo o negócio aqui..... eu testo testo e nada acontece rsrsrsrs.

Vou tentar te dar um exemplo, aí você altera no seu código.

$texto = str_replace($palavra1, "<strong>$palavra1</strong>", $linha[2]);
Onde, segundo teu código, entendi que a $palavra1 é a palavra chave da busca e $linha[2] é o texto a ser exibido.Porém, você está usando strip_tags, ou seja, vai anular o negrito da variável $texto. Dá uma olhada na documentação, tem um terceiro argumento que você define quais as tags permitidas ;)PS: não vi onde a variável $busca é inicializada, então presumo que esteja dependendo de register_globals On. Dê uma lida aqui pra entender as recomendações do seu uso.[]sAnderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta o que você alterou por último. Somente o trecho (loop) onde tu pretende exibir o texto.

Bom,mesmo eu alterando eu não consegui, ainda. Portanto, vou anexar aqui, o pedacinho do código onde o loop é exibido... sem as linhas comentadas.
<?while ($linha= mysql_fetch_array($resultado)){ 	$id		  = $linha["id_paginas"];echo "<tr>\n";echo "<td>Título: <a href=\"../pagina_teste_padrao.php?id=$id\" target=\"_parent\">$linha[1]</a></td></tr>";echo "<tr><td>".substr(strip_tags($linha[2]),0,100)."...</td>";echo "</TR>\n";} echo "</table><HR>\n";} else{?>
Agora eis a questão: Onde adicionar o lance de negrito e que o que foi buscado, a palavra apareça também no resultado da busca?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando o trecho passado então:

 

<?while ($linha= mysql_fetch_array($resultado)){	$id		  = $linha["id_paginas"];echo "<tr>\n";echo "<td>Título: <a href=\"../pagina_teste_padrao.php?id=$id\" target=\"_parent\">$linha[1]</a></td></tr>";$texto = strip_tags($linha[2]);$texto = str_replace($palavra1, "<strong>$palavra1</strong>", $texto);echo "<tr><td>" . substr($texto, 0, 100) . "...</td>";echo "</tr>\n";} echo "</table><hr>\n";} else{?>

Faz um teste aí. ;)

PS: recomendo dar um revisada no código na questão de boas práticas. As short tags <? ?> não são recomendadas.

 

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando o trecho passado então:

<?while ($linha= mysql_fetch_array($resultado)){	$id		  = $linha["id_paginas"];echo "<tr>\n";echo "<td>Título: <a href=\"../pagina_teste_padrao.php?id=$id\" target=\"_parent\">$linha[1]</a></td></tr>";$texto = strip_tags($linha[2]);$texto = str_replace($palavra1, "<strong>$palavra1</strong>", $texto);echo "<tr><td>" . substr($texto, 0, 100) . "...</td>";echo "</tr>\n";} echo "</table><hr>\n";} else{?>
Faz um teste aí. ;)PS: recomendo dar um revisada no código na questão de boas práticas. As short tags <? ?> não são recomendadas.[]sAnderson Mello
Amigo, eu sei que você quer me ajudar,mas infelizmente alterei o código, mas nada, visivelmente não alterou nada no resultado.Tem outra sugestão??????Vamos que vamos!!!!! Vamos conseguir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.