Avatar billede pfp Nybegynder
03. juli 2003 - 13:52 Der er 31 kommentarer og
1 løsning

Søgning i mySQL db

Hej,

Jeg vil gerne kunne søge i følgende felter i en mySQL tabel:
- Forhandler (text)
- Postnr (int)
- Bynavn (text)
- Telefon (int)
- Mobil (int)
- Fax (int)


Hvordan skal SQL-sætningen opbygges?
Avatar billede pfp Nybegynder
03. juli 2003 - 13:53 #1
Min søgeværdi kan hentes med Request.Form("strSearch")
Avatar billede mjense173 Nybegynder
03. juli 2003 - 13:55 #2
SELECT * FROM `tabel` WHERE Forhandler LIKE '%søgestreng%'
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 13:56 #3
SELECT * FROM tabel WHERE Forhandler = Request.Form("strSearch")

Er det tilfældigt hvilke af felterne der skal søges i med strSearch ?

/Morten
Avatar billede mjense173 Nybegynder
03. juli 2003 - 13:57 #4
strSearch = Request.Form("strSearch")
SELECT * FROM `tabel` WHERE Forhandler LIKE '%strSearch%'
' "%" (procent) tegnene angiver at ordet kan findes som en del af et andet ord.
Avatar billede mjense173 Nybegynder
03. juli 2003 - 13:59 #5
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 14:00 #6
for så skal du lave noget som ser sådan ud:
  objConn.Execute("SELECT * FROM tabel WHERE Forhandler ='" &  Request.Form"strSearch") & "' OR Postnr = " & Request.Form("strSearch") & " OR ByNavn = '" & Request.Form("strSearch") & "' OR Telefon = " & Request.Form("strSearch") & " OR Mobil = " & Request.Form("strSearch") & " OR Fax = " & Request.Form("strSearch"))
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 14:06 #7
Du skal ikke bruge = du skal bruge LIKe og %-tegn som 86270258 skriver.
Avatar billede pfp Nybegynder
03. juli 2003 - 14:11 #8
Jeg har kun et indtastningsfelt (strSearch) og uanset om der så bliver søgt på telefonnr eller adresse så skal den finde det.

Jeg forstår ikke helt hvordan jeg skal bruge LIKE og %
Avatar billede mjense173 Nybegynder
03. juli 2003 - 14:15 #9
Ved brug af LIKE og %
Vil der i feltet Bynavn, når der søges på "hus"¨
eks. blive fundet "Århus", "ÅrhusC", "Hussum"

Hvis du bruger =
Så vil du kun få de resultater, hvor Bynavn = "Hus"
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 14:16 #10
objConn.Execute("SELECT * FROM tabel WHERE
  Forhandler LIKE '%" Request.Form"strSearch") & "%'" & _
  " OR Postnr = " & Request.Form("strSearch") & _
  " OR ByNavn LIKE '%" & Request.Form("strSearch") & "%'" & _
  " OR Telefon = " & Request.Form("strSearch") & _
  " OR Mobil = " & Request.Form("strSearch") & _
  " OR Fax = " & Request.Form("strSearch"))

Jeg ved ikke helt om LIKE virker på andet end strenge derfor har jeg ikke sat det op for integer-værdierne.

/Morten
Avatar billede hossein Nybegynder
03. juli 2003 - 14:19 #11
det kan du klare med to sql udtræk og en if eller case sætning noget i den retning:
if isnumeric(strSearch) then
sql med felterne som har datatypen tal
else
sql med felterne som har datatypen tekst
end if
Avatar billede mjense173 Nybegynder
03. juli 2003 - 14:20 #12
objConn.Execute(
"SELECT * FROM tabel WHERE
Forhandler LIKE '%" & Request.Form"strSearch")  & "%' OR
Postnr          = " & Request.Form("strSearch") & "  OR
ByNavn    LIKE '%" & Request.Form("strSearch") & "%' OR
Telefon        = " & Request.Form("strSearch") & "  OR
Mobil          = " & Request.Form("strSearch") & "  OR
Fax            = " & Request.Form("strSearch"))
Avatar billede pfp Nybegynder
03. juli 2003 - 14:45 #13
86270258 -> Jeg har lige forsøgt med din fra 14:20:55 men det virker ikke. Jeg får fejlen:

[TCX][MyODBC]Unknown column 'test' in 'where clause'

Jeg søger på test, og jeg ved der er en post hvor Forhandler = test...?
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 15:02 #14
Prøv at tage mit svar fra kl. 14:16:23. Det minder om 86270258's svar (eller kom jeg først.. hmmm), men jeg har brugt nogle lidt anderledes lineseperators.

/Morten
Avatar billede hossein Nybegynder
03. juli 2003 - 15:06 #15
der mangler en ( i Request.Form"strSearch")
sådan:
Request.Form("strSearch")
Avatar billede pfp Nybegynder
03. juli 2003 - 15:07 #16
morten -> Jeg prøver lige din...

hossein -> den fejl har jeg fanget, men det erikke det..
Avatar billede pfp Nybegynder
03. juli 2003 - 15:09 #17
morten -> Unterminated string constant

/Resultater.asp, line 18

strSQL = "SELECT * FROM Forhandlere WHERE
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 15:10 #18
Ja men husk lige at lave den rettelse hossein nævner
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 15:12 #19
objConn.Execute("SELECT * FROM tabel WHERE " & _
  "Forhandler LIKE '%" Request.Form("strSearch") & "%'" & _
  " OR Postnr = " & Request.Form("strSearch") & _
  " OR ByNavn LIKE '%" & Request.Form("strSearch") & "%'" & _
  " OR Telefon = " & Request.Form("strSearch") & _
  " OR Mobil = " & Request.Form("strSearch") & _
  " OR Fax = " & Request.Form("strSearch"))
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 15:14 #20
Der er ændringer i de to første linier
Avatar billede pfp Nybegynder
03. juli 2003 - 15:18 #21
Nu har jeg prøvet din sidste også morten og den giver:

TCX][MyODBC]Unknown column 'test' in 'where clause'
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 15:33 #22
Der manglede en & prøv lige igen, undskyld jeg taster forkert så meget håber det går.

    objConn.Execute("SELECT * FROM tabel WHERE " & _
  "Forhandler LIKE '%" & Request.Form("strSearch") & "%'" & _
  " OR Postnr = " & Request.Form("strSearch") & _
  " OR ByNavn LIKE '%" & Request.Form("strSearch") & "%'" & _
  " OR Telefon = " & Request.Form("strSearch") & _
  " OR Mobil = " & Request.Form("strSearch") & _
  " OR Fax = " & Request.Form("strSearch"))
Avatar billede pfp Nybegynder
03. juli 2003 - 15:45 #23
Det giver samme fejl...men du har da bestemt ingen grund til at undskylde. Jeg er taknemlig for at du prøver at hjælpe mig :)
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 15:52 #24
Prøv lige dette i stedet, det skulle gerne skrive SQL-statmentet ud på din side, hvis du gider kopiere dette output og lægge det herud :

Response.write ("SELECT * FROM tabel WHERE " & _
  "Forhandler LIKE '%" & Request.Form("strSearch") & "%'" & _
  " OR Postnr = " & Request.Form("strSearch") & _
  " OR ByNavn LIKE '%" & Request.Form("strSearch") & "%'" & _
  " OR Telefon = " & Request.Form("strSearch") & _
  " OR Mobil = " & Request.Form("strSearch") & _
  " OR Fax = " & Request.Form("strSearch")
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 15:52 #25
ARH slet "(" lige efter Response.write
Avatar billede pfp Nybegynder
03. juli 2003 - 16:18 #26
SELECT * FROM Forhandlere WHERE Forhandler LIKE '%test%' OR Postnr = test OR ByNavn LIKE '%test%' OR Telefon = test OR Mobil = test OR Fax = test
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 16:34 #27
OK Prøv nedenstående. 999999 kan skiftes ud med en talværdi du er helt sikker på der aldrig vil forekomme.

If Not IsNumber(Request.Form("strSearch")) Then
  testNumber = 999999
Else
  testNumber = (Request.Form("strSearch")
End If

objConn.Execute("SELECT * FROM tabel WHERE " & _
  "Forhandler LIKE '%" & Request.Form("strSearch") & "%'" & _
  " OR Postnr = " & testNumber & _
  " OR ByNavn LIKE '%" & Request.Form("strSearch") & "%'" & _
  " OR Telefon = " & testNumber & _
  " OR Mobil = " & testNumber & _
  " OR Fax = " & testNumber)
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 16:35 #28
Som altid mangler der lige et ")" til sidst
Avatar billede pfp Nybegynder
03. juli 2003 - 16:48 #29
Så melder den fejl ved IsNumber, men jeg gættede på at du mente IsNumeric..?

Så går den igennem og nu virker det? Skal jeg bare lade alt det med testnumber stå??
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 16:55 #30
testNumber er bare et variabel-navn så det kan du kalde hvad der er mest passende. Bare det bliver ændret alle steder selvfølgelig.
Er du med på hvordan du får fat i resultatet gennem et RecordSet?
Avatar billede pfp Nybegynder
03. juli 2003 - 17:02 #31
Ja det er jeg med på. Tak for hjælpen
Avatar billede mortenkjeldberg Nybegynder
03. juli 2003 - 17:13 #32
Det var så lidt :-)
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

IT-JOB

Capgemini Danmark A/S

AI Data Architect

Politiets Efterretningstjeneste

IT-løsningsarkitekt i PET

KMD A/S

Projektleder