Ir para conteúdo

POWERED BY:

Arquivado

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

rebortec

[Resolvido] Busaca Php

Recommended Posts

Boas pessoal, fiz este código:

$sql = "SELECT * FROM empresa";
if ($_GET['pesquisa'] == 'Pesquisar') {
// busca apenas por nome
if ($_GET['o_que'] != " " AND $_GET['onde'] == " ") {
$sql .= " WHERE nome LIKE '%".$_GET['o_que']."%' ";
}
// busca apenas por onde
else if ($_GET['o_que'] == " " AND $_GET['onde'] != " ") {
$sql .= " WHERE concelho LIKE '%".$_GET['onde']."%' ";
}

// busca nome e onde
else if ($_GET['o_que'] != " " AND $_GET['onde'] != " ") {
$sql .= " WHERE nome LIKE '%".$_GET['o_que']."%' AND distrito LIKE '%".$_GET['onde']."%' ";
}
} // fim do get_buscar
$queryEmpresa = mysql_query($sql) or die(mysql_error());
while ($resultado = mysql_fetch_array($queryEmpresa)) {
$titulo = $resultado['nome'];
echo '<a class="titulo" href="">'.$titulo.'</a>';

 

Está a funcionar, mas por exemplo assim funciona:

if ($_GET['o_que'] != " " AND $_GET['onde'] == " ") {
$sql .= " WHERE nome LIKE '%".$_GET['o_que']."%' ";
}

 

Mas preciso que pesquise em mais do que uma coluna da tabela e se colocar OR não funciona.

Exemplo que não funciona:

if ($_GET['o_que'] != " " AND $_GET['onde'] == " ") {
$sql .= " WHERE nome LIKE '%".$_GET['o_que']."%' OR categoria LIKE '%".$_GET['o_que']."%' ";
}

 

Podem-me ajudar?

 

Por exemplo queria que se procura-se só por onde, pesquisa-se nas colunas (Localidade, CP, Morada, Distrito, Concelho) e o activo='1'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é or , e sim AND

Com AND também não dá, mas eu que queria mesmo OR porque pode não conter o registo numa coluna e conter noutra.

 

Não é or , e sim AND

Com AND também não dá, mas eu que queria mesmo OR porque pode não conter o registo numa coluna e conter noutra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, eu começaria exibindo o sql pra ter uma ideia do que realmente esta sendo feito...

antes de executar a consulta

($queryEmpresa = mysql_query($sql) or die(mysql_error());)

exibe o sql e veja onde está o erro.

echo $sql; die;

 

se o sql estiver correto e mesmo assim nao exibir nada, entao realmente é pq nao existe dados no bd que atenda a clausula WHERE.

 

mas de qualquer forma faça isso e poste o sql aqui pra gente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, eu começaria exibindo o sql pra ter uma ideia do que realmente esta sendo feito...

antes de executar a consulta

($queryEmpresa = mysql_query($sql) or die(mysql_error());)

exibe o sql e veja onde está o erro.

echo $sql; die;

 

se o sql estiver correto e mesmo assim nao exibir nada, entao realmente é pq nao existe dados no bd que atenda a clausula WHERE.

 

mas de qualquer forma faça isso e poste o sql aqui pra gente.

Boas

 

Fiz um echo do sql e verifiquei que efectua sempre o ultimo if o que imprime no monitor é :

SELECT * FROM empresa WHERE nome LIKE '%%' AND distrito LIKE '%p%'

Seja qul for a pesquisa

Compartilhar este post


Link para o post
Compartilhar em outros sites

humm acho que sei o que pode ser entao

nos seus if tem um espaço em branco.

if ($_GET['o_que'] != " " AND $_GET['onde'] == " ") {
  .
  .
}

 

tente tirar o espaço

if ($_GET['o_que'] != "" AND $_GET['onde'] == "") { //junte as aspas um na outra
  .
  .
}

 

ou tbm pode tentar assim

if ( !isset($_GET['o_que']) AND !isset($_GET['onde']) ) {
  .
  .
}

 

faça em todos os seus if

 

veja se resolve

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.