Jag ska för första gången ge mig på att bygga en sökmotor, min kod är just nu i enklaste laget och jag behöver bara lite hjälp att rätta koden så jag kommer igång. Ett annat av problemen förutom att få ut resultaten till en annan frame i det frameset jag använder är hur jag enbart får en av varje ort i listan och inte flera av samma i selectboxen
<%imageLink="Http://images.webbisen.com"%>
<!-- #include virtual="/include/dbconn.asp" -->
<!-- #include virtual="/include/functions.asp" -->
<!-- #include virtual="/include/variabler.asp" -->
<%Set search=objConn.Execute("SELECT DISTINCT * FROM tblUsers order by City ASC")%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
<form name="form1" method="post" action="/search/index.asp?do=search">
<select name="selCity">
<%DO UNTIL search.EOF%>
<option value="<%=search("city")%>"><%=search("city")%></option>
<%search.MoveNext: Loop%>
<input type="submit" value="Sök">
</select>
</form>
<%If Request.Querystring("do") = "search" Then%>
<!-- #include virtual="/include/dbconn.asp" -->
<!-- #include virtual="/include/functions.asp" -->
<%
SET objConn = connect()
varCity = Request.Form("selCity")
sRS=objConn.Execute("SELECT * FROM tblUsers WHERE city='"& varCity &"'")
Response.Redirect "/search/results.asp?city="& sRS("city")
End If%>
</body>
</html>
tack så mycket för tipsen, sidan ska utökas med frisök, sökning på ålder, län, kön, online och mer sedan och då kommer sql-satesen att bli mer omfattande
I min SQL sats [<%Set search=objConn.Execute("SELECT DISTINCT City FROM tblUsers order by City ASC")%>] får jag detta felemeddelande på sidan
Microsoft JET Database Engine (0x80040E57)
Fältet är för litet för de data du vill infoga. Försök att infoga eller klistra in mindre information.
/search/searchbox.asp, line 6
Rad 6 är SQL-satsen ovan
och target i form öppnar bara sidan i _top vilket inte var vad jag önskade, vill ha den i ramen searchFrame
Vad är det för datatyp på City? Den får inte tillåta mer än 256 tecken
Det är text
Jag ändrade action till results.asp och när jag söker på en stad så får jag fram flera resultat och alla visar samma person
<%
Set results=objConn.Execute("SELECT userID, username, City, Sex FROM tblUsers WHERE city= '"& request.form("selCity") &"' order by userID ASC")
varUsername = results("username")
varCity = results("city")
%>
Du sökte på <b><%=request.form("selCity")%></b> och fick dessa resultat:<br>
<table>
<tr>
<td>
Användarnamn
</td>
<td>
Ålder
</td>
<td>
Kön
</td>
<td>
Stad
</td>
</tr>
<tr>
<%DO UNTIL results.EOF%>
<td>
<%=varUsername%>
</td>
<td>
</td>
<td>
</td>
<td>
<%=varCity%>
</td>
</tr>
<%results.MoveNext: Loop%>
</table>
Inte så konstigt, eftersom du bara hämtar ut första raden till variablerna varUsername och varCity, och skriver ut dem i loopen. Hämta data från recordsetet i loopen.
Sov istället då, sedan ser garanterat felet när du vaknat! :e
Jag gissar att du blandar två saker, nämligen att stoppa in recordsetet i en array och utskrift av ett recordset.
Gör en av sakerna.
Nu skriver du ut första värdet i recordsetet (via variablerna), men loopar sedan igenom recordsetet. Därför får du recordsetslängden styck av samma poster.
Nu är du allt bra vimsig ;) Det här har du gjort massor med gånger förut.
<%
Set results=objConn.Execute("SELECT userID, username, City, Sex FROM tblUsers WHERE city= '"& request.form("selCity") &"' order by userID ASC")
%>
Du sökte på <b><%=request.form("selCity")%></b> och fick dessa resultat:<br>
<table>
<tr>
<td>
Användarnamn
</td>
<td>
Ålder
</td>
<td>
Kön
</td>
<td>
Stad
</td>
</tr>
<tr>
<%DO UNTIL results.EOF%>
<td>
<%=results("username")%>
</td>
<td>
</td>
<td>
</td>
<td>
<%=results("city")%>
</td>
</tr>
<%results.MoveNext: Loop%>
</table>