Avatar billede klyde Nybegynder
08. november 2002 - 11:27 Der er 4 kommentarer og
1 løsning

Søgning af felt1 + felt2 + felt3 ovs...

HejDav

Jeg går lidt og fusker med en søgemaskine som ved intastning af disse felter (Navn, Adresse, Postnummer, By, Telefon, Fødselsdato),
kan minske resultatet af søgningen.
Dvs. At jo flere af ovennævnte felter man indtaster jo færre resultater får man retur...

-----------------------------------------------------------
DB felterne:
Tabelnavn: Level2Info
Navn : VNavn
Adresse: Adresse
Postnummer: PostNR
By: ByNavn
Telefon: Telefon
Fødselsdato: FDag

Max antal søgeresultater: 15 (dvs. noget pageing)
-----------------------------------------------------------

Kan nogen bygge et sådan script op
Avatar billede medions Nybegynder
08. november 2002 - 11:32 #1
http://activedeveloper.dk/aspdigital/kapitel2/search.asp

Her er en fremragende artikel!

//>Rune
Avatar billede klyde Nybegynder
08. november 2002 - 11:41 #2
Ja den kender jeg godt, den bedste svar jeg har kunne finde indtil videre.
Det kan jeg bare ikke bruge fordi den kun kan søge på et felt.

Min form se således ud:
-------------------------------------------------------------------------------
<form action="/danmark/soeg-p.asp" method="post">
<input name="Side" type="hidden" value="Soeg">
<tr>
      <td width="95">Navn</td>
      <td width="10">:</td>
      <td><input name="Navn" size="40" type="text" class="but"></td>
</tr>
<tr>
      <td width="95">Adresse</td>
      <td width="10">:</td>
      <td><input name="Adresse" type="text" size="40" class="but"></td>
</tr>
<tr>
      <td width="95">Postnummer</td>
      <td width="10">:</td>
      <td><input name="Postnummer" type="text" size="4" class="but"></td>
</tr>
<tr>
      <td width="95">By</td>
      <td width="10">:</td>
      <td><input name="By" type="text" size="40" class="but"></td>
</tr>
<tr>
      <td width="95">Telefon</td>
      <td width="10">:</td>
      <td><input name="Telefon" type="text" size="8" class="but"></td>
</tr>
<tr>
      <td width="95">Fødselsdato</td>
      <td width="10">:</td>
      <td><input name="Fodselsdag" type="text" size="8" class="but"></td>
</tr>
<tr>
      <td colspan="3"><hr size="1" width="100%" noshade color="#333333"></td>
</tr>
<tr>
      <td colspan="3"><input type="image" src="images/main/buttons/sognu1.gif" onmouseout="this.src=&quot;images/main/buttons/sognu1.gif&quot;;" onmouseover="this.src=&quot;images/main/buttons/sognu2.gif&quot;;" border="0" alt="Søg nu"></td>
</tr>
</form>
-------------------------------------------------------------------------------

Meningen er at søgningen skal give et resultat uanset hvad man søger på.
Men hvis man søger på flere felter bliver søgningen mere specifik og man får færre men mere korrekte resultater.
Avatar billede medions Nybegynder
08. november 2002 - 11:45 #3
Så lav AND betingelser istedet for OR i din SQL query! -Det men kun der hvor det er relevant!.... Og så lav en validering der siger:

If Not Len(Request.Form("tlfnr")) = 0 Then
  strSQL <- og her tillader du så søgning på feltet tlfnr i databasen!
End If

og sådan bliver du ved!

//>Rune
Avatar billede eagleeye Praktikant
08. november 2002 - 14:10 #4
Eks på hvordan du bygger en dynamisk SQL og og kan søge i flere felter alt efter om de er valgt eller ej. Jeg antager her alle dine felter er defineret som tekst.

Navn = replace(Request.Form("navn"),"'","''")
Adresse = replace(Request.Form("Adresse"),"'","''")
Postnummer = replace(Request.Form("Postnummer"),"'","''")
by = replace(Request.Form("by"),"'","''")
telefon = replace(Request.Form("telefon"),"'","''")
Fodselsdag = replace(Request.Form("Fodselsdag"),"'","''")

SQLwhere = ""
If navn <> "" then
  If SQLwhere <> "" then SQLwhere = SQLwhere & " AND "
  SQLwhere = SQLwhere & "navn '%" & navn & “%'"
End if
If Adresse <> "" then
  If SQLwhere <> "" then SQLwhere = SQLwhere & " AND "
  SQLwhere = SQLwhere & " Adresse '%" & Adresse & "%'"
End if
If Postnummer <> "" then
  If SQLwhere <> "" then SQLwhere = SQLwhere & " AND "
  SQLwhere = SQLwhere & " PostNR '%" & Postnummer & "%'"
End if
If by <> "" then
  If SQLwhere <> "" then SQLwhere = SQLwhere & " AND "
  SQLwhere = SQLwhere & " ByNavn '%" & by & "%'"
End if
If telefon <> "" then
  If SQLwhere <> "" then SQLwhere = SQLwhere & " AND "
  SQLwhere = SQLwhere & " Telefon '%" & Telefon & "%'"
End if
If Fodselsdag <> "" then
  If SQLwhere <> "" then SQLwhere = SQLwhere & " AND "
  SQLwhere = SQLwhere & " FDag '%" & Fodselsdag & "%'"
End if

SQL = "SELECT * FROM Level2Info"
If SQLwhere <> "" then
  SQL = SQL & " WHERE " & SQLwhere
End if

Set rs = conn.execute(SQL)
Avatar billede klyde Nybegynder
08. november 2002 - 14:58 #5
eagleeye --> Du er en engel...
Lige det jeg gik og manglede, jeg tilpassede koden til sitet og 'vupti' så spillede det bare:)

Jeg kan sagtens se logikken i din kode, og jeg kunne nok også have udtænkt det selv men problemet er bare at jeg ikke altid tænker på den måde :)
Men det kommer nok!

Men tak for hjælpen
Du får lige nogle point, men lad nu være med at bruge dem alle sammen på en gang ;)

/Klyde
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester