Jump to content

Sistema de pesquisa na BD on-fly


IvanGS
 Share

Recommended Posts

boas pessoal.

sera que alguem me poderá indicar um tutorial ou ajudar.

é o seguinte, queria fazer um pesquisa on-fly, tipo no google quando se escreve alguma coisa ele dá sugestões.

mas eu queria que ele estivesse a procurar na BD sempre que se introduz um caracter numa determinada caixa de texto.

Link to comment
Share on other sites

O que tu queres para verificar a cda tecla é javascript.

Vejamos.

Precisas doXMLHttpRequest para enviar e receber dados.

Precisas de colocar um event listner no input field OnKeyup que chame a função. OU um addEventListner para esse input que chame a função.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

a script funciona lindamente tem um visual bonito e tudo.

agora quero que ao clicar no nome do cliente por exemplo apareça o numero de cliente e o procedimento, ou seja que va buscar os outros campos da tabela e as coloque noutras input text.

em seguida meto o codigo PHP, JavaScript e HTML

se alguém me poder ajudar fico muito agradecido  😞

<?php

// PHP5 Implementation - uses MySQLi.
// mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');
$db = new mysqli('', '' ,'', '');

if(!$db) {
	// Show error if we cannot connect.
	echo 'ERROR: Could not connect to the database.';
} else {
	// Is there a posted query string?
	if(isset($_POST['queryString'])) {
		$queryString = $db->real_escape_string($_POST['queryString']);

		// Is the string length greater than 0?

		if(strlen($queryString) >0) {
			// Run the query: We use LIKE '$queryString%'
			// The percentage sign is a wild-card, in my example of countries it works like this...
			// $queryString = 'Uni';
			// Returned data = 'United States, United Kindom';

			// YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE.
			// eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10

			$query = $db->query("SELECT nome_cliente,n_cliente,tipo_cliente FROM clientes WHERE nome_cliente LIKE '$queryString%' LIMIT 50");
			if($query) {
				// While there are results loop through them - fetching an Object (i like PHP5 btw!).
				while ($result = $query ->fetch_object()) {
					// Format the results, im using <li> for the list, you can change it.
					// The onClick function fills the textbox with the result.

					// YOU MUST CHANGE: $result->value to $result->your_colum
         			echo '<li onClick="fill(\''.$result->nome_cliente.'\');">'.$result->nome_cliente.'</li>';
         		}
			} else {
				echo 'ERROR: There was a problem with the query.';
			}
		} else {
			// Dont do anything.
		} // There is a queryString.
	} else {
		echo 'There should be no direct access to this script!';
	}
}
?>

function lookup(inputString) {
	if(inputString.length == 0) {
		// Hide the suggestion box.
		$('#suggestions').hide();
	} else {
		$.post("rpc.php", {queryString: ""+inputString+""}, function(data){
			if(data.length >0) {
				$('#suggestions').show();
				$('#autoSuggestionsList').html(data);
			}
		});
	}
} // lookup

function fill(thisValue) {
	$('#inputString').val(thisValue);
	setTimeout("$('#suggestions').hide();", 200);
}

								<div>
									<form>
										<div>
											<label>Nº cliente</label>
											<br />
											<input type="text" size="30" value="" id="inputString" onkeyup="lookup(this.value);" onblur="fill();" />
										</div>

										<div class="suggestionsBox" id="suggestions" style="display: none;">
											<img src="upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />
											<div class="suggestionList" id="autoSuggestionsList">
												 
											</div>
										</div>
									</form>
								</div>
Link to comment
Share on other sites

fui buscar outro código que na demonstração funciona muito bem,

mas a mim esta-me a dar este erro:

Warning: Cannot modify header information - headers already sent by (output started at /homez.42/ezteam/www/ivan/pq/rpc.php:1) in /homez.42/ezteam/www/ivan/pq/rpc.php on line 8

eu sei que e o header, mas se eu o tirar nao me aparece nada...

Link to comment
Share on other sites

Boas, não valia a pena estar a abrir novo tópico visto que este serve perfeitamente.

Estive a ver o código acima e fiquei intrigado, não seria melhor usar o match-against para fazer este tipo de pesquisa?

E já agora, não valeria a pena tentar incorporar o Quicksilver scores neste projecto?

Melhores cumprimentos,

João Lopes

Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Link to comment
Share on other sites

eu sou novo em php

ainda aqui ha 1 mes so usava php para escrever os XML que vinha do flash :S

Então e isso é mau? 😉

Acho que o pessoal tem de evoluir, se continuares a copiar e colar código só porque queres tudo a funcionar vais ser sempre novo em linguagens de programação.

Tenta perceber o que aí tens, e tenta incluir aquilo que falei em cima, o Quicksilver dá-te resultados para possíveis pesquisas.

Por exemplo, imagina que queres procurar "google" mas procuras "ogogle", ele provavelmente vai encontrar "google" na mesma.

Agora, a forma que estou a ver para incluir isso no script, é mesmo pela base de dados, fazer um port da versão php ou js do script para a BD.

Segundo o que me constou, pesquisas usando match-against em vez de LIKE são pesquisas mais rápidas.

Isto é importante não só pelo tempo de resposta, mas também pelo tempo em que o servidor fica a processar.

Sistemas de pesquisas usam muitos recursos.

Melhores cumprimentos,

João Lopes

Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Link to comment
Share on other sites

só mais uma pergunta mas desta vez e a nivel de codificação.

a codificação em md5 e segura?

ou existe outra melhor?

cumprimentos

Ivan Santos

Há sempre melhor, lol, mas na minha opinião é seguro.

Normalmente não tentam descobrir passwords através da hash.

Tentam é usar os dados da sessão para ficarem com logins feitos, é mais com isso que te tens de preocupar.

Desde que garantas que ninguém consegue aceder à password original é seguro.

MD5 é vantajoso porque não tem um peso assim tão grande para a BD...

Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Link to comment
Share on other sites

Ficas com as passwords seguras na DB. Se achas que é pouco seguro podes usar o sha1 ou se é mm importante usa o sha2 ou sha3 (quaisquer mais complicadas demoram demasiado tempo)

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.