Just nu i M3-nätverket
Jump to content

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


Lindo

Recommended Posts

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

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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???

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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å

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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]

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...