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

Uma Ajuda No Selecte


MauF

Pergunta

Oi pessoal, queria fazer uma consulta mais detalhada, no formulario html

tem o campo de matricula, nome, cpf e cidade..

quero uma coisa assim, se pesquisar por matricula vem a pessoa dona daquela matricula, se pesquisar por nome ven todas as pessoas que tiver aquele nome, se pesquisar por cpf vem o dono do cpf, se pesquisar por cidade vem todos daquela cidade e se não botar nada vem todos os cadastrados.

esse é o código

<table width="100%" border="0" align="center">
<tr>
        <td width="13%"><strong><font color="#000000" face="Arial, Helvetica, sans-serif">Matricula</font></strong></td>
        <td width="42%"><font color="#000000" face="Arial, Helvetica, sans-serif"><strong>Nome</strong></font></td>
        <td width="17%"><font color="#000000" face="Arial, Helvetica, sans-serif"><strong>CPF</strong></font></td>
        <td width="28%"><strong><font color="#000000" face="Arial, Helvetica, sans-serif">Cidade</font></strong></td>
</tr>

<?

include "conecta.php";

$query = mysql_query("SELECT * FROM associado ORDER BY nome");

$linhas = mysql_num_rows($query);

if($linhas == 0){

echo "Nada encontrado";
exit();
}
else{

while($row = mysql_fetch_array($query)){

$matricula    = $row["matricula"];
$nome         = $row["nome"];
$cpf          = $row["cpf"];
$end_cidade   = $row["end_cidade"];
$associado_id = $row["associado_id"];

if($linhas %2 == 0){

$cor = "#F0F0F0";
}
else{

$cor = "#E2EFFE";
}

echo "

<tr bgcolor=\"$cor\">
  <td>&nbsp;$matricula</td>
  <td>&nbsp;<a href=\"perfil.php?perfil=$associado_id\">$nome</a></td>
  <td>&nbsp;$cpf</td>
  <td>&nbsp;$end_cidade</td>
</tr>";


}
}
?>

</table>

so não to conseguindo fazer a consulta detalhada.....

Algúm pode me ajudar.

Link para o comentário
Compartilhar em outros sites

22 respostass a esta questão

Posts Recomendados

  • 0

É +ou- assim que funciona:

$busca = $POST['Nome_do_Campo_de_Pesquiza'];

$opcao = $POST['Nome_do_Select'];

if($opcao=="nome") $where = "nome='%".$busca."%' ";

if($opcao=="cpf")  $where = "cpf='".$busca."' ";

if($opcao=="cidade") $where = "cidade='%".$busca."%' ";

$query = mysql_query("SELECT * FROM associado WHERE ".$where." ORDER BY nome");

Link para o comentário
Compartilhar em outros sites

  • 0

Tipo esse aqui...

<form method="post" action="../scripts/consulta_associado.php" name="consulta">
              <table width="644" border="0">
                <tr> 
                  <td width="229"><div align="right"><font color="#666666" size="-1" face="Arial, Helvetica, sans-serif">Matr&iacute;cula:</font></div></td>
                  <td width="405">&nbsp;<input type="text" name="matricula"	size="12" maxlength="20"> 
                    &nbsp;</td>
                </tr>
                <tr> 
                  <td><div align="right"><font color="#666666" size="-1" face="Arial, Helvetica, sans-serif">Nome:</font></div></td>
                  <td>&nbsp;<input type="text" name="nome" size="50" maxlength="100"></td>
                </tr>
                <tr> 
                  <td><div align="right"><font color="#666666" size="-1" face="Arial, Helvetica, sans-serif">CPF:</font></div></td>
                  <td>&nbsp;<input type="text" name="cpf" size="11" maxlength="15"></td>
                </tr>
                <tr> 
                  <td><div align="right"><font color="#666666" size="-1" face="Arial, Helvetica, sans-serif">Cidade:</font></div></td>
                  <td>&nbsp;<input type="text" name="end_cidade" size="25" maxlength="80"></td>
                </tr>
                <tr>
                  <td>&nbsp;</td>
                  <td>&nbsp;<input type="submit" name="consultar" value="Consultar" class="combo">&nbsp;<input type="reset" name="limpar" value="Limpar" class="combo"></td>
                </tr>
              </table>
            </form>

Link para o comentário
Compartilhar em outros sites

  • 0

Pelo seu formulário eu entendi, o que você quer de fato, veja:

Mude a sua query para:

$query = mysql_query("SELECT * FROM associado

WHERE

nome='%".$_POST['nome']."%'

AND

cidade=%".$_POST['end_cidade]."%'

ORDER BY nome");

Eu está pensando assim:

<FORM NAME='form_estudo' ACTION='PÁGINA_RESULTADO.PHP' METHOD='POST'>

Buscando: <INPUT NAME='Nome_do_Campo_de_Pesquiza' Type='text'><BR>

Por: <SELECT NAME='Nome_do_Select'>

<OPTION VALUE='nome'>Nome</OPTION>

<OPTION VALUE='cpf'>CPF</OPTION>

<OPTION VALUE='cidade'>Cidade</OPTION>

</SELECT>

<INPUT TYPE='submit' VALUE='Buscar'>

</FORM>

Ai iria dar certo aquele código que eu passei.

Link para o comentário
Compartilhar em outros sites

  • 0

Ve se to fazendo certo, voce é minhaultima esperança para fazer essa jossa funcionar...

<table width="100%" border="0" align="center">
  <tr>
          <td width="13%"><strong><font color="#000000" face="Arial, Helvetica, sans-serif">Matricula</font></strong></td>
          <td width="42%"><font color="#000000" face="Arial, Helvetica, sans-serif"><strong>Nome</strong></font></td>
          <td width="17%"><font color="#000000" face="Arial, Helvetica, sans-serif"><strong>CPF</strong></font></td>
          <td width="28%"><strong><font color="#000000" face="Arial, Helvetica, sans-serif">Cidade</font></strong></td>
  </tr>

<?

include "conecta.php";

$busca = $POST['consulta']; //esse esta certo
$opcao = $POST['Nome_do_Select'];//Qual nome coloco aqui

if($opcao=="maticula") $where = "maticula='%".$busca."%' ";
if($opcao=="nome") $where = "nome='%".$busca."%' ";
if($opcao=="cpf")  $where = "cpf='".$busca."' ";
if($opcao=="cidade") $where = "cidade='%".$busca."%' ";

$query = mysql_query("SELECT * FROM associado WHERE nome='%".$_POST['nome']."%' AND
cidade='%".$_POST['end_cidade']."%' ORDER BY nome");  //erro linha 208

//$query = mysql_query("SELECT * FROM associado ORDER BY nome");

$linhas = mysql_num_rows($query);

if($linhas == 0){

echo "Nada encontrado";
exit();
}
else{

while($row = mysql_fetch_array($query)){

$matricula    = $row["matricula"];
$nome         = $row["nome"];
$cpf          = $row["cpf"];
$end_cidade   = $row["end_cidade"];
$associado_id = $row["associado_id"];

if($linhas %2 == 0){

$cor = "#E2EFFE";
}
else{

$cor = "#E2EFFE";
}

echo "

  <tr bgcolor=\"$cor\">
    <td>&nbsp;$matricula</td>
    <td>&nbsp;<a href=\"perfil.php?perfil=$associado_id\">$nome</a></td>
    <td>&nbsp;$cpf</td>
    <td>&nbsp;$end_cidade</td>
  </tr>";


}
}
?>

</table>

è mais ou menos assim ou continua errado..

Link para o comentário
Compartilhar em outros sites

  • 0

Salve-o novamente o os nome especifícados e execute a página "formulario.php"

Salve como: formulario.php

<FORM NAME='form_estudo' ACTION='resultado.php' METHOD='POST'>

<INPUT NAME='Nome_do_Campo_de_Pesquiza' Type='text'><BR>

<SELECT NAME='Nome_do_Select'>

<OPTION VALUE='nome'>Nome</OPTION>

<OPTION VALUE='cpf'></OPTION>

<OPTION VALUE='cidade'></OPTION>

</SELECT>

<INPUT TYPE='submit' VALUE='Buscar'>

</FORM>

Salve como: resultado.php

<table width="100%" border="0" align="center">

<tr>

         <td width="13%"><strong><font color="#000000" face="Arial, Helvetica, sans-serif">Matricula</font></strong></td>

         <td width="42%"><font color="#000000" face="Arial, Helvetica, sans-serif"><strong>Nome</strong></font></td>

         <td width="17%"><font color="#000000" face="Arial, Helvetica, sans-serif"><strong>CPF</strong></font></td>

         <td width="28%"><strong><font color="#000000" face="Arial, Helvetica, sans-serif">Cidade</font></strong></td>

</tr>

<?

include "conecta.php";

$busca = $POST['Nome_do_Campo_de_Pesquiza'];

$opcao = $POST['Nome_do_Select'];

if($opcao==nome") $where = " WHERE nome='%".$busca."%' ";

if($opcao=="cpf")  $where = " WHERE cpf='".$busca."' ";

if($opcao=="cidade") $where = " WHERE cidade='%".$busca."%' ";

$query = mysql_query("SELECT * FROM associado ".$where." ORDER BY nome");

//$query = mysql_query("SELECT * FROM associado ORDER BY nome");

$linhas = mysql_num_rows($query);

if($linhas == 0){

echo "Nada encontrado";

exit();

}

else{

while($row = mysql_fetch_array($query)){

$matricula    = $row["matricula];

$nome         = $row["nome"];

$cpf          = $row["cpf"];

$end_cidade   = $row["end_cidade"];

$associado_id = $row["associado_id"];

if($linhas %2 == 0){

$cor = "#E2EFFE";

}

else{

$cor = "#E2EFFE";

}

echo "

<tr bgcolor=\"$cor\">

   <td>&nbsp;$matricula</td>

   <td>&nbsp;<a href=\"perfil.php?perfil=$associado_id\">$nome</a></td>

   <td>&nbsp;$cpf</td>

   <td>&nbsp;$end_cidade</td>

</tr>";

}

}

?>

</table>

Só resta sabe se, os campos: "nome","cpf" e "cidade" existe, se tiver outro nome algum deste campo tem que mudar algumas cozinhas no script.

Link para o comentário
Compartilhar em outros sites

  • 0

esse da erro nalinha 25....

Com o meu formulario e com a minha consulta não da para fazer o que eu quero.....?

Se eu fizer uma consulta simples no meu codigo php, sem filtrar nenhum dado ele busca tudo normalmente....

Mas eu queria ter a opção de buscar detalhada..

Link para o comentário
Compartilhar em outros sites

  • 0

Fica assim:

<table width="100%" border="0" align="center">

<tr>

         <td width="13%"><strong><font color="#000000" face="Arial, Helvetica, sans-serif">Matricula</font></strong></td>

         <td width="42%"><font color="#000000" face="Arial, Helvetica, sans-serif"><strong>Nome</strong></font></td>

         <td width="17%"><font color="#000000" face="Arial, Helvetica, sans-serif"><strong>CPF</strong></font></td>

         <td width="28%"><strong><font color="#000000" face="Arial, Helvetica, sans-serif">Cidade</font></strong></td>

</tr>

<?

include "conecta.php";

//$busca = $POST['Nome_do_Campo_de_Pesquiza'];

//$opcao = $POST['Nome_do_Select'];

//if($opcao==nome") $where = " WHERE nome='%".$busca."%' ";

//if($opcao=="cpf")  $where = " WHERE cpf='".$busca."' ";

//if($opcao=="cidade") $where = " WHERE cidade='%".$busca."%' ";

//$query = mysql_query("SELECT * FROM associado ".$where." ORDER BY nome");

$query = mysql_query("SELECT * FROM associado

WHERE

nome='%".$_POST['nome]."%'

AND

cpf='".$_POST['cpf']."'

AND

end_cidade=%".$_POST['end_cidade]."%'

ORDER BY nome");

//$query = mysql_query("SELECT * FROM associado ORDER BY nome");

$linhas = mysql_num_rows($query);

if($linhas == 0){

echo "Nada encontrado";

exit();

}

else{

while($row = mysql_fetch_array($query)){

$matricula    = $row["matricula"];

$nome         = $row["nome"];

$cpf          = $row["cpf"];

$end_cidade   = $row["end_cidade"];

$associado_id = $row["associado_id"];

if($linhas %2 == 0){

$cor = "#E2EFFE";

}

else{

$cor = "#E2EFFE";

}

echo "

<tr bgcolor=\"$cor\">

   <td>&nbsp;$matricula</td>

   <td>&nbsp;<a href=\"perfil.php?perfil=$associado_id\">$nome</a></td>

   <td>&nbsp;$cpf</td>

   <td>&nbsp;$end_cidade</td>

</tr>";

}

}

?>

</table>

Link para o comentário
Compartilhar em outros sites

  • 0

Porque se em suas configurações PHP Register Globals estiver desligado, ele reconhecerá a variavel assim mesmo.

O CPF ele é unico, caso não colocar na busca, a busca retornará vazia, então tente colocando "ou" em Inglês -> OR em vez de AND.

$query = mysql_query("SELECT * FROM associado

WHERE

nome='%".$_POST['nome']."%'

OR

cpf=".$_POST['cpf]."'

OR

end_cidade='%".$_POST['end_cidade']."%'

ORDER BY nome");

Link para o comentário
Compartilhar em outros sites

  • 0

Ai você terá que uasr condições:

if(strlen($_POST['nome'])>0 AND strlen($_POST['cpf'])>0 AND strlen($_POST['end_cidade'])>0){

$query = mysql_query("SELECT * FROM associado

WHERE

nome=%".$_POST['nome]."%'

OR

cpf='".$_POST['cpf']."'

OR

end_cidade=%".$_POST['end_cidade]."%'

ORDER BY nome");

}else{

$query = mysql_query("SELECT * FROM associado ORDER BY nome");

}

Só irá pesquizar a fundo caso os três campos for digitado algo.

Link para o comentário
Compartilhar em outros sites

  • 0

Tente assim:

if(strlen($_POST['matricula'])>0 AND strlen($_POST['nome'])>0 AND

strlen($_POST['cpf'])>0 AND strlen($_POST['end_cidade'])>0){

$query = mysql_query("SELECT * FROM associado

WHERE

matricula=".$_POST['matricula]."'

OR

nome='%".$_POST['nome']."%'

OR

cpf=".$_POST['cpf]."'

OR

end_cidade='%".$_POST['end_cidade']."%'

ORDER BY nome");

}elseif(strlen($_POST['matricula'])>0 AND strlen($_POST['nome'])==0 AND

strlen($_POST['cpf'])==0 AND strlen($_POST['end_cidade'])==0){

$query = mysql_query("SELECT * FROM associado

WHERE matricula=".$_POST['matricula]."'

ORDER BY nome");

}elseif(strlen($_POST['matricula'])==0 AND strlen($_POST['nome'])>0 AND

strlen($_POST['cpf'])==0 AND strlen($_POST['end_cidade'])==0){

$query = mysql_query("SELECT * FROM associado

WHERE nome=".$_POST['nome]."'

ORDER BY nome");

}elseif(strlen($_POST['matricula'])==0 AND strlen($_POST['nome'])==0 AND

strlen($_POST['cpf'])>0 AND strlen($_POST['end_cidade'])==0){

$query = mysql_query("SELECT * FROM associado

WHERE cpf=".$_POST['cpf]."'

ORDER BY nome");

}elseif(strlen($_POST['matricula'])==0 AND strlen($_POST['nome'])==0 AND

strlen($_POST['cpf'])==0 AND strlen($_POST['end_cidade'])>0){

$query = mysql_query("SELECT * FROM associado

WHERE end_cidade=".$_POST['end_cidade]."'

ORDER BY nome");

}else{

$query = mysql_query("SELECT * FROM associado ORDER BY nome");

}

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos pela lógica:

$query = mysql_query("SELECT * FROM associado

WHERE matricula='".$_POST['matricula']."'

ORDER BY nome");

Em azul é o campo onde vamos pesquizar, o que está em verde e a variavel que vem do formulário do campo "matricula".

Então caso você queira porcurá somente pela matricula "x" basta fazer assim que a "$query" irá trazer o resultado, que será unico.

Outro exemplo:

$query = mysql_query("SELECT * FROM associado

WHERE nome='%".$_POST['nome]."%'

ORDER BY nome");

Em vermelho, o sinaç de porcentagem, serve para trazer os resultados mais proximos, da consulta.

Outro:

$query = mysql_query("SELECT * FROM associado

WHERE

nome='%".$_POST['nome']."%'

OR

end_cidade='%".$_POST['end_cidade]."%'

ORDER BY nome");

Em laranja "OR", seve solicitar a procura em um ou no outro, caso tive:

Nome          |    Cidade

-------------------------------

Gladisson    |    São Paulo

Mario          |  São Paulo

Tais            |  Rio de Janeiro

E no nome solicitar: "Ta" e em Cidade: "São", irá retornar os três resultados

Ai em vez de OR você pode usar AND que ele só vai retornar caso o campo nome seja proximo de "Ta" e Cidade proximo de "São", que no caso não retornaria nada.

A função strlen(), ela conta o numero de caracteres de uma string, ai por isso eu fiz as condições assim:

if(strlen($_POST['nome'])>0){

}

você só entrará nesta condição se o campo nome do formulário tiver 1 ou mais caracteres.

Outro exemplo:

if(strlen($_POST['nome])>0 AND strlen($_POST['cpf'])==0){

}

Só abrirá caso nome tiver mais de 0 caracteres, e cpf conter 0 caracteres.

Isso parece ser um bicho de 7 cabeça, mais é só o começo depois cê se acostuma.

Link para o comentário
Compartilhar em outros sites

  • 0

Olha esse script aqui em baixo funcionou como eu quase esoerava, so no nome que ele não esta funcionado como eu quero...

Se eu botar todo neme da pessoa vem so ela, mas se eu botar por exemplo João não vem todos que tenhan esse nome...

Tem como adicionar algum comando no codigo para essa função?

include "conecta.php";



if(strlen($matricula)>0 AND $nome==0 AND $cpf==0 AND $end_cidade==0){

$query = mysql_query("SELECT * FROM associado WHERE matricula='$matricula' ORDER BY nome");
}
else if($matricula==0 AND strlen($nome)>0 AND $cpf==0 AND $end_cidade==0){
$query = mysql_query("SELECT * FROM associado WHERE nome='$nome' ORDER BY nome");
}
else if($matricula==0 AND $nome==0 AND strlen($cpf)>0 AND $end_cidade==0){
$query = mysql_query("SELECT * FROM associado WHERE cpf='$cpf' ORDER BY nome");
}
else if($matricula==0 AND $nome==0 AND $cpf==0 AND strlen($end_cidade)>0){
$query = mysql_query("SELECT * FROM associado WHERE end_cidade='$end_cidade' ORDER BY nome");
}
else if($matricula==0 AND $nome==0 AND $cpf==0 AND $end_cidade==0){
$query = mysql_query("SELECT * FROM associado ORDER BY nome");
}
else if(strlen($matricula)>0 AND strlen($nome)>0 AND strlen($cpf)>0 AND strlen($end_cidade)>0){
$query = mysql_query("SELECT * FROM associado WHERE matricula='$matricula' AND nome='$nome' AND cpf='$cpf' AND end_cidade='$end_cidade' ORDER BY nome");
}

$linhas = mysql_num_rows($query);

if($linhas == 0){

echo "Nada encontrado";
exit();
}
else{

while($row = mysql_fetch_array($query)){

$matricula    = $row["matricula"];
$nome         = $row["nome"];
$cpf          = $row["cpf"];
$end_cidade   = $row["end_cidade"];
$associado_id = $row["associado_id"];

if($linhas %2 == 0){

$cor = "#E2EFFE";
}
else{

$cor = "#E2EFFE";
}

echo "

  <tr bgcolor=\"$cor\">
    <td>&nbsp;$matricula</td>
    <td>&nbsp;<a href=\"perfil_associado.php?perfil=$associado_id\">$nome</a></td>
    <td>&nbsp;$cpf</td>
    <td>&nbsp;$end_cidade</td>
  </tr>";


}
}
?> 

Link para o comentário
Compartilhar em outros sites

  • 0

Olha esse script aqui em baixo funcionou como eu quase esoerava, so no nome que ele não esta funcionado como eu quero...

Se eu botar todo neme da pessoa vem so ela, mas se eu botar por exemplo João não vem todos que tenhan esse nome...

Tem como adicionar algum comando no codigo para essa função?

include "conecta.php";



if(strlen($matricula)>0 AND $nome==0 AND $cpf==0 AND $end_cidade==0){

$query = mysql_query("SELECT * FROM associado WHERE matricula='$matricula' ORDER BY nome");
}
else if($matricula==0 AND strlen($nome)>0 AND $cpf==0 AND $end_cidade==0){
$query = mysql_query("SELECT * FROM associado WHERE nome='$nome' ORDER BY nome");
}
else if($matricula==0 AND $nome==0 AND strlen($cpf)>0 AND $end_cidade==0){
$query = mysql_query("SELECT * FROM associado WHERE cpf='$cpf' ORDER BY nome");
}
else if($matricula==0 AND $nome==0 AND $cpf==0 AND strlen($end_cidade)>0){
$query = mysql_query("SELECT * FROM associado WHERE end_cidade='$end_cidade' ORDER BY nome");
}
else if($matricula==0 AND $nome==0 AND $cpf==0 AND $end_cidade==0){
$query = mysql_query("SELECT * FROM associado ORDER BY nome");
}
else if(strlen($matricula)>0 AND strlen($nome)>0 AND strlen($cpf)>0 AND strlen($end_cidade)>0){
$query = mysql_query("SELECT * FROM associado WHERE matricula='$matricula' AND nome='$nome' AND cpf='$cpf' AND end_cidade='$end_cidade' ORDER BY nome");
}

$linhas = mysql_num_rows($query);

if($linhas == 0){

echo "Nada encontrado";
exit();
}
else{

while($row = mysql_fetch_array($query)){

$matricula    = $row["matricula"];
$nome         = $row["nome"];
$cpf          = $row["cpf"];
$end_cidade   = $row["end_cidade"];
$associado_id = $row["associado_id"];

if($linhas %2 == 0){

$cor = "#E2EFFE";
}
else{

$cor = "#E2EFFE";
}

echo "

  <tr bgcolor=\"$cor\">
    <td>&nbsp;$matricula</td>
    <td>&nbsp;<a href=\"perfil_associado.php?perfil=$associado_id\">$nome</a></td>
    <td>&nbsp;$cpf</td>
    <td>&nbsp;$end_cidade</td>
  </tr>";


}
}
?> 

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,2k
×
×
  • Criar Novo...