xavrim 0 Denunciar post Postado Novembro 19, 2007 bom, tenho um código que faz uma busca no bdn. <?php include 'conecta.php'; $db=conectar(); ?> <? if(!empty($HTTP_POST_VARS[palavra])) { $palavra = str_replace(" ", "%", $HTTP_POST_VARS[palavra]); /* Altera os espaços adicionando no lugar o simbolo % */ $qr = "SELECT * FROM noticias WHERE noticia LIKE '%".$palavra."%' ORDER BY codigo DESC"; $sql = mysql_query($qr); // Executa a query no Banco de Dados $total = mysql_num_rows($sql); // Conta o total ded resultados encontrados echo "Sua busca retornou <b>'$total'</b> resultados.<br>"; while($r = mysql_fetch_array($sql)) { // Gera o Loop com os resultados echo "<hr><br />"; echo $r[noticia]."<br>"; } } ?> Mas quando faço a busca <!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=iso-8859-1" /> <title>Untitled Document</title> </head> <body> <form method="POST" action="busca.php"> Palavra: <input type="text" name="palavra"> <input type="submit" value="Buscar"> </form> </body> </html> Aparece a seguinte mensagem Notice: Use of undefined constant palavra - assumed 'palavra' in c:\arquivos de programas\easyphp1-8\www\estudo_de_php\busca.php on line 6 Notice: Use of undefined constant palavra - assumed 'palavra' in c:\arquivos de programas\easyphp1-8\www\estudo_de_php\busca.php on line 7 Até consigo ver o que ele procurou, mas fica estas linhas que eu não sei o que é. Outra coisa, teria como destacar a palavra que digitei quando for efetuada a procura? Desde já agradeço. http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 19, 2007 Experimente trocar $HTTP_POST_VARS[palavra] por $_POST['palavra']. Para destacar, troque o output para isto: echo preg_replace("/($palavra)/is", "<strong>\\1</strong>", $r[noticia]) . "<br />"; No caso, usei o negrito para destacar, caso queira de outra forma é só atribuir a forma no segundo parâmetro da função preg_replace() mas mantendo o retrovisor \\1. []'s Compartilhar este post Link para o post Compartilhar em outros sites
xavrim 0 Denunciar post Postado Novembro 19, 2007 Apreveitando ... Eu nunca vi esta função preg_replace.. Você poderia me falar como ela funciona. Sobre que você me falou na resposta passada deu certo, o texto ficou negrito, mas continua dando aquele erro: use of undefined constant palavra - assumed 'palavra' in c:\arquivos de programas\easyphp1-8\www\estudo_de_php\busca.php on line 6 use of undefined constant palavra - assumed 'palavra' in c:\arquivos de programas\easyphp1-8\www\estudo_de_php\busca.php on line 7 Só que agora tbm dar.: use of undefined constant noticia - assumed 'noticia' in c:\arquivos de programas\easyphp1-8\www\estudo_de_php\busca.php on line 15 Até Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 19, 2007 <?php include 'conecta.php'; $db = conectar(); if( !empty($_POST['palavra']) ) { $palavra = str_replace(" ", "%", $_POST['palavra']); /* Altera os espaços adicionando no lugar o simbolo % */ $qr = "SELECT * FROM noticias WHERE noticia LIKE '%".$palavra."%' ORDER BY codigo DESC"; $sql = mysql_query($qr); // Executa a query no Banco de Dados $total = mysql_num_rows($sql); // Conta o total ded resultados encontrados echo "Sua busca retornou <b>'$total'</b> resultados.<br>"; while( $r = mysql_fetch_array($sql) ) { // Gera o Loop com os resultados echo "<hr><br />"; echo preg_replace("/($palavra)/is", "<strong>\\1</strong>", $r['noticia']) . "<br />"; } } ?> Provavelmente você continuou não colocando os apóstrofos nas chaves de $_POST e $r, certo? []'s Compartilhar este post Link para o post Compartilhar em outros sites
xAcesHighx 0 Denunciar post Postado Novembro 19, 2007 Aproveitando o tópico e um problema que também estou tendo... Nesse código se você digitar mais que uma palavra, a busca não retorna nenhum resultado (mesmo que exista). Como resolver este problema nesse código? Alguém saca? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
xavrim 0 Denunciar post Postado Novembro 19, 2007 Exato.. Que burrice, agora que eu vi isso.. :( Vlw Paulo André! xAcesHighx No meu deu certinho, mesmo com duas palavras.. Pegue este código aii! Compartilhar este post Link para o post Compartilhar em outros sites
xAcesHighx 0 Denunciar post Postado Novembro 19, 2007 Estranho, eu utilizo só um campo da tabela para onde a busca aponta e com duas palavras não funciona http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif=(( Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 19, 2007 Não deve funcionar mesmo, por exemplo, deve estar gerando a seguinte query, caso seja buscado "formulario html"? "LIKE '%formulario html%'" Ou seja, qualquer coisa que contenha formulario html, e não formulario e html. Percebem como a separação é importante? Neste caso, você pode fazer alguma rotina que quando houver espaço entre as palavras, inclua um % nestes espaços. Isto para buscar, mas para o destaque são outros 500... []'s ;) Compartilhar este post Link para o post Compartilhar em outros sites
xAcesHighx 0 Denunciar post Postado Novembro 19, 2007 Paulo, Está acontecendo isso mesmo. No caso teria que aplicar algo aqui, não é? $palavra = str_replace(" ", "%", $HTTP_POST_VARS[palavra]); Saberia ou poderia me ajudar nesse caso? Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Novembro 19, 2007 Ops... :huh: Nem tinha visto esta parte do código... Neste caso era pra funcionar sim... Tente usar o exemplo que eu fiz antes, usando $_POST, colocando apóstrofos e etc... Compartilhar este post Link para o post Compartilhar em outros sites
xavrim 0 Denunciar post Postado Novembro 19, 2007 Paulo, por acaso você trabalha na seven informática de BH? Até (Brigadão) Compartilhar este post Link para o post Compartilhar em outros sites
xAcesHighx 0 Denunciar post Postado Novembro 19, 2007 <?php if( !empty($_POST['palavra']) ) { $palavra = str_replace(" ", "%", $_POST['palavra']); /* Altera os espaços adicionando no lugar o simbolo % */ $qr = "SELECT * FROM Relatorios WHERE id_rel LIKE '%".$palavra."%' ORDER BY id_rel"; $sql = mysql_query($qr); // Executa a query no Banco de Dados $total = mysql_num_rows($sql); // Conta o total ded resultados encontrados echo "Sua busca retornou <b>'$total'</b> resultados.<br>"; while( $r = mysql_fetch_array($sql) ) { // Gera o Loop com os resultados echo "<hr><br />"; echo preg_replace("/($palavra)/is", "<strong>\\1</strong>", $r['id_rel']) . "<br />"; } } ?> Tb achei estranho não funcionar sendo que existe uma função para alterar os espaços por %. Só funciona com uma palavra http://forum.imasters.com.br/public/style_emoticons/default/natal_mad.gif Se alguém souber o que possa ser, me ajude. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
xavrim 0 Denunciar post Postado Novembro 19, 2007 beleza xAcesHighx?! Seguinte, o script e este ai mesmo, agora pode ser como você fez seu banco de dados.. Manda ele ai! Até Compartilhar este post Link para o post Compartilhar em outros sites
xAcesHighx 0 Denunciar post Postado Novembro 19, 2007 beleza, xavrim, Então, minha tabela é composta por 3 campos: id_rel (chave primária, auto-incremento) id_rep (padrão 0, recebe o id do representante de uma outra tabela) texto (tipo varchar, recebe textos em geral) Muito estranho não funcionar. Compartilhar este post Link para o post Compartilhar em outros sites
xavrim 0 Denunciar post Postado Novembro 20, 2007 vou tentar fazer com a sua tabela... Compartilhar este post Link para o post Compartilhar em outros sites
xavrim 0 Denunciar post Postado Novembro 20, 2007 <?php include 'conecta.php'; $db=conectar(); ?> <? if(!empty($_POST['palavra'])) { $palavra = str_replace(" ", "%", $_POST['palavra']); /* Altera os espaços adicionando no lugar o simbolo % */ $qr = "SELECT * FROM [b]procura[/b] WHERE [b]texto[/b] LIKE '%".$palavra."%' ORDER BY [b]id_rel[/b] DESC"; $sql = mysql_query($qr); // Executa a query no Banco de Dados $total = mysql_num_rows($sql); // Conta o total ded resultados encontrados echo "Sua busca retornou <b>'$total'</b> resultados.<br>"; while($r = mysql_fetch_array($sql)) { // Gera o Loop com os resultados echo "<hr><br />"; //echo $r[noticia]."<br>"; echo preg_replace("/($palavra)/is", "<strong>\\1</strong>", $r['[b]texto[/b]']). "<br/>"; } } ?> O que estiver em negrito, é para você mudar. Até Compartilhar este post Link para o post Compartilhar em outros sites
xAcesHighx 0 Denunciar post Postado Novembro 20, 2007 Valeu, xavrim. Olha que estranho! Criei uma tabela Teste com os campos ID e Texto. Depois gravei três registros. id 1: volante direção porta (texto) id 2: porta buzina roda (texto) id 3: roda acelerador brake (texto) Se minha busca é: "volante direção" OK, acha 1 resultado. Se minha busca é: "volante roda", NADA, nenhum resultado encontrado. Ou seja, buscar palavras contidas em IDs diferentes o resultado da busca é sempre "0". Já aconteceu algo assim com vocês??? Abraços. <? if( !empty($_POST['palavra']) ) { $palavra = str_replace(" ", "%", $_POST['palavra']); /* Altera os espaços adicionando no lugar o simbolo % */ $qr = "SELECT * FROM Teste WHERE texto LIKE '%".$palavra."%' ORDER BY id"; $sql = mysql_query($qr); // Executa a query no Banco de Dados $total = mysql_num_rows($sql); // Conta o total ded resultados encontrados echo "Sua busca retornou <b>'$total'</b> resultados.<br>"; while($r = mysql_fetch_array($sql)) { // Gera o Loop com os resultados echo "<hr><br />"; echo $r[texto]."<br>"; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
xavrim 0 Denunciar post Postado Novembro 20, 2007 Entendiii.. Suas perguntas anteriomente não foram muita claras, mais tá valendo. Agora, aproveitando, como seria utilziar explode() neste caso. Compartilhar este post Link para o post Compartilhar em outros sites