Gå til innhold

søkefunksjon ?


Anbefalte innlegg

Jeg vet ikke om dette er rette plassen å spørre.. men jeg prøver !

 

Jeg vil gjerne lage en søke funksjon mot en tabell på sql serveren.

 

Jeg håper på at det skal være mulig å lage noe slikt som :

 

Ha et vindu der jeg skriver inn søke kritteriene, og etter hver bokstav jeg skriver inn vil jeg oppdatere en liste under som i utgangspunktet viser hele tabellen jeg søker i, og når jeg har funnet den jeg søker etter vil jeg at den skal fungere som en link slik at jeg kan bruke denne til å gå videre....

 

 

er d noen som kan hjelpe meg med om dette er mulig og eventuelt hvordan?

Lenke til kommentar
Videoannonse
Annonse

dette er mulig, men jeg ville aldri gjort det.

 

vil du ved *hver* nye bokstav du skriver inn, oppdatere en liste med alternativer? i såfall vil det ta lang tid å skrive inn noe, fordi vet hvert tastetrykk må det lastes en ny phpside som viser resultatet av søker.

 

men hvis det er det du vil, så kan det løses med javascript, men du blir fort lei av å måtte vente 2 sekunder for hver bokstav du skriver i et felt.

Lenke til kommentar
dette er mulig, men jeg ville aldri gjort det.

 

vil du ved *hver* nye bokstav du skriver inn, oppdatere en liste med alternativer? i såfall vil det ta lang tid å skrive inn noe, fordi vet hvert tastetrykk må det lastes en ny phpside som viser resultatet av søker.

 

men hvis det er det du vil, så kan det løses med javascript, men du blir fort lei av å måtte vente 2 sekunder for hver bokstav du skriver i et felt.

Mja..

Det kan løses ved at man etter at bruker har tastet inn .. si 3 bokstaver.. henter ned alle poster som starter med de tre bokstavene i en js-array.

 

Deretter kunne js overta logikken og oppdatere etter hvert som bruker dyttet inn flere bokstaver.

 

Problemet er at når brukeren skal trykke den fjerde bokstaven så vil ting stoppe opp (avhengig av hastighet på internett-forbindelse) for at side skal laste ned data. Det ville for brukeren kunne oppleves som irriterende (itt avhengig av mengde/hastighet).

 

Det eneste jeg kan tenke meg, er at du laster komplett datasett på forhånd (i det du oppfrisker side-innholdet). Det vil imidlertid være avhengig av at datamengden ikke er for stor. Eventuelt.. at bruker kan redusere datamengden som må lastes ned på forhånd (les: valg av kategori).

Endret av b-urn
Lenke til kommentar

Så litt på koden der, og det var ikke spesielt avanserte greier. Alt var lagret i et svæært array, med en id til videre linker. For å vise resultater/søke brukes denne funksjonen:

 

function Find() {
 var HTML	= ""
 var Results = 0
 
 if ((navigator.userAgent.toLowerCase().indexOf('netscape') > -1) ||
     (navigator.userAgent.toLowerCase().indexOf('mozilla') > -1))
 {
 	RL = document.getElementById('ResultList')
 	ACB = document.getElementById('ACBox').value
 }
 else {
 	RL = document.all['ResultList'];
 	ACB = document.all['ACBox'].value;
 }
 
 for (i=0; i< ACProdArr.length; i++) {
 	if (ACProdArr[i].PName.toLowerCase().substr(0, ACB.length) == ACB.toLowerCase() || ACProdArr[i].PName.toLowerCase().indexOf(ACB.toLowerCase()) > -1) {
   HTML = HTML + "<a href='spg.jsp?template=SP1&B=ie&PID=" + ACProdArr[i].ID + "&LM=SD_VPF&noredir=1' class=link>" + ACProdArr[i].PName + "</a><br>"
   Results += 1
 	}
 }
 if (Results == 1 && event.keyCode == 13){
 	var index = HTML.indexOf("'");
 	strLocation = HTML.substr(index+1, HTML.indexOf("'", index+1)-(index+1));
 	document.location.href = strLocation
 }
 if (Results == 0) HTML = "No results to display"
 RL.innerHTML = HTML
}

Lenke til kommentar

tsk tsk, det lar seg gjøre ja, mitt tips var rimelig mangelfult med tanke på client side skript.

 

prøv gjerne, som de sier er nøkeklen til å få det til å lage en javascript cache.

 

enten kan du dumpe hele databasen til javascriptet og la den stå for søkingen, eller dumpe et smart utvalg (kanskje ut fra 3 bokstaver som nevnt)

 

vis oss url etterpå hvis du får det til!

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...