Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
carol

Problema Em Busca

Question

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

Share this post


Link to post
Share on other sites

23 answers to this question

Recommended Posts

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

Share this post


Link to post
Share on other sites
  • 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!

Share this post


Link to post
Share on other sites
  • 0

baixa ai..

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".

alguma luz????? :unsure:

obrigada!

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148588
    • Total Posts
      644154
×
×
  • Create New...