Kom ihåg mig?
Home Menu

Menu


ASP Sökmotor

Ämnesverktyg Visningsalternativ
Oläst 2003-11-20, 20:59 #1
Seattlegrunges avatar
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2003
Inlägg: 979
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
Seattlegrunges avatar
 
Reg.datum: Nov 2003
Inlägg: 979
Tjena! Mitt första inlägg här

Håller på att bygga en liten sökmotor i ASP. Har lite problem med att få till queryn.
Än så länge så fungerar det jättebra... dock är mitt problem följande:

När man skriver t ex "Volvo Saab" i formuläret och söker på det, så ska träffarna innehålla antingen Volvo och/eller Saab från två olika kolumner i databasen.
Här har jag problem... Står Volvo Saab tillsammans så får jag ju självklart träff, men står de helt antingen för sig själva i posten eller på var sitt ställe (alltså inte ihopa "Volvo Saab") inom posten, så får jag inga träffar. Jag vet varför det blir så... det är ju min query som inte är fullständig... än så länge har jag bara lyckats få ihop

Kod:
SELECT * FROM [table] WHERE [col1]= " & Request.Form("x") & " AND [col2] LIKE '%" & Request.Form("y") & "%'
Vore kanon om nån kunde hjälpa mig med detta... suttit ett tag nu och får det inte rätt...
Tänkte mig först en array som jag ska loopa igenom ord för ord i söksträngen, men det känns som om det borde finnas ett lättare sätt...

Tack på förhand
Seattlegrunge är inte uppkopplad   Svara med citatSvara med citat
Oläst 2003-11-20, 22:17 #2
oJones oJones är inte uppkopplad
Medlem
 
Reg.datum: Aug 2003
Inlägg: 59
oJones oJones är inte uppkopplad
Medlem
 
Reg.datum: Aug 2003
Inlägg: 59
hmm, jag tror faktiskt inte det går.

Jag hade däremot löst det genom att splitta queryn och göra "flera sökningar" av den.

Typ:
Like '%" & Hela_strängen & "%' OR LIKE '%" & splitstring(0) & "%' OR LIKE '%" & splitstring(1) & "%'

Kanske dumt förklarat, förstår du inte kan jag skriva ner lite ordentlig kod åt dig.


Edit:
Jag kom på fler saker.. i värsta fall får du lägga de som flera frågor..
Sen får du se till att du inte får ut samma träffar flera gånger också förresten..
oJones är inte uppkopplad   Svara med citatSvara med citat
Oläst 2003-11-20, 22:45 #3
Seattlegrunges avatar
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2003
Inlägg: 979
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
Seattlegrunges avatar
 
Reg.datum: Nov 2003
Inlägg: 979
Tack för svaret... men jag tror inte jag har löst mitt problem än för det

Redan nu har jag flera if-satser pga att formuläret består av flera olika fält... Så en variant är ju som du säger att utöka med fler frågor... men det blir ganska komplext och antagligen rätt slött i slutändan kan jag tänka mig...

Så som du skrev nedan:

Kod:
Like '%" & Hela_strängen & "%' OR LIKE '%" & splitstring(0) & "%' OR LIKE '%" & splitstring(1) & "%'
...hade jag oxå tänkt mig, men då fastnade jag igen! Arrayen som jag skapar, jag kan ju ta reda på hur stor den här... MEN, då fastnade jag i hur jag ska loopa den sista biten, dvs OR LIKE '%" & splitstring(0) & "%' OR LIKE '%" & splitstring(1) & "%'
Har du nån koll på hur man kan göra det? Antagligen kan jag köra en massa if-satser, men blir inte det ganska trögt? och ganska svåröverskådligt?

Jag ska fortsätta testa mig fram, bl a på detta spåret som du gav mig... tack! Du får gärna skriva lite kod om du har tid... alltid bra att ha nåt att luta sig mot när man sitter fast!

Googlade en del och förvånansvärt få rejäla lösningar jag hittade... egentligen inte en enda som löste problemet
Seattlegrunge är inte uppkopplad   Svara med citatSvara med citat
Oläst 2003-11-20, 22:54 #4
oJones oJones är inte uppkopplad
Medlem
 
Reg.datum: Aug 2003
Inlägg: 59
oJones oJones är inte uppkopplad
Medlem
 
Reg.datum: Aug 2003
Inlägg: 59
MyString = "SAAB, VOLVO,FORD"
MySplit = split(Mystring, ",")

For I TO UBound(MySplit)

'Här loopar du fram frågan
SQLQuery = SQLQuery & " OR modell LIKE = '%" & MySplit(I) & "%' "


Next

SQL = "SELECT WHERE bla bla bla " & SQLQuery


Borde inte ngt sådant fungera?
antagligen får du sätta en liten räknare som håller koll på att OR:et kommer på rätt plats i stringen, men det ska inte vara något större problem.

Som sagt var, det är från huvudet, och det är inte friskt =)

Edit:
Konstigt. Min stavningskontroll från Word går tydligen inte att integrera här ;p
oJones är inte uppkopplad   Svara med citatSvara med citat
Oläst 2003-11-20, 23:05 #5
Seattlegrunges avatar
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2003
Inlägg: 979
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
Seattlegrunges avatar
 
Reg.datum: Nov 2003
Inlägg: 979
hehe... skippa word o lita på ditt huvud istället

Aaaaaaah.... hur dom var jag... jag loopade helt cp...
Så som du loopar är ju en självklarthet!!! Sätter en variabel för queryn! Mitt huvud är heller inte friskt

Tack så mycket! Jag ska genast sätta mig ner med det.... jag berättar hur det gick... eller om jag behöver hjälp

thanx mate!
Seattlegrunge är inte uppkopplad   Svara med citatSvara med citat
Oläst 2003-11-20, 23:15 #6
Seattlegrunges avatar
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2003
Inlägg: 979
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
Seattlegrunges avatar
 
Reg.datum: Nov 2003
Inlägg: 979
Förresten... har en annan grej jag tänkte på...

Kan man inte skriva ut allt innehåll i en array på nåt vis i ASP utan att behöva loopa? Så som man kan i javascript där man bara anropar arrayens namn rakt av?
Har du eller nån annan koll på det? Hittar ingenting i mina ASP-böcker...
Seattlegrunge är inte uppkopplad   Svara med citatSvara med citat
Oläst 2003-11-21, 00:16 #7
Seattlegrunges avatar
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2003
Inlägg: 979
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
Seattlegrunges avatar
 
Reg.datum: Nov 2003
Inlägg: 979
Kom på en grej!!!

Jag kan ju kanske lägga in söksträngen som en variabel, ersätta alla mellanslag med %-tecken... för säkerhets skull oxå alla dubbla mellanslag... och sen köra LIKE med variabeln med % runt om! Detta borde ju funka....

Vad tror du?

Edit: Bra att ha grannar, det var han som kläckte idén... nu ska vi se...
Seattlegrunge är inte uppkopplad   Svara med citatSvara med citat
Oläst 2003-11-21, 00:40 #8
Marios avatar
Mario Mario är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Aug 2003
Inlägg: 668
Mario Mario är inte uppkopplad
Mycket flitig postare
Marios avatar
 
Reg.datum: Aug 2003
Inlägg: 668
jag har ett likn. fast i php, kör en explode på strängen jag får in, sen får personen välja om den vill söka och/eller, så splittar jag variabeln där jag har space, " " och kör en while så den lägger till det stycke som behövs i en variabel, sen byggs samma variabel på i loopen
Mario är inte uppkopplad   Svara med citatSvara med citat
Oläst 2003-11-21, 00:47 #9
Seattlegrunges avatar
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2003
Inlägg: 979
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
Seattlegrunges avatar
 
Reg.datum: Nov 2003
Inlägg: 979
Aha.... så du utökar bara variabeln med nuvarande värdet med alla och/eller?

Det var ju oxå en idé... men ärligt talat så tror jag det räcker med så jag tänkte mig... bara det att personen inte får välja och/eller =)
Seattlegrunge är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 08:11.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017