Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, boa noite!
Estou fazendo um BD para minha empresa onde sao salvos 5 informações: ID (auto incremento, 5 digitos), Sexo, Nome, Cidade, Estado e comentários.
Estava querendo fazer a pesquisa da seguinte forma:
Quando digitar um ID ele ja vai direto para o cadastro com o ID, quanto a isso nao tive problemas.
Sexo: Sem problemas pois sao apenas 2 escolhas.
Nome: Um dos problemas neste campo é que o nome tem que ser digitaro exatamente como esta no banco. Com faço para digitar apenas uma parte do nome e ele procurar esse parte em todos os registros e retornar os que tiverem o nome pesquisado?
Cidade: Idem a nome.
Estado: sem problemas pois é list.
Comentários: Idem ao nome tambem.
Nao estou conseguindo fazer essa coisas. Como devo proceder??
Estou usando seguinte query:
mysql_query("select * from registro_indicacao
WHERE(id_ind='$id')
OR (infp_sexo='$sexo')
AND (end_cidade ='$cidade')
OR (infp_nome ='$nome')
");E nao sei como adicionar o comentarios na query. o BD ja esta pronto e o formulario tb
Abraço
Joelson,
Quanto ao uso do "like" para pesquisa parciais em determinados campos, sua query está correta. O que você precisa prestar atenção, contudo, é no uso de "OR" e "AND" !
Como você colocou nesta última query o uso combinado destes dois operadores "OR" e "AND", sem o uso de parênteses, fica bastante confuso !
Veja o seguinte : colocando somente "AND" todos os campos devem retornar verdadeiro para recuperar um determinado registro, ou seja, se o usuário deixar um dos campos sem informar na página, a query não vai retornar registro ALGUM.
$resultado = mysql_query("select * from registro_indicacao
WHERE(id_ind='$id')
AND (infp_sexo='$sexo')
AND (end_cidade ='$cidade')
AND (infp_nome like '%$nome%')
AND (infsup_comentcoord like '%$comentcoord%')
");
Se, por outro lado, você colocar somente "OR" o sistema tente a retornar vários registros, o quê não parece ser o seu caso...
$resultado = mysql_query("select * from registro_indicacao
WHERE(id_ind='$id')
OR (infp_sexo='$sexo')
OR (end_cidade ='$cidade')
OR (infp_nome like '%$nome%')
OR (infsup_comentcoord like '%$comentcoord%')
");
Se você quiser tornar obrigatório o fornecimento de um dos campos e os outros serem opcionais, trabalhe com "AND", parênteses e "OR". Por exemplo... o nome obrigatório e sexo, cidade e comentários opcionais, fica assim :
$resultado = mysql_query("select * from registro_indicacao
WHERE (infp_nome like '%$nome%') AND
(
(infp_sexo='$sexo')
OR (end_cidade ='$cidade')
OR (infsup_comentcoord like '%$comentcoord%')
)
");
Na prática, nenhuma dessas situações vai funcionar... você, depois de entender estes conceitos, vai precisar criar uma "query dinâmica" que será gerada pelo código PHP de acordo com os campos informados pelo usuário na página, sempre usando "AND" e "like", apenas para os campos preenchidos.
Pesquisa aqui mesmo no site sobre "query dinâmica" que você entenderá o esquema...
Ok ?!?
Ae galera, cheguei no seguinte
$resultado = mysql_query("select * from registro_indicacao
WHERE(id_ind='$id')
OR (infp_sexo='$sexo')
AND (end_cidade ='$cidade')
OR (infp_nome like '%$nome%')
OR (infsup_comentcoord like '%$comentcoord%')
");
voces me dariam alguma sugestão?