Ir para conteúdo
Fórum Script Brasil
  • 0

Problema Em Busca


carol

Pergunta

Oi gente,

Estou com um probleminha na conclusao desse sistema de busca onde tenho 03 variaveis: nome | cidade | atuação.

Meu objetivo é, caso preenche o nome, ele me retornara todos os resultados compativeis com esse nome (isso serve se eu escolher a cidade ou atuação), porém se escolho um nome e uma cidade, gostaria que retornasse apenas os nomes que tem naquela cidade, e se eu preenchesse a atuação, gostaria que retornasse apenas os nomes daquela cidade que executam tal fução... (acho que rodei muito hein)

mas no meu codigo estao voltando (por exemplo se preencho silva | são paulo) todos os silva e todos os são paulo, quando deveria retornar apenas os silva que estao em são paulo...onde posso arrumar essa zica?

<?php
include("mysql_conecta.php");
include("mysql_executa.php");

$enviado = $_POST['enviado'];

if ($enviado=='ok')
{
    $nome_frm = $_POST['nome'];
    $cidade_frm = $_POST['cidade'];
    $atuacao_frm = $_POST['atuacao'];
    
    $query = "SELECT * FROM iab_associados";
    $resultado = mysqlexecuta ($_CONEXAO,$query);
    
    $matriz = array();
    $matriz_id = array();
    
    while ($campo = mysql_fetch_array ($resultado))
    {
  $id_db = $campo['id'];
  $email_db = $campo['email'];
  $nome_db = $campo['nome'];
  $cidade_db = $campo['cidade'];
  $atuacao_db = $campo['atuacao'];
  
  if (! empty ($nome_frm))
  {
      if (stristr($nome_db,$nome_frm)!==false)
      {
    $matriz_id[] = $id_db;
    
    $matriz[ count($matriz) ] ['id'] = $id_db;
    $matriz[ count($matriz) -1] ['email'] = $email_db;
    $matriz[ count($matriz) -1] ['nome'] = $nome_db;
    $matriz[ count($matriz) -1] ['cidade'] = $cidade_db;
    $matriz[ count($matriz) -1] ['atuacao'] = $atuacao_db;
      }
  }    

  if (! empty ($cidade_frm))
  {
      if ( (stristr ($cidade_db,$cidade_frm)!==false) and (! in_array($id_db,$matriz_id)) )
      {
    $matriz_id[] = $id_db;
    
    $matriz[ count($matriz) ] ['id'] = $id_db;
    $matriz[ count($matriz) -1] ['email'] = $email_db;
    $matriz[ count($matriz) -1] ['nome'] = $nome_db;
    $matriz[ count($matriz) -1] ['cidade'] = $cidade_db;
    $matriz[ count($matriz) -1] ['atuacao'] = $atuacao_db;
      }
  }

  if ( (! empty ($atuacao_frm)) and ($atucao_frm!=='escolha'))
  {
      if (stristr($atuacao_db,$atuacao_frm)!==false  and (! in_array($id_db,$matriz_id)) )
      {
    $matriz_id[] = $id_db;
    
    $matriz[ count($matriz) ] ['id'] = $id_db;
    $matriz[ count($matriz) -1] ['email'] = $email_db;
    $matriz[ count($matriz) -1] ['nome'] = $nome_db;
    $matriz[ count($matriz) -1] ['cidade'] = $cidade_db;
    $matriz[ count($matriz) -1] ['atuacao'] = $atuacao_db;
      }
  }
    //
    }
    

}

?>
<form name="form1" method="post" action="<?=$PHP_SELF;?>">
  <table width="48%" border="1" align="center" cellpadding="10" cellspacing="0" bordercolor="#F0F0F0">
    <tr> 
      <td width="40%"><div align="right">nome</div></td>
      <td width="60%"><input name="nome" type="text" id="nome" size="40"></td>
    </tr>
    <tr> 
      <td><div align="right">cidade</div></td>
      <td><input name="cidade" type="text" id="cidade" size="40"></td>
    </tr>
    <tr>
      <td><div align="right">Atua&ccedil;&atilde;o</div></td>
      <td><font color="#CC3333" size="2" face="Verdana, Arial, Helvetica, sans-serif">
        <select name="atuacao" class="texto11" id="select">
          <option value="">escolha</option>
          <option value="Arquitetura - Bancos">Arquitetura - Bancos</option>
          <option value="Arquitetura - Cinemas">Arquitetura - Cinemas</option>
          <option value="Arquitetura - Comercial">Arquitetura - Comercial</option>
          <option value="Arquitetura - Corporativa">Arquitetura - Corporativa</option>
          <option value="Arquitetura - Edificios Administrativos">Arquitetura 
          - Edificios Administrativos</option>
          <option value="Arquitetura - Edificios Culturais">Arquitetura - Edificios 
          Culturais</option>
          <option value="Arquitetura - Edificios de Escrit&oacute;rios">Arquitetura 
          - Edificios de Escrit&oacute;rios</option>
          <option value="Arquitetura - Edificios Institucionais">Arquitetura - 
          Edificios Institucionais</option>
          <option value="Arquitetura - Edificios P&uacute;blicos">Arquitetura - 
          Edificios P&uacute;blicos</option>
          <option value="Arquitetura - Edificios Residenciais">Arquitetura - Edificios 
          Residenciais</option>
          <option value="Arquitetura - Educacional">Arquitetura - Educacional</option>
          <option value="Arquitetura - Escolas e Universidades">Arquitetura - 
          Escolas e Universidades</option>
          <option value="Arquitetura - Espa&ccedil;os Culturais">Arquitetura - Espa&ccedil;os 
          Culturais</option>
          <option value="Arquitetura - Esportivo">Arquitetura - Esportivo</option>
          <option value="Arquitetura - Hospitalar">Arquitetura - Hospitalar</option>
          <option value="Arquitetura - Hoteis">Arquitetura - Hoteis</option>
          <option value="Arquitetura - Igrejas">Arquitetura - Igrejas</option>
          <option value="Arquitetura - Industrial">Arquitetura - Industrial</option>
          <option value="Arquitetura - Interiores">Arquitetura - Interiores</option>
          <option value="Arquitetura - Lojas">Arquitetura - Lojas</option>
          <option value="Arquitetura - Patrim&ocirc;nio Hist&oacute;rico">Arquitetura 
          - Patrim&ocirc;nio Hist&oacute;rico</option>
          <option value="Arquitetura - Pousadas">Arquitetura - Pousadas</option>
          <option value="Arquitetura - Reformas">Arquitetura - Reformas</option>
          <option value="Arquitetura - Residencial">Arquitetura - Residencial</option>
          <option value="Arquitetura - Servi&ccedil;os">Arquitetura - Servi&ccedil;os</option>
          <option value="Arquitetura - Transportes">Arquitetura - Transportes</option>
          <option value="Comunica&ccedil;&atilde;o Visual">Comunica&ccedil;&atilde;o 
          Visual</option>
          <option value="Consultoria">Consultoria</option>
          <option value="Decora&ccedil;&atilde;o">Decora&ccedil;&atilde;o</option>
          <option value="Desenho Industrial">Desenho Industrial</option>
          <option value="Desenho Urbano">Desenho Urbano</option>
          <option value="Design">Design</option>
          <option value="Design de Multim&iacute;dia">Design de Multim&iacute;dia</option>
          <option value="Design Gr&aacute;fico">Design Gr&aacute;fico</option>
          <option value="Estudos de Viabilidade">Estudos de Viabilidade</option>
          <option value="Estudos Preliminares">Estudos Preliminares</option>
          <option value="Fiscaliza&ccedil;&atilde;o de Obras">Fiscaliza&ccedil;&atilde;o 
          de Obras</option>
          <option value="Gerenciamento de Obras">Gerenciamento de Obras</option>
          <option value="Ilumina&ccedil;&atilde;o - Comunica&ccedil;&atilde;o Visual">Ilumina&ccedil;&atilde;o 
          - Comunica&ccedil;&atilde;o Visual</option>
          <option value="Ilumina&ccedil;&atilde;o - Mobili&aacute;rio Urbano">Ilumina&ccedil;&atilde;o 
          - Mobili&aacute;rio Urbano</option>
          <option value="Internet">Internet</option>
          <option value="Luminot&eacute;cnica">Luminot&eacute;cnica</option>
          <option value="Paisagismo - Desenho Urbano">Paisagismo - Desenho Urbano</option>
          <option value="Paisagismo - Parques">Paisagismo - Parques</option>
          <option value="Paisagismo - Planejamento">Paisagismo - Planejamento</option>
          <option value="Planejamento Ambiental">Planejamento Ambiental</option>
          <option value="Planejamento Urbano">Planejamento Urbano</option>
          <option value="Programa&ccedil;&atilde;o Visual">Programa&ccedil;&atilde;o 
          Visual</option>
          <option value="Projeto Arquitet&ocirc;nico">Projeto Arquitet&ocirc;nico</option>
          <option value="Projeto de Edifica&ccedil;&atilde;o">Projeto de Edifica&ccedil;&atilde;o</option>
          <option value="Projeto Urbano">Projeto Urbano</option>
          <option value="Tensoestruturas">Tensoestruturas</option>
          <option value="Urbanismo">Urbanismo</option>
        </select>
        </font></td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="Enviar"> <input name="enviado" type="hidden" id="enviado" value="ok"></td>
    </tr>
  </table>
</form>

<?php
if ($enviado == 'ok')
{
    echo "<table width='48%' border='1' align='center' cellpadding='10' cellspacing='0' bordercolor='#F0F0F0'>
     <tr> 
     <td width='100%'>Resultados da Busca <div align='right'></div></td>
     </tr>
     <tr>
     <td>";
     
    if (count ($matriz) == 0)
    {
      echo "<table width='70%' border='1' align='center' cellpadding='5' cellspacing='0'>
       <tr> 
       <td><div align='center'>Nenhum registro foi encontrado</div></td>
       </tr>
        </table>";
    }
    else
    {
  for($i=0;$i<count($matriz);$i++)
  {
      $nome = $matriz[$i]['nome'];
      $email = $matriz[$i]['email'];
      $area = $matriz[$i]['atuacao'];
      
      echo "<table width='70%' border='1' align='center' cellpadding='5' cellspacing='0'>
       <tr> 
       <td width='36%'><div align='right'>nome</div></td>
       <td width='64%'>$nome</td>
       </tr>
       <tr> 
       <td><div align='right'>email</div></td>
       <td>$email</td>
       </tr>
       <tr> 
       <td><div align='right'>&aacute;rea</div></td>
       <td>$area</td>
       </tr>
        </table>";
  }
    }
    
    echo "</td>
  </tr>
</table>";
    
}
?>

Desde já obrigada!

tchauzinho..

Link para o comentário
Compartilhar em outros sites

23 respostass a esta questão

Posts Recomendados

  • 0
Carol será que não fica mais fácil você colocar no formulário onde ele quer fazer a busca, usando Radio ou Select. Facilitaria o seu trabalho mais não sei se você quer assim ou se já tentou fazer assim??

na verdade o que esta acontecendo nesse código é que ele esta apresentando resultados "ou" e não "e" limitando por exemplo os nomes em uma determinada cidade...a questão é que não encontro onde configurar esse "e".

B)

obrigada!

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Carol, sou novo aqui no fórum, na verdade é meu primeiro post, mas acredito que posso te ajudar :)

Bom lá vai..

A questão é a sua STRING SQL,

SELECT * FROM nome_da_tabela
Um exemplo: Vamos imaginar que a tabela da qual você busca os dados se chama tb_contatos. com os seguintes campos: id,con_nome,con_cidade,con_estado: OK! Agora vamos encarar que seu sistema de busca seja composto de uma input text para buscar pelo nome, uma para a cidade e uma para o estado, com os respectivos nomes nas tags: nome, cidade e estado(aff! essa parte ficou redundate né ;). Vamos lá: A página de busca seria algo do tipo
<?php
//Identificar os campos
$nome = $_POST["nome"];
$cidade = $_POST["cidade"];
$estado = $_POST["estado"];
//e montar a STRING SQL
$strsql = "SELECT * FROM tb_contatos WHERE con_nome LIKE '%$nome' AND con_cidade = '$cidade' AND con_estado = '$estado'";
//bom daí pra frente é executar essa string no banco de dados seja ele qual for.

Assim a consulta vai retornar exatamente os resultados que você queria, no caso "nome tal" da "cidade" tal e do "estado" tal.

Obs: Talvez você já saiba mas, a cláusula WHERE é usada para condicionar o resultado da consulta depois que ela é declarada o que vier depois são condições.

A cláusula LIKE é usada para retornar um padrão de busca por exemplo da maneira que está acima, será retornado os registros que começarem com o valor passado pela input, por exemplo se eu digitar "MARIA" a consulta resultará em todos os registros que contiverem "MARIA", no caso que começarem com "MARIA" pois o caractere "%" foi posicionado a frente do valor, se estivesse assim:"%$nome%", ele iria procurar tanto aqueles que começarem com MARIA ou terminarem, caso eu envie somente "M" todos que começam com M e assim por diante.

O operador AND funciona como o "&&" do PHP quando a condição tem que satisfazer mais de um critério.

Outra OBS: Seria muito interessante testar se foi realmente enviado algum valor nos campos cidade e estado, no nome não é necessário pois caso não seja enviado nenhum valor a busca retornará todos os registros, culpa do LIKE.

Ufa!

Acabei!

É isso ae Carol, qualquer dúvida manda ae!

:D

Link para o comentário
Compartilhar em outros sites

  • 0

Pelo que eu entendi poderia ser assim:

//Pra quem gosta de _GET e _POST

$nome = $_GET[nome];

$cidade = $_GET[cidade];

$atuacao = $_GET[atuacao];

$sql = msyql_query("select * from tabela where nome like '%$nome%' or cidade like '%cidade%' or atuacao like '%ataucao%' ") or die ("Deu tiuctch");

$total = mysql_num_rows($sql);

for ($dix = 0; $dix < $total; $dix++)

{

$dados = mysql_fetch_array($sql);

?>

Resultdos <?=$total;?>

<?=$dados[nome];?> <?=$dado[cidade];?> <?=$dados[atuacao];?>

}

Tenta ai se não der me passa um email que te passo como fazer com outro loop

Link para o comentário
Compartilhar em outros sites

  • 0

case num te ajudaria a fazer seleçoes e selects melhores e mais divididos ?

case nome!=null

select nome...

case nome!=null || cidade!=null

select nome and cidade

? separar os selects por acçao do usuario.....

Luiz Curti - Web Developer

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...