ConnyFoxMedlem sedan aug. 20011 087 inlägg har gjort en liten sökmotor till användar databasen och har stött på 2 problem.
Nr1 : man ska kunna söka på ålder, men i databasen är ju användarnas födelsedatum lagrat. typ 1984-02-06 osv.. svårt o söka på 17 då o få en träff hur ska jag lösa detta?
Nr2 : Jo jag har en funktion där man söker fram medlemmar, och sedan ska man kunna sortera resultaten efter användarnamn, namn eller efternamn.
vist går det att sortera dom bra, men det är alla användare som sorteras och inte dom man får fram efter sökningen. har pilalr med detta en lång stund nu men har hjärnsläpp o kan inte komma på hur jag ska lösa det.
Sql sats för sökningen
if Request.querystring("search") = "search" then
SQL = "SELECT * FROM members WHERE namn LIKE '%" & request.form("namn") & "%' AND nick LIKE '%" & request.form("nick") & "%' AND efternamn LIKE '%" & request.form("efternamn") & "%' AND alder LIKE '%" & request.form("alder") & "%'"
För att sortera medlemmarna
elseif Request.querystring("order") = "nick" then
SQL = "SELECT * FROM members ORDER BY nick"
elseif Request.querystring("order") = "namn" then
SQL = "SELECT * FROM members ORDER BY namn"
elseif Request.querystring("order") = "efternamn" then
SQL = "SELECT * FROM members ORDER BY efternamn"
elseif Request.querystring("order") = "alder" then
SQL = "SELECT * FROM members ORDER BY alder DESC"
else
SQL = "SELECT * FROM members ORDER BY datum"
Länkarna för att sortera
<tr><td>
<a href="default_members.asp?order=nick">Stajlnamn</a>
</td><td width="50">
<a href="default_members.asp?order=alder">Ålder</a>
</td><td>
<a href="default_members.asp?order=namn">Namn</a>
</td><td>
<a href="default_members.asp?order=efternamn">Efternamn</a>
</td><td>
Försökte att lägga till order by funktionen i sök SQL:en men d gick inte särskilt bra.
Plus att man måste väll på något vis få med sig söknings värderna i länkarna som sorterar ?
tacksam för svar detta va en lite för hård nöt för mig just nu :o)
------------------
*brölar ljudligt*
Hej!
Fråga nr 1 (otestad kod men kanske ger dig lite ideer):
birthyear = Year(now) - cint(Request.form("age"))
SQL = "SELECT * FROM members WHERE namn LIKE '%" & request.form("namn") & "%' AND nick LIKE '%" & request.form("nick") & "%' AND efternamn LIKE '%" & request.form("efternamn") & "%' AND alder LIKE '%" & [b]birthyear[/b] & "%'"
Fråga nr 2: Du måste byta SQL-sträng till samma som för sökningen
birthyear = cdate(Year(now) - cint(Request.form("age")))
if Request.querystring("order") = "nick" then
SQL = "SELECT * FROM members WHERE namn LIKE '%" & request("namn") & "%' AND nick LIKE '%" & request("nick") & "%' AND efternamn LIKE '%" & request("efternamn") & "%' AND alder LIKE '%" & [b]birthyear[/b] & "%' ORDER BY nick"
elseif ....
<a href="default_members.asp?order=nick&namn=<% =request("namn")"&nick=OSV....>Sortera</a>
------------------
mvh André
ConnyFoxMedlem sedan aug. 20011 087 inlägg tack för hjälpen men det va inte till så mycket hjälp e jag rädd =/
1.
När jag använde din kod för datumsökning så fick man inte fram någonting alls när man sökte på något fält alls. O sökte man på ålder så fick man fram alla :o) Lite knepigt :o)
birthyear = Year(now) - cint(Request.form("age"))
2. Iden är god men ett problem är att om man söker så finns ju request.form att använda när man sorterar. men om man vill sorterera igen så finns dom ju inte kvar ?!
Sökning - ger request.forms
sortering - använder request.formsen och ger ny sida.
Sortering igen - inga request.forms och det funkar inte.
Eftersom inte request.forms hänger med mellan sidorna om man inte använt just en form på sidan innan så funkar det inte..
Så man e egentligen tvungen att använda request.querystrings i länkarna för att få nya querystrings till nästa.. o d går ju inte för man måste ju använda request.forms FÖRSTA gången för att äns få några request.querystring på andra.. äsh d e hel knepigt :o)
Antagligen inte nån som fattar men kolla mit problem på toppen så kanske nån kan lösa det :o)
------------------
*brölar ljudligt*
ConnyFoxMedlem sedan aug. 20011 087 inlägg Juventus sorry jag såg nu att du hadde använt request på dom andra istället för request.form, precis så som jag lyckades lösa det sen :o) tackar tackar ska kolla bättre nästa gång :o) men din ålder funktion funka inte riktigt =/
------------------
*brölar ljudligt*
Prova det här(fungerade när jag provade nu):
session.lcid = 1053
birthyear = cdate((year(now) - 17) & "-01-01")
2.
Hade tänkt mig så här:
Request.Form, fyll i rätt uppgifter i sortera länken, ta sedan emot uppgifterna till sql-strängen så här:
Länken:
<a href="default_members.asp?order=efternamn&namn=<% =request("namn") %>&nick=<% =request("nick") %>&efternamn=<% =request("efternamn") %>&alder=<% =request("alder") %>">Efternamn</a>
Sql-strängen:
sql = "SQL = "SELECT * FROM members WHERE namn LIKE '%" & request("namn") & "%' AND nick LIKE '%" & request("nick") & "%' AND efternamn LIKE '%" & request("efternamn") & "%' AND alder LIKE '%" & form("alder") & "%'"
Request("valfritt namn") söker efter alla postade värden med valfritt namn.
------------------
mvh André
ConnyFoxMedlem sedan aug. 20011 087 inlägg Löste det såhär istället
if Request.querystring("search") = "search" then
if not request.form("alder") = "" then
BirthFrom = DateAdd("yyyy", -request.form("Alder"), Date)
BirthTo = DateAdd("yyyy", -(request.form("Alder")+1), Date)
SQL = "SELECT * FROM members WHERE namn LIKE '%" & request("namn") & "%' AND nick LIKE '%" & request("nick") & "%' AND efternamn LIKE '%" & request("efternamn") & "%' AND alder <= #" & BirthFrom & "# AND alder > #" & BirthTo & "#"
else
SQL = "SELECT * FROM members WHERE namn LIKE '%" & request("namn") & "%' AND nick LIKE '%" & request("nick") & "%' AND efternamn LIKE '%" & request("efternamn") & "%'"
end if
funkar fin fint så fattar jag koden oxå :o)
------------------
*brölar ljudligt*