Jump to content
Fórum Script Brasil
  • 0

Chamar uma função dentro do select


moisesf

Question

Fiz uma função que retira todos os acentos da string e a chamo duas vezes.

A primeira que vem do form com o nome $nome_clinica

$nomeclinica=stringRetiraAcento($nome_clinica);

A segunda chamo dentro do select.

$sql = "select * from medicos_end_atend where ".stringRetiraAcento('nome_clinica')." REGEXP '$nomeclinica' and cep_clinica='$cep_clinica'";

A string que vem do form está sendo convertida, mas a que está vindo do banco de dados não.

Será que minha chamada no select está errada?

$sql = "select * from medicos_end_atend  where ".stringRetiraAcento('nome_clinica')." REGEXP '$nomeclinica' and cep_clinica='$cep_clinica'";

Obrigado;

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0
você não deve colocar nenhum tipo de sintaxe na string da query ...

fassa o select normalmente depois na hora de dar o print / echo ou passar o valor a uma variavel você chama a function.

Mas eu preciso de comparar o que há no banco de dados sem acentos e cedilhas.

Ou seja, deixar tanto a palavra de busca e o que há no banco de dados no mesmo formato para se fazer a comparação, desta forma acharia tanto com acento e sem acento na busca.

Ou estou usando o método errado?

Tem alguma ideia?

Se eu der um select em tudo para depois comparar, acho que ficaria muito pesado quando o banco tiver muitos registros.

Edited by moisesf
Link to comment
Share on other sites

  • 0

Fiz o seguinte para funcionar:

Dei o loop em todos os dados para achar o cep e somente depois converti a string nome_clinica para sem acento e sem cedilha.

Mas o problema agora é que acha somente com o nome da clínica idêntico.

Como fazer este tipo de comparação no if, para listar também as que iniciam com clínicas?

Por exemplo, se na busca colocar apenas clínica, listaria todas as clínicas daquele cep que encontrei no select.

$sql = "select * from medicos_end_atend  where cep_clinica='$cep_clinica'";
$pesquisa_endereco=mysql_query($sql) or die ("Não foi possível realizar a consulta nos  endereços de Atendimento");
$contareg = mysql_num_rows($pesquisa_endereco);
  
 if ( $contareg >= 1 ) {
      
while($linha=mysql_fetch_array($pesquisa_endereco)){
$nomeencontrado=$linha["nome_clinica"];
$comparanome=stringRetiraAcento($nomeencontrado);

}



if ($comparanome == $nomeclinica) {
echo '<span style="color:red;">Registro Encontrado</span>';
  } else {
echo '<span style="color:green;">Registro não Encontrado</span>';

}
}

Link to comment
Share on other sites

  • 0
coloca na query

LIKE %clinica% and WHERE cep = 'cep'

Não posso fazer like no nome_clinica no select, pois preciso antes da comparação, converter o que vem do banco de dados para sem acento e sem cedilha.

A comparação está sendo feita no if

Link to comment
Share on other sites

  • 0

você não mando para o banco sem acento e sem cedilha?

então tira os acentos logo depois de receber da input ou seja la como for os acento e cedilhas e depois faz o like.

se no banco tem acento manda direito com acento.

Link to comment
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.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...