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

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

Laster...
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...