Ir para conteúdo

POWERED BY:

Arquivado

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

augustoclaro

AutoComplete do banco de dados

Recommended Posts

Olá!

 

Está é uma função de autosuggest, créditos da função para Willian Bruno, eu apenas passei do PHP para o ASP.

 

<html>
<head>
<title>Suggest</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
list-style: none;
border: none;
}
form {
width: 400px;
margin: 0 auto;
}
form label {
display: block;
}
form label input {
margin: 2px;
padding: 2px;
border: 1px solid #000;
}
.suggest {
position: relative;
}
.suggest input {
width: 250px;
}
#suggest {
position: absolute;
top: 22px;
right: 64px;
background-color: #fff;
width: 248px;
text-align: left;
border: 1px solid #000;
}
#suggest li {
margin: 2px;
}
#suggest a {
display: block;
color: #000;
text-decoration: none;
}
#suggest a:hover {
background: #eee;
text-decoration: underline;
color: #f00;
}

</style>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("input[name='suggest']").keyup(function(){
createList('.suggest');
$.ajax({
type: "GET",//apenas pra ficar mais fácil de debugar, pode mudar para POST depois
url: "complete.asp",
data: "palavra="+$(this).val(),
success: function( data ){
$("#suggest").html( data );
}
});
});

$("#suggest a").live('click', function( e ){
e.preventDefault();
var href = $(this).attr('href');
var id = href.split('=');

$("input[name='id']").val( id[1] );
$("input[name='nome']").val( $(this).text() );

$("#suggest").remove();
});
$("#suggest").mouseout(function(){
$("#suggest").remove();
});
});
function createList( el )
{
$("#suggest").remove();

var list = document.createElement('ul');
list.id = 'suggest';
$( el ).append( list );
}
</script>
</head>
<body>
<form action="" method="post">
<fieldset>
<label class="suggest">Vá digitando: <input type="text" name="suggest" /></label>

<label>ID: <input type="text" name="id" /></label>
<label>Nome: <input type="text" name="nome" /></label>
</fieldset>
</form>
<p>Procure por: Reinaldo, B, J..</p>
</body>
</html>

complete.asp

<%
Response.Charset="ISO-8859-1"
palavra = request.querystring("palavra")
if not palavra ="" then
response.write suggest(palavra)
end if
function suggest(str)

sql = "select * from consulta"
if not str = "" then
sql = sql & " where nome like '"&replace(str," ","%")&"%'"
end if
set conn = server.createobject("adodb.connection")
conn.open "String de conexão"
set rs = server.createobject("adodb.recordset")
rs.open sql,conn,3,3
suggest = ""
if rs.eof then
suggest = suggest & "Nenhum cadastro encontrado."
else
do until rs.eof
suggest = suggest & "<li><a href=""?id="&rs("id")&""">"&rs("nome")&"</a></li>"
rs.movenext
loop
end if
rs.close
conn.close

end function
%>

É isso aí =D

 

Link para o código em PHP do Willian Bruno: http://www.wbruno.com.br/blog/?p=24

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este outro exemplo:

 

Para uma saída textbox com combobox/autocomplo, usamos checks, o conteúdo da caixa de texto para selecionar a caixa de correspondências de texto, Então autocompletes imprime cada palavra chave, há uma alternância, um botão / imagem switch para alternar entre as duas caixas, todos os valores são armazenados na caixa de texto, assim você vai usar para o Nome do campo de formulário, o nome do campo de formulário para a caixa de seleção serão o mesmo que a caixa de texto, mas com a letra' caixa 'adicionadoao fim.

Exemplo para usar:

 

<%	

	

	Dim objAuto
	Set objAuto = New clsAutoCompleteCombo

	objAuto.AddBlankOption = True
	objAuto.ForceMatch = False
	objAuto.SelectBoxOptions = Array("Name 1", "Name 2", "Name 3", "etc...")
	objAuto.SwitchImage = "../cni_images/cni_companies/ReturnToList.jpg"
	or
	objAuto.SwitchImage = ""

	objAuto.ToolTip = "Esta é uma dica de ferramenta"
	objAuto.Width = 120
	objAuto.WriteAutoComplate("empresa")
	Set objAuto = Nothing

Class clsAutoCompleteCombo
	Private m_astrOptions 'Array
	Private m_strSwitchImage 'String
	Private m_blnForceMatch 'Boolean
	Private m_intWidth 'Integer
	Private m_blnAddBlank 'Boolean
	Private m_strAltText 'String
	
	Private Sub Class_Initialize()
		m_strSwitchImage = ""
		m_blnForceMatch = False
		m_blnAddBlank = False
		m_intWidth = 150
		m_strAltText = "Use as setas para alternar entre texto e selectbox"
	End Sub

	Public Sub WriteAutoComplate(ElementName)
		Dim strSwitch 'String
		Dim strSelectBoxName 'String
		Dim strOutput 'String
		Dim blnCompatible 'Boolean
		Dim strAltText 'String
		Dim blnUseJSToolTip ' Boolean
		
		blnCompatible = IsBrowserCompatable()
		
		If blnCompatible = True Then
			'Set the select box name
			strSelectBoxName = ElementName & "box"

			'Definir a imagem mudar
			If m_strSwitchImage = "" Then
				strSwitch = "<SPAN ALT=""" & m_strAltText & """ ONCLICK=""toggleDisplayboxes(CompCompanyName, CompCompanyNameBox);"" " & _
							"STYLE=""cursor:hand;font-family:Webdings;font-size:8px;"" onmouseover=""auotcompleteshowtip(this,event,'" & _
							Server.HTMLEncode(m_strAltText) & "')"" onmouseout=""auotcompletehidetip()"">34</SPAN>"
				blnUseJSToolTip = True
			Else
				strSwitch = "<IMG ALT=""" & m_strAltText & """ SRC=""" & m_strSwitchImage & """ BORDER=""0"" ONCLICK=""toggleDisplayboxes(CompCompanyName, CompCompanyNameBox);"" STYLE=""cursor:hand;"">"
				blnUseJSToolTip = False
			End If

			strOutput = GenerateJavaScript(blnUseJSToolTip) & "<TABLE WIDTH=""100"" BORDER=""0"" CELLSPACING=""0"" CELLPADDING=""0"">" & _
						"<TR><TD VALIGN=""middle"">" & vbCrLf & _
						"<INPUT TYPE=""text"" STYLE=""height:20px;width:" & m_intWidth & "px;"" NAME=""" & ElementName & """ ID=""" & _
						ElementName & """ ONKEYUP=""autoComplete(this," & strSelectBoxName & ",'text'," & LCase(m_blnForceMatch) & ");"">" & _
						"<SELECT ONCHANGE=""setTextBoxFromSelect(" & ElementName & ", this, 'text');"" NAME=""" & _
						strSelectBoxName & """ ID=""" & strSelectBoxName & """ STYLE=""height:20px;width:" & m_intWidth & _
						"px;display:none;"">" & vbCrLf & _
						GenerateOptions(m_astrOptions, m_blnAddBlank) & vbCrLf & _
						"</SELECT></TD><TD VALIGN=""middle"">" & vbCrLf & _
						strSwitch & "</TD></TR></TABLE>" & vbCrLf
		Else
			strOutput = "<INPUT TYPE=""text"" NAME=""" & ElementName & """ ID=""" & ElementName & """>" & vbCrLf
		End If
		Response.Write strOutput
	End Sub

	Public Property Let ForceMatch(Value)
		m_blnForceMatch = CBool(Value)
	End Property

	Public Property Let SwitchImage(Value)
		m_strSwitchImage = Value
	End Property

	Public Property Let SelectBoxOptions(Value)
		m_astrOptions = Value
	End Property
	
	Public Property Let Width(Value)
		m_intWidth = Value
	End Property

	Public Property Let AddBlankOption(Value)
		m_blnAddBlank = CBool(Value)
	End Property
	
	Public Property Let ToolTip(Value)
		m_strAltText = Value
	End Property
	
	Private Function IsBrowserCompatable()
		Dim strBrowser 'String
		Dim fltVersion 'Float
		Dim objBrowser 'MSWC.BrowserType
		Dim blnContinue 'Boolean
		
		Set objBrowser = Server.CreateObject("MSWC.BrowserType")
		
		strBrowser = objBrowser.browser
		fltVersion = CDbl(objBrowser.version)
		
		If strBrowser = "IE" Then
				blnContinue = True
		Else
				blnContinue = False
		End If
		
		If blnContinue = False Then
			IsBrowserCompatable = False
		Else
			If fltVersion > 4.5 Then
				IsBrowserCompatable = True
			Else
				IsBrowserCompatable = False
			End If
		End If

		Set objBrowser = Nothing
	End Function

	Private Function GenerateOptions(OptionArray, AddBlank)
		Dim intMin 'Integer
		Dim intMax 'Integer
		Dim intCurrent 'Integer
		Dim strOptions 'String
	    Dim strPreviousValue 'String

		If IsArray(OptionArray) Then
		  intMin = LBound(OptionArray)
		  intMax = UBound(OptionArray)
		Else
		  intMin = 0
		  intMax = -1
		End If

		strOptions = ""

		For intCurrent = intMin To intMax
	        If Trim(OptionArray(intCurrent)) <> "" And OptionArray(intCurrent) <> strPreviousValue Then
	            strPreviousValue = Trim(OptionArray(intCurrent))
	            
	            strOptions = strOptions & "<option value=""" & OptionArray(intCurrent) & """>" 
	            strOptions = strOptions & OptionArray(intCurrent) 
	            
	            strPreviousValue = Trim(OptionArray(intCurrent))
	            strOptions = strOptions & "</option> "
	        End if 
		Next
		GenerateOptions = strOptions
	End Function

	Private Function GenerateJavaScript(IncludeToolTip)
		Dim strOutput 'As String
		
		strOutput = " <script LANGUAGE=""JavaScript"">" & vbCrLf & _
					"	function autoComplete (textbox, selectbox, property, forcematch) {" & vbCrLf & _
					"		//Variables." & vbCrLf & _
					"		var blnFound = false; //Flag usada para combinar o valor do textbox ao selectbox." & vbCrLf & _
					"		var strCursorKeys = ""8;33;34;35;36;37;38;39;40;45;46;""; //teclas do cursor para ignorar." & vbCrLf & _
					"		var intOptionCount = 0; //Isso será usado para percorrer a caixa de selecção para localizar uma correspondência." & vbCrLf & _
					"		//Loop through the contents of the selectbox" & vbCrLf & _
					"		for (var intOptionCount = 0; intOptionCount < selectbox.options.length; intOptionCount++) {" & vbCrLf & _
					"			//Se houver uma correspondência definir o sinalizador encontrado para verdadeiro e break no loop." & vbCrLf & _
					"			if (selectbox.options[intOptionCount][property].toUpperCase().indexOf(textbox.value.toUpperCase()) == 0) {" & vbCrLf & _
					"				blnFound=true;" & vbCrLf & _
					"				break;" & vbCrLf & _
					"			}" & vbCrLf & _
					"		}" & vbCrLf & _
					"		" & vbCrLf & _
					"		//Se encontramos jogo, definir a opção selecionada. Se não for definida a opção selecionada para nada" & vbCrLf & _
					"		if (blnFound) { selectbox.selectedIndex = intOptionCount; }" & vbCrLf & _
					"		else { selectbox.selectedIndex = -1; }" & vbCrLf & _
					"		" & vbCrLf & _
					"		//Verifique se há um intervalo de texto" & vbCrLf & _
					"		if (textbox.createTextRange) {" & vbCrLf & _
					"			//se forcematch é verdade e encontrou a flagé falsa, remover o último caractere da caixa de texto" & vbCrLf & _
					"			if (forcematch && !blnFound) {" & vbCrLf & _
					"				textbox.value = textbox.value.substring(0,textbox.value.length-1); " & vbCrLf & _
					"				return;" & vbCrLf & _
					"			}" & vbCrLf & _
					"			" & vbCrLf & _
					"			//Verifique o keyPressed, compará-la com a lista de teclas de ignorar" & vbCrLf & _
					"			if (strCursorKeys.indexOf(event.keyCode+"";"") == -1) {" & vbCrLf & _
					"				//A tecla pressionada não está na lista" & vbCrLf & _
					"				//Crie o intervalo de texto" & vbCrLf & _
					"				var r1 = textbox.createTextRange();" & vbCrLf & _
					"				//Store the text" & vbCrLf & _
					"				var oldValue = r1.text;" & vbCrLf & _
					"				//Defina o novo valor igual ao valor selectbox correspondente ou o valor antigo se não for encontrado na lista" & vbCrLf & _
					"				var newValue = blnFound ? selectbox.options[intOptionCount][property] : oldValue;" & vbCrLf & _
					"				" & vbCrLf & _
					"				//Se o novo valor não é igual ao valor antigo, defina o campo de texto para a igualdade" & vbCrLf & _
					"				//newvalue(selectbox), e destacar o resto fora do texto" & vbCrLf & _
					"				if (newValue != textbox.value) {" & vbCrLf & _
					"					textbox.value = newValue;" & vbCrLf & _
					"					var rNew = textbox.createTextRange();" & vbCrLf & _
					"					rNew.moveStart('character', oldValue.length) ;" & vbCrLf & _
					"					rNew.select();" & vbCrLf & _
					"				}" & vbCrLf & _
					"			}" & vbCrLf & _
					"		}" & vbCrLf & _
					"	}" & vbCrLf & _
					"	function setTextBoxFromSelect (textbox, selectbox, property) {" & vbCrLf & _
					"		textbox.value = selectbox.options[selectbox.selectedIndex][property];" & vbCrLf & _
					"	}" & vbCrLf & _
					"	function toggleDisplayboxes(eText, eSelect) {" & vbCrLf & _
					"		if(eText.style.display=='none') {" & vbCrLf & _
					"			eText.style.display=''" & vbCrLf & _
					"			eSelect.style.display='none'" & vbCrLf & _
					"			eText.focus()" & vbCrLf & _
					"		}" & vbCrLf & _
					"		else {" & vbCrLf & _
					"			eText.style.display='none'" & vbCrLf & _
					"			eSelect.style.display=''" & vbCrLf & _
					"			eSelect.focus()" & vbCrLf & _
					"		}		" & vbCrLf & _
					"	}" & vbCrLf
					
			If IncludeToolTip = True Then

				strOutput = strOutput & " function auotcompleteshowtip(current,e,text)" & vbCrLf & _
						"{" & vbCrLf & _
						"   if (document.all)" & vbCrLf & _
						"   {" & vbCrLf & _
						"      thetitle=text.split('<br>')" & vbCrLf & _
						"      if (thetitle.length > 1)" & vbCrLf & _
						"      {" & vbCrLf & _
						"        thetitles=""""" & vbCrLf & _
						"        for (i=0; i<thetitle.length; i++)" & vbCrLf & _
						"           thetitles += thetitle[i] + ""\r\n""" & vbCrLf & _
						"        current.title = thetitles" & vbCrLf & _
						"      }" & vbCrLf & _
						"      else current.title = text" & vbCrLf & _
						"   }" & vbCrLf & _
						"   else if (document.layers)" & vbCrLf & _
						"   {" & vbCrLf & _
						"       document.tooltip.document.write( " & vbCrLf & _
						"           '<layer bgColor=""#FFFFE7"" style=""border:1px ' +" & vbCrLf & _
						"           'solid black; font-size:12px;color:#000000;"">' + text + '</layer>')" & vbCrLf & _
						"       document.tooltip.document.close()" & vbCrLf & _
						"       document.tooltip.left=e.pageX+5" & vbCrLf & _
						"       document.tooltip.top=e.pageY+5" & vbCrLf & _
						"       document.tooltip.visibility=""show""" & vbCrLf & _
						"   }" & vbCrLf & _
						"}" & vbCrLf & _
						"function auotcompletehidetip()" & vbCrLf & _
						"{" & vbCrLf & _
						"    if (document.layers)" & vbCrLf & _
						"        document.tooltip.visibility=""hidden""" & vbCrLf & _
						"}" 
		
			End If
			
			strOutput = strOutput & "</SCRIPT>" & vbCrLf
			GenerateJavaScript = strOutput
	End Function
End Class
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas complementando o código do Xan:


<%	
'#########################################################################
'	Name:		clsAutoCompleteCombo
'	Author:		Oliver Southgate
'	Contact:	Email: osouthgate(at)hotmail.com
'	Date:		16th October 2002
'	Copyright:	This code was written by Oliver Southgate
'				and can be used by anyone for free.
'
'	Purpose:	To ouput an autocompleting textbox/combobox, it uses checks
'				the contents of the text box to select box for text matches,
'				then autocompletes with eaach key press, there is a toggle
'				button/switch image to swap between the the two boxes, all
'				values are stored in the textbox, so you will use that for the
'				form field name, the form field name for the selectbox will be
'				the same as the textbox but with the letter 'box' added to
'				the end.
'#########################################################################
'
'	Example Usage
'	-------------
'
'	Dim objAuto
'	Set objAuto = New clsAutoCompleteCombo
'
'	objAuto.AddBlankOption = True
'	objAuto.ForceMatch = False
'	objAuto.SelectBoxOptions = Array("Name 1", "Name 2", "Name 3", "etc...")
'	objAuto.SwitchImage = "../cni_images/cni_companies/ReturnToList.jpg"
'	or
'	objAuto.SwitchImage = ""
'
'	objAuto.ToolTip = "This is a tool tip"
'	objAuto.Width = 120
'	objAuto.WriteAutoComplate("companyname")
'	
'	Set objAuto = Nothing

Fonte: Codango

Compartilhar este post


Link para o post
Compartilhar em outros sites

OPa, valeu mpela contribuição, tenho vários códigos, que nao existem a fonte...

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.