Just nu i M3-nätverket
Gå till innehåll

hjälp med sökfält tack!!


Lindo

Rekommendera Poster

Hej hej!

 

Jag brukar mest koda CF och nu när jag ska försöka mig på ASP så känner jag mig ganska lost! Vore jättesnällt om nån kunde hjälpa mig med detta.

 

Jag har en intranätsida kopplad till en databas med diverse kontaktuppgifter. Jag har lyckats få en connect-string att funka och kan nu lista alla kontakter samt plocka upp mer info om en speciell kontakt i listan. Men nu vill jag ha en sökfunktion oxå, ett textfält där du kan skriva in en del av ett ord som sedan söker igenom alla fält i databasen och presenterar träffarna.

 

Har lyckats åstakomma detta, får inga felmedd men ej heller några träffar. Några tips någon? Slog mig just att jag kanske behöver nån form av loop nånstans?

 

Formuläret ser ut så här:

 

[log] <form name="form1" method="get" action="kontaktnat_test.asp?what=search&open=yes">

<input type="text" name="seekword">

<input type="submit" value="S&ouml;k">

</form>[/log]

 

Och själva utförandet (som antagligen behöver en loop) ser ut så här:

 

[log]<% '===== %>

<% 'Visar söksvar %>

<% '===== %>

 

<% If Request.QueryString("what") = "search" Then %>

 

<% Visa = "SELECT * FROM kontakter WHERE Name LIKE " & Request.Form("%seekword%") & " "

RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>

 

 

<table border="0" cellpadding="0" cellspacing="0">

 

 

<tr>

 

<td class="text" width="100"><b><% =RecSet("ID") %></b></td>

<td class="text"><b><% =RecSet("Name") %></b></td>

</tr>

<tr>

<td class="text" width="100">Adress:</td>

<td class="text"><% =RecSet("Address1") %></td>

</tr>

<tr>

<td class="text" width="100"></td>

<td class="text"><% =RecSet("Address2") %></td>

</tr>

<tr>

<td class="text" width="100"></td>

<td class="text"><% =RecSet("PostCode") %> <% =RecSet("PostOffice") %></td>

</tr>

<tr>

<td class="text" width="100">Telefon:</td><td class="text"><% =RecSet("Telephone") %></td>

</tr>

<tr>

<td class="text" width="100">Telefax:</td><td class="text"><% =RecSet("Telefax") %></td>

</tr>

<tr>

<td class="text" width="100">WWW:</td><td class="text"><a href="http://<% =RecSet("WWWAddress") %>" target="_blank"><% =RecSet("WWWAddress") %></a></td>

</tr>

<tr>

<td class="text" width="100">E-mail:</td><td class="text"><a href="mailto:<% =RecSet("EmailAddress") %>"><% =RecSet("EmailAddress") %></a></td>

 

</tr>

 

 

 

</table>

<% End If %>[/log]

 

Jättetacksam för all hjälp! /Linda

/Lindo

 

Länk till kommentar
Dela på andra webbplatser

Det är din query som är felskriven. Ändra den till:

 

[MÄRK]<%[/MÄRK] Visa = [GRÅ]"SELECT * FROM kontakter WHERE Name LIKE '%"[/GRÅ] & [b]Request[/b].Form([GRÅ]"seekword"[/GRÅ]) & [GRÅ]"%' "[/GRÅ]

 

Sen behöver du som sagt en loop:

 

[color="#0000ff"]Do[/color] [color="#0000ff"]While[/color] [color="#0000ff"]Not[/color] RecSet.EOF
[color="#006400"]' Skriv ut datan[/color]
RecSet.MoveNext
[color="#0000ff"]Loop[/color]

[inlägget ändrat 2004-10-15 10:23:11 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Shit, det funkar inte ändå! Jag antar att det ska vara

 

<% Do While Not RecSet.EOF %>

' Skriv ut datan

<% RecSet.MoveNext

Loop %>

 

Men som sagt, det funkar inte iallafall! Vad kan det vara då för fel???

 

Länk till kommentar
Dela på andra webbplatser

Men som sagt, det funkar inte iallafall! Vad kan det vara då för fel???

 

Kan du posta hela koden, så blir det lättare att felsöka. OBS! Om koden är lång, lägg [ LOG ]-taggar kring den

 

Länk till kommentar
Dela på andra webbplatser

Du anger i formuläret att du vill köra med GET, men så använder du request.form, vilket är galet.

 

Föreslår att du gör något av följande:

) Ändrar method i ditt formulär till POST

) Ändrar din sök-variabel till request.QueryString("seekword")

 

lycka till, och glöm inte att göra som Anjuna skrev också

 

Länk till kommentar
Dela på andra webbplatser

Underbart!!!

) Ändrar method i ditt formulär till POST

 

Detta funkade finfint! Jag prövade först med att byta .Form till .QueryString men det funkade inte. Och varför struntar jag i, det funkade ju med post.

 

Tackar för hjälpen!!!!

 

/Linda

 

Länk till kommentar
Dela på andra webbplatser

Ok, jag måste nog fråga en sak till...

 

Nu mjukstartade jag ju lite med att söka i ett fält:

 

[log]<% Visa = "SELECT * FROM kontakter WHERE Name LIKE '%" & Request.Form("seekword") & "%' "

RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>[/log]

 

Men om jag vill att frågan ska loopa genom alla fält, inte bara "Name" som nu, vad skriver jag då? Försökte med två fält separerade med komma eller semikolon, (alltså ... WHERE Name, PostOffice LIKE... och ... WHERE Name; PostOffice LIKE...) men det var ju inte rätt.

 

/Linda

 

Länk till kommentar
Dela på andra webbplatser

Du får använda separata tester, som du kombinerar med antingen AND eller OR beroende på om båda fälten skall innehålla värdet eller bara det ena.

 

Ex.

Visa = [GRÅ]"SELECT * FROM kontakter WHERE Name LIKE '%"[/GRÅ] & [b]Request[/b].Form([GRÅ]"seekword"[/GRÅ]) & [GRÅ]"%' OR PostOffice LIKE '%"[/GRÅ] & [b]Request[/b].Form([GRÅ]"seekword"[/GRÅ]) & [GRÅ]"%' "[/GRÅ]

 

TILLÄGG:

Ok, denna redde jag ut själv efter 1 min...

Hehe, bra!

[inlägget ändrat 2004-10-15 12:06:50 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Ok, denna redde jag ut själv efter 1 min...

 

[log]<% Visa = "SELECT * FROM kontakter WHERE Name LIKE '%" & Request.Form("seekword") & "%' or PostOffice LIKE '%" & Request.Form("seekword") & "%'"

RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>[/log]

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...