Jump to content


Photo

Consulta Concatenada


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

#1 leocampra

leocampra

    Turista

  • Usuários
  • 54 posts
  • Sexo:Não informado

Posted 16/02/2009, 12:06

galera a duvida é o seguinte, estou fazendo uma consulta concatenada ou seja tenho um unico campo texto onde o usuario pode digitar mais de uma palavra e a consulta tem que ser feita de palavra em palavra. implementei o codigo abaixo so que esta pegando somente a primeira e a ultima palavra digitada pelo usuario. alguem ai pode me ajudar?

$teste=(explode(" ", $_POST["pesquisa"]));
	for($i=0; $i<count($teste); $i++){
		if ($i==0) {
			$primeiro="titulo like '%".$teste[0]."%'";
		}
		if ($i!=0) {
				$segundo=" or titulo like '%".$teste[$i]."%'";
		}
	  $sql10="select * from objeto where ".$primeiro.$segundo." order by id_objeto desc";
	$exec1=mysql_query($sql10,$con);


#2 chipis

chipis

    24 Horas

  • Usuários
  • 439 posts
  • Sexo:Masculino
  • Localidade:Blumenau - SC

Posted 16/02/2009, 13:00

Olá é que a variavel $segundo esta pegando somente o ultimo loop do for,
voce tem que declara ela antes do for e concatenar dentro do for, segue:
$teste=(explode(" ", $_POST["pesquisa"]));
$segundo	=	"";
for($i=0; $i<count($teste); $i++){
	if ($i==0) {
		$primeiro="titulo like '%".$teste[0]."%'";
	}
	if ($i > 0) {
			 $segundo.=" or titulo like '%".$teste[$i]."%'";
	}
  
}
echo $sql10="select * from objeto where ".$primeiro.$segundo." order by id_objeto desc"."<br>";
$exec1=mysql_query($sql10,$con);
O sql executado tem que ficar fora do for para não repetir.
Testa ai.

Fwls...

#3 leocampra

leocampra

    Turista

  • Usuários
  • 54 posts
  • Sexo:Não informado

Posted 16/02/2009, 22:55

Olá é que a variavel $segundo esta pegando somente o ultimo loop do for,
voce tem que declara ela antes do for e concatenar dentro do for, segue:

$teste=(explode(" ", $_POST["pesquisa"]));
$segundo	=	"";
for($i=0; $i<count($teste); $i++){
	if ($i==0) {
		$primeiro="titulo like '%".$teste[0]."%'";
	}
	if ($i > 0) {
			 $segundo.=" or titulo like '%".$teste[$i]."%'";
	}
  
}
echo $sql10="select * from objeto where ".$primeiro.$segundo." order by id_objeto desc"."<br>";
$exec1=mysql_query($sql10,$con);
O sql executado tem que ficar fora do for para não repetir.
Testa ai.

Fwls...




cara deu certinho, valeu pela força.




1 user(s) are reading this topic

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

IPB Skin By Virteq