Ir para conteúdo

POWERED BY:

Arquivado

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

xavrim

$http_post_vars

Recommended Posts

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

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

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

<?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

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

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

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

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

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

<?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

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

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

<?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

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

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

×

Informação importante

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