Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carlos Ladrami

[Resolvido] Função strtolower

Recommended Posts

Olá Galera!

Estou utilizando o autocomplete do Jquery, e para imprimir os dados quando o usuario digita, pego os dados com esta linha:

$x = strtolower($_GET["q"]);
Com ela que faço a verificação no banco:

$sql = "SELECT proposta FROM propostas WHERE proposta LIKE '%".$x."%' LIMIT 10";
Minha dúvida é a seguinte, qual é o motivo do ["q"];

Quando eu digito uma palavra que inicia com q, ele não me mostra, mas qualquer outra sim.

COmo posso resolver isso?

Abraços!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O operador LIKE em mysql já case insensitive. Em postgresql, use ILIKE para LIKE insensitive. Não há necessidade de strtolower.

 

Respondendo a Minha dúvida é a seguinte, qual é o motivo do ["q"];...

 

$_GET["q"] retorna o valor de um parâmetro de querystring q. Exemplo:

 

http://www.dominio.com.br/buscarprodutos.php?id=123

echo $_GET["id"]; // 123

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peguei este script da net, e adaptei a minha necessidade:

Olha só como está meu código:

<?php
include "banco.php";
$x = strtolower($_GET["q"]);
$sql = "SELECT proposta FROM propostas WHERE proposta LIKE '%".$x."%' LIMIT 10";
$qry = mysql_query($sql) or die(mysql_error());
while ($reg = mysql_fetch_array($qry))
{
	if(strpos(strtolower($reg["proposta"]), $x) != false ){
			echo $reg["proposta"]."|".$reg["proposta"]."\n";
		}	
}
?>
E a função Jquery:

<script type="text/javascript">
	$(document).ready(function(){
	$("#txtNome").autocomplete("busca.php", {
	width: 180,
	selectFirst: false
	});
	});
</script>
Desculpa, mas ainda não consegui entender, ele segue não me retornando nada quando digito q, sendo que a palavra no banco inicia com q.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É porque não existe nenhum proposta que contem a letra "q". Não tem nada a ver com $_GET["q"]. Ideal implementar neste autocomplete uma ordenação e remover wildcard inicial, para buscar apenas as que comecem por...

$sql = "SELECT p.proposta FROM propostas p WHERE p.proposta LIKE '".$x."%' ORDER BY p.proposta LIMIT 10";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, pode ser burrice minha, mas não rolou

Eu tenho no banco, apenas palavras que iniciam com Q

e ele ñ pega o Q, pega tdas as outras letras que seguem Q, mas se buscar pelo Q ele ñ retorna.

Do jeito que você postou, não funfou, ele não retorna nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, quando digito qualquer outra letra que faça parte da palavra, funciona.

Mas a 1º, nunk funciona.

Fiz outro teste agora aqui, coloquei no banco uma palavra começando com S, e busquei por S, ñ me mostra

Ele não pega a 1º palavra somente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, tente alterar esse script:

if(strpos(strtolower($reg["proposta"]), $x) != false ){
   echo $reg["proposta"]."|".$reg["proposta"]."\n";
}  

Por:

if(strpos(strtolower($reg["proposta"]), $x) !== false ){
   echo $reg["proposta"]."|".$reg["proposta"]."\n";
}  

 

strpos() retorna a posição em que a string $x ocorre em $reg["proposta"], no caso de ser uma letra e a primeira, posição "0". Em php, false!=0 é falso, mas false!==0 é verdadeiro.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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