Ir para conteúdo
GIlvanei Bispo

Buscar profissionais por cidade em PHP e MySQL

Recommended Posts

Galera... Todo mundo bem???

Estou com um projeto em PHP, nele existe um campo de busca que o usuário vai preencher com algo mais ou menos assim "Médico em São Paulo", a partir daí o sistema mostra pra ele todos os médicos da cidade. O problema é que minha pouca experiencia não me deixa pensar em uma lógica pra isso. Implementei uma com os seguintes passos:

  1. Separa com explode() todas as palavras e coloca elas em um array;
  2. Exclui do array as palavras de ligação como "de", "da";
  3. Verifica no banco de dados se as palavras restantes são profissões.
  4. Salva em outro array as palavras que são profissões e exclui do atual;

As palavras restantes forma (na teoria) o nome da cidade então basta busca no banco os médicos com essa cidade em seu endereço. O problema está aí. Se a cidade tem nome simples (Curitiba por exemplo), funciona perfeitamente. Mas se tem nome composto não funciona, por exemplo São Paulo, eu teria duas palavras restante no array, e não faço ideia de como usar uso pra buscar a palavra certa... já pensei em usar o LIKE, mas vejam:

"SELECT * FROM profissionais WHERE localidade LIKE '%".$cidade1."%' and '%".$cidade2."

A posição das cidades no like não me garante que terei a cidade desejada. Alguém tem um ideia de como implementar, pode ser complementando a minha ou até ideia o processo como um todo?

Agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Você pode tentar usar as funções LOWER/UPPER e REPLACE do MySQL para remover os espaços em ambos os lados da comparação e padronizá-los.

Veja um exemplo:

SELECT *FROM mytable
WHERE LOWER(REPLACE(post_code_field, ' ', '')) = LOWER(REPLACE(?, ' ', ''))

Para mais, dê uma olhada neste tópico: http://stackoverflow.com/questions/18528760/mysql-like-query-with-spaces

Função REPLACE: http://dev.mysql.com/doc/refman/5.7/en/replace.html

Função LOWER: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_lower

Função UPPER: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_upper

Espero que ajude!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que seu SELECT deveria utilizar um OR ao invés de AND.

O que você quer fazer é verificar todas as ocorrências de uma determinada string na sua tabela, você pode fazer isso usando a função CONCAT, assim você consegue fazer a busca em vários campos usando várias strings ao mesmo tempo.

Suporte que $array seja o resultado do seu explode;

Select * from profissionais where Concat(localidade, ' ', profissao) LIKE '%" . $array[0] ."' OR LIKE '%" . $array[1] . "' . OR LIKE '%" . $array[2] . "'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por BTK
      Boa noite, estou tentando criar um curl que faz cadastro no site(o proprietário está ciente disso) porem ele está me retornando (HTTP/1.1 100 Continue HTTP/1.1 302 Moved Temporarily)

       $ch = curl_init();   
          
                                                                                                                     
          curl_setopt($ch, CURLOPT_URL, "https://www.cafefacil.com.br/customer/account/create/");                                     
          curl_setopt($ch, CURLOPT_HEADER, true);                                                                                                   
          curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36');                                                                                                                                               
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);                                                                                         
          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);                                                                                       
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);                                                                                       
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
          curl_setopt($ch, CURLOPT_COOKIESESSION, true);                                                                             
          curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd().'/cafefacil.txt');
          curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd().'/cafefacil.txt'); 
          
          
          
          
          $b1 = curl_exec($ch);
          
          $form_key = value($b1, 'type="hidden" name="form_key" value="', '"');
          
          curl_setopt($ch, CURLOPT_URL, 'https://www.cafefacil.com.br/customer/account/createpost/');                                     
          curl_setopt($ch, CURLOPT_HEADER, true);                                                                                                   
          curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36');                                                                                                                                                  
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);                                                                                         
          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);                                                                                    
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);                                                                                       
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
          curl_setopt($ch, CURLOPT_COOKIESESSION, true);   
          curl_setopt($ch, CURLOPT_REFERER, 'https://www.cafefacil.com.br/customer/account/create/');                                                                           
          curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd().'/cafefacil.txt');
          curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd().'/cafefacil.txt'); 
          curl_setopt($ch, CURLOPT_POST, 1);                                                                                                    
          $boundary = '---------------------------WebKitFormBoundaryRQ3KHJbpfmPf11v6';
          
          $data = '-----------------------------'.$boundary.'
          Content-Disposition: form-data; name="success_url"
          
          
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="error_url"
          
          
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="form_key"
          
          '.$form_key.'
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="tipopessoa"
          
          15
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="firstname"
          
          NomeTest SobreNomeTest
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="nomefantasia"
          
          
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="inscricaoestadual"
          
          
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="email"
          
          nometestsobrenometest@gmail.com
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="day"
          
          01
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="month"
          
          01
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="year"
          
          1990
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="dob"
          
          01/01/1990
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="taxvat"
          
          199.758.750-50
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="celular"
          
          (11)4712-8491
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="password"
          
          senhatest
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="confirmation"
          
          senhatest
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="persistent_remember_me"
          
          on
          -----------------------------'.$boundary.'--';
          
          $header[] = "Content-Type: multipart/form-data; boundary=".$boundary;
          curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
          curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
          
            
          echo $exec = curl_exec($ch);
          curl_close($ch);
    • Por allencar.limma
      Tento incluir as informações de um formulário no banco de dados e não consigo. conforme código abaixo.
      <? /*Incluir as informações no formulario */ include "config.php"; $nome = trim($_POST['nome']); $masp = trim($_POST['masp']); $cpf = trim($_POST['cpf']); $telefone = trim($_POST['telefone']); $email = trim($_POST['email']); $endereco = trim($_POST['endereco']); $data_nascimento = trim($_POST['data_nascimento']); $unidade_lotacao = trim($_POST['unidade_lotacao']); /* Vamos checar algum erro nos campos */ if ((!$nome) || (!$masp) || (!$cpf) || (!$telefone) || (!$email) || (!$endereco) || (!$data_nascimento) || (!$unidade_lotacao)){ echo "ERRO: <br /><br />"; if (!$nome){ echo "Nome Completo é requerido.<br />"; } if (!$masp){ echo "Masp é requerido.<br />"; } if (!$cpf){ echo "CPF é requerido.<br /)>"; } if (!$telefone){ echo "Telefone é requerido.<br />"; } if (!$email){ echo "Email é requerido.<br />"; } if (!$endereco){ echo "Endereço é requerido.<br />"; } if (!$data_nascimento){ echo "Data de Nascimento é requerido.<br />"; } if (!$unidade_lotacao){ echo "Unidade de Lotação é requerido.<br>"; } echo "Preencha os campos abaixo: <br />"; include "formulario_cadastro.php"; }else { /* Vamos checar se o nome de Usuário escolhido e/ou Email já existem no banco de dados */ $sql_email_check = mysql_query( "SELECT COUNT(usuario_id) FROM usuarios WHERE email='{$email}'" ); $sql_masp_check = mysql_query( "SELECT COUNT(usuario_id) FROM usuarios WHERE masp='{$masp}'" ); $sql_cpf_check = mysql_query( "SELECT COUNT(usuario_id) FROM usuarios WHERE cpf='{$cpf}'" ); $eReg = mysql_fetch_array($sql_email_check); $uReg = mysql_fetch_array($sql_masp_check); $uReg = mysql_fetch_array($sql_cpf_check); $email_check = $eReg[0]; $masp_check = $uReg[0]; $cpf_check = $uReg[0]; if (($email_check > 0) || ($masp_check > 0) || ($cpf_check > 0)){ echo "<strong>ERRO</strong>: <br /><br />"; if ($email_check > 0){ echo "Este email já está sendo utilizado.<br /><br />"; unset($email); } if ($masp_check > 0){ echo "Este Masp já está sendo utilizado.<br /><br />"; unset($masp); } if ($cpf_check > 0){ echo "Este CPF já está sendo utilizado.<br /><br />"; unset($cpf); } include "formulario_cadastro.php"; }else{ /* Se passarmos por esta verificação ilesos é hora de finalmente cadastrar os dados. Vamos utilizar uma função para gerar a senha de forma randômica*/ function makeRandomPassword(){ $salt = "abchefghjkmnpqrstuvwxyz0123456789"; srand((double)microtime()*1000000); $i = 0; while ($i <= 7){ $num = rand() % 33; $tmp = substr($salt, $num, 1); $pass = $pass . $tmp; $i++; } return $pass; } $senha_randomica = makeRandomPassword(); $senha = md5($senha_randomica); // Inserindo os dados no banco de dados //$cpf = htmlspecialchars($cpf); ***RETIRADO PELO FATO DE NÃO ESTA SENDO USADO $sql = mysql_query( "INSERT INTO usuarios (none, masp, cpf, telefone, email, endereco, data_nascimento, unidade_lotacao) VALUES ('$nome', '$masp', '$cpf', '$telefone', '$email', '$endereco', '$data_nascimento', '$unidade_lotacao', now())") or die( mysql_error() ); if (!$sql){ echo "Ocorreu um erro ao criar sua conta, entre em contato."; }else{ $usuario_id = mysql_insert_id(); // Enviar um email ao usuário para confirmação e ativar o cadastro! $headers = "MIME-Version: 1.0\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\n"; $headers .= "From: RCI - <rci@rcionline.com.br>"; $subject = "Confirmação de cadastro - www.rcionline.com.br"; $mensagem = "Prezado {$nome} {$masp},<br /> Obrigado pelo seu cadastro em nosso site, <a href='http://www.rcionline.com.br'> http://www.rcionline.com.br</a>!<br /> <br /> Para confirmar seu cadastro e ativar sua conta em nosso site, podendo acessar à áreas exclusivas, por favor clique no link abaixo ou copie e cole na barra de endereço do seu navegador.<br /> <br /> <a href='http://www.rcionline.com.br/ativar.php?id={$usuario_id}&code={$senha}'> http://www.rcionline.com.br/ativar.php?id={$usuario_id}&code={$senha} </a> <br /> <br /> Após a ativação de sua conta, você poderá ter acesso ao conteúdo exclusivo efetuado o login com os seguintes dados abaixo:<br > <br /> <strong>Usuario</strong>: {$usuario_id}<br /> <strong>Senha</strong>: {$senha_randomica}<br /> <br /> Obrigado!<br /> <br /> Webmaster<br /> <br /> <br /> Esta é uma mensagem automática, por favor não responda!"; mail($email, $subject, $mensagem, $headers); echo "Foi enviado para seu email - ( ".$email." ) um pedido de confirmação de cadastro, por favor verifique e sigas as instruções!"; } } } ?>  
    • Por GustavoJacob15
      tenho um case assim no meu fonte: 
      ---------------------------------------------------------
      CASE RA_DEMISSA
          WHEN '' THEN 'DESLIGADO'
          ELSE 'ATIVO'
      END AS SITUACAO
      ---------------------------------------------------------
       
      Preciso colocar no where para mostar um parametro com 'ativo' ou 'desligado' 
       
    • Por vinicius.david
      Gostaria que fosse possível encontrar produtos pela marca no Opencart 2.3.0.2. Quando a pessoa digitar no buscar a marca do produto, ele deveria mostrar todos os produtos que pertencem aquela marca. Em catalog/model/catalog/product.php já existe por padrão a função de procurar por fabricante: 

      if (!empty($data['filter_manufacturer_id'])) {                 $sql .= " AND p.manufacturer_id = '" . (int) $data['filter_manufacturer_id'] . "'";             }
      Mas ela não faz a função de procurar por marca. Alguém já encontrou alguma solução na internet para este caso?
    • Por heddyman
      bom dia nobres colegas,
       
      Sou estudante e estou tendo uma dificuldade com um algorítimo... vocês poderiam me ajudar??? Ele não está compilando e tá difícil pra mim identificar... eu agradeço a boa vontade ....
      #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> struct cadastro_de_aluno { char RU[200]; char nome[200]; char email[200]; int vazio,cod; }; struct cadastro_de_aluno alunoCad; //AQUI DECLARO AS FUNÇÕES A SEREM USADAS int verifica_pos(void); int verifica_cod( int cod ); int opt; void list(); void consultaCod (void); void excluirAluno (void); int main(void){ //INICIO DO MAIN int i,Opcao,OpcaoAluno,posicao,retorno; int codaux; do { printf("1 - Cadastrar Novo Aluno\n"); printf("2 - Aluno\n"); printf("3 - Alterar Aluno\n"); printf("4 - Excluir Aluno\n"); printf("5 - Sair\n"); printf(" Selecione uma opcao por favor: "); scanf("%d", &Opcao); getchar(); if (Opcao == 1) { printf("Voce selecionou a opcao 1 - Cadastrar Novo Aluno\n"); posicao=verifica_pos(); if ( posicao != -1 ) { printf("\nEntre com um codigo de 1 a 10 para seu cadastro: \n"); scanf("%d",&codaux);fflush(stdin); retorno = verifica_cod( codaux );} else printf("\nNao e possivel realizar mais cadastros!\n"); break; } else if (Opcao == 2) { system("cls"); do{ printf("Voce selecionou a opcao 2 - Alunos\n\n"); printf("1 - Pesquisar aluno por codigo\n"); printf("2 - Listar todos os alunos\n"); printf("3 - Voltar ao menu principal\n"); printf("Selecione uma opcao por favor: "); scanf("%d", &OpcaoAluno); getchar(); if(OpcaoAluno == 1){ consultaCod(); } else if(OpcaoAluno == 2){ list(); } else if(OpcaoAluno == 3){ printf("Voce selecionou voltar ao menu principal, pressione ENTER para continuar"); getchar(); system("cls"); } else printf("Opcao Invalida\n\n"); }while(OpcaoAluno =!3 || OpcaoAluno > 3 || OpcaoAluno < 0 || OpcaoAluno == 0); } else if (Opcao == 3) { printf("Voce selecionou a opcao 3 - Alterar Aluno\n"); } else if (Opcao == 4) { printf("Voce selecionou a opcao 4 - Excluir Aluno\n"); excluirAluno(); } else if (Opcao == 5) { { printf("Voce selecionou a opção 5 - Sair\n"); } } else{ printf("Opcao invalida, favor pressione enter para voltar ao menu principal"); getchar(); system("cls"); } } while (Opcao != 5 || Opcao < 5); } // FIM DO MAIN void list(){ // Lista os usuarios cadastrados. int i,j; for(i=0;i<200;i++){ if(log[i].cod!=NULL){ printf("\nCodigo: %d \nNome: %s\nRU: %s\n email: \n\n", log[i].cod,log[i].nome,log[i].RU,log[i]. email,log[i]); } } printf("Pressione enter para volta ao menu principal"); getchar(); system("cls"); } //FIM DO LIST void cadastroP(int cod, int pos){ //Cadastro das pessoas int i; do{ pos = verifica_pos(); log[pos].cod = cod; printf("\nDigite o RU: "); gets(log[pos].RU); printf("\nDigite o nome: "); gets(log[pos].nome); printf("\nDigite o email: "); gets(log[pos]. email); log[pos].vazio = 1; //printf("\nDigite enter para efetuar novo cadastro ou qualquer outra tecla para voltar ao menu principal"); //scanf("%d", &opt); opt ==1; getchar(); }while(opt==1); system("cls"); main(); } // FIM DO CADASTRO DE PESSOAS int verifica_pos( void ) //VERIFICADOR DA POSIÇÃO { int cont = 0; while ( cont <= 10 ) { if ( log[cont].vazio == 0 ) return(cont); cont++; } return(-1); } // FIM DO VERIFICADOR int verifica_cod( int cod ) // VERIFICADOR DE CÓDIGO { int cont = 0; while ( cont <= 10 ) { if ( log[cont].cod == cod ) return(0); cont++; } return(1); } cont++; if ( cont > 10 ){ printf("\nCodigo nao encontrado, pressione enter para volar ao menu principal\n"); getchar(); system("cls"); } } // FIM DA FUNÇÃO CONSULTAR void excluirAluno(void) // EXCLUI ALUNO { int cod, cont = 0; char resp; printf("\nEntre com o codigo do registro que deseja excluir: \n"); scanf("%d", &cod ); while ( cont <= 10 ) { if ( log[cont].cod == cod ) { if (log[cont].vazio == 1 ) { printf("\nCodigo: %d \nNome: %s\nRU: %s\n email: %s\n\n", log[cont].cod,log[cont].nome,log[cont].RU,log[cont]. email,); getchar(); printf("\nDeseja realmente exlucir? s/n: "); scanf("%s",&resp); if ( ( resp == 'S' ) || ( resp == 's' ) ) { log[cont].vazio=0; log[cont].cod = NULL; printf("\nExclusao feita com sucesso\n"); break; } else { if ( ( resp == 'N' ) || ( resp == 'n' ) ) { printf("Exclusao cancelada!\n"); break; } } } } cont++; if ( cont > 10 ) printf("\nCodigo nao encontrado\n"); } system("pause"); system("cls"); }  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.