Ir para conteúdo

POWERED BY:

Arquivado

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

betodesign

[Resolvido] Busca interna php

Recommended Posts

Achei a solução, era bem simples, mas é só fazer a busca dentro do foreach, mas sem utilizar while, pois senão saíria um loop com o resultado de cada palvra:

$words = "oi mãe tchau";
$words = explode(' ', $words);
foreach($words as $w){
$sql = "SELECT * FROM `tabela` WHERE `campo` LIKE '%".$w."%'";
$query = mysql_query($sql) or die (mysql_error());
$resultado = mysql_fetch_object($query);
echo $resultado->id."<br>";//Mostra os id's dos resultados encontrados
}

 

Olha eu já nao gosto de fazer dessa forma que ele esta fazendo, pois assim você vai executar o SQL várias vezes no seu banco, fazendo o seu sistema ficar lento e fora que vai atrapalhar no caso de você precisar fazer paginação no resultado..

 

Eu já trabalharia da seguinte forma

 

<?php
$busca = $_POST["busca"];

$aux = explode(" ", $busca);

$i = 0;

while ($aux[$i] != "") {
	// esse IF vai servir para a primeira palavra ou se existir apenas uma palavra
	if ($i == 0) {
		$busca = "campo LIKE '%".$aux[$i]."%'";
	} else {
		// Aki ele concatena se existir várias palavras
		$busca .= " OR campo LIKE '%".$aux[$i]."%'";
	}

	$i++;
}

$query = mysql_query("SELECT * FROM tabela WHERE $busca");
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha eu já nao gosto de fazer dessa forma que ele esta fazendo, pois assim você vai executar o SQL várias vezes no seu banco, fazendo o seu sistema ficar lento e fora que vai atrapalhar no caso de você precisar fazer paginação no resultado..

 

Eu já trabalharia da seguinte forma

 

<?php
$busca = $_POST["busca"];

$aux = explode(" ", $busca);

$i = 0;

while ($aux[$i] != "") {
	// esse IF vai servir para a primeira palavra ou se existir apenas uma palavra
	if ($i == 0) {
		$busca = "campo LIKE '%".$aux[$i]."%'";
	} else {
		// Aki ele concatena se existir várias palavras
		$busca .= " OR campo LIKE '%".$aux[$i]."%'";
	}

	$i++;
}

$query = mysql_query("SELECT * FROM tabela WHERE $busca");
?>

 

Funciono direitin aqui, deu ate para coloca a paginação vlw!

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.