webForumDet fria alternativet

Sök problem i access

ASPur ASP

15 svar · 414 visningar · startad av Exploit

Medlem sedan nov. 2006107 inlägg
Frågan#1

Hej vet att jag har tagit upp förut om mina sök problem men nu har ett nytt probbz uppstått...
nu kan man söka på vad som hellst eller inget alls så kommer alla mina länkar upp med i söklistan (Dom som har ord i key kolummen)

Detta är min kod på default.asp

              <form name="form1" method="post" target="iframe" action="sok.asp">
                <label>
                
                  <div align="left">
                    <INPUT TYPE="text" SIZE="20" NAME="sokord">
                    <br>
                    <input name="Submit" type="submit" submit ="SELECT * FROM lankar WHERE key & namn LIKE '%" value="S&ouml;k">
                  </div>
                  </label>
                </label>
            </form>

Detta är min kod i sok.asp

<!-- #include file = "adovbs.inc" -->
<HTML><link href="style.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style3 {color: #FFFFFF; font-weight: bold; }
-->
</style>

<%
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/lankar.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM lankar WHERE key & namn LIKE '%" & Request.Form("sokord")& "%'"

Set RS=Connect.Execute (SQL)

If RS.EOF then
     response.Write "Ingen träff"
End if

Do Until RS.EOF

%>

<style type="text/css">
<!--
.style3 {color: #FFFFFF; font-weight: bold; }
.style4 {color: #FFFFFF; font-weight: bold; }
.style4 {color: #FFFFFF; font-weight: bold; }
-->
</style>
<p>&nbsp;</p>
<TABLE border='0' width='361'>
  <tr><td width="107" rowspan="4"><img src="<%=RS("banner")%>" width="88" height="31" align="right"><br>
    <br>    <br>
</td>
    <td width="244"><a href="klick.asp?id=<%=RS("id")%>" target="_blank" onMouseOver="self.status='<%= RS("hemsida")%>';return true" onMouseOut="self.status=' ';return true"><%=RS("namn")%></a></td>
  </tr>
  <tr>
    <td><strong><font size="1" face="Verdana">(</font></strong><span class="style4"><font size="1" face="Verdana"><%=RS("klick")%></font> <font size="1" face="Verdana" class="style4">klick)</font></span></td>
  </tr>
  <tr>
    <td><%=RS("text")%></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
</TABLE>

<%
RS.MoveNext
LOOP
RS.Close
Connect.Close
%>

</HTML>
Medlem sedan feb. 20032 027 inlägg
#2

varför har du fortfarande sql i inputknappen?

börja med att ha
<input name="Submit" type="submit" value="Sök">

Medlem sedan nov. 2006107 inlägg
#3

?? Förklara vart..... som sagt va jag är nybörjare..

Medlem sedan nov. 2006107 inlägg
#4

I den här ?

[code}
SQL = "SELECT * FROM lankar WHERE key & namn LIKE '%" & Request.Form("sokord")& "%'"

Medlem sedan feb. 20032 027 inlägg
#5

Exploit skrev:

I den här ?

[code}
SQL = "SELECT * FROM lankar WHERE key & namn LIKE '%" & Request.Form("sokord")& "%'"

I default.asp ska du inte ha sqlsatsen i input

i sok.asp ska det vara

<!-- #include file = "adovbs.inc" -->
<!--#include virtual = "conn.asp"-->
<HTML>
<HEAD><TITLE>din titel</TITLE>

<link href="style.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style3 {color: #FFFFFF; font-weight: bold; }
-->
</style>
</HEAD>
<BODY>
<%
SQL = "SELECT * FROM lankar WHERE key & namn LIKE '%" & Request.Form("sokord")& "%'"

Set RS=Connect.Execute (SQL)

If RS.EOF then
     response.Write "Ingen träff"
Else
Do Until RS.EOF%>

<style type="text/css">
<!--
.style3 {color: #FFFFFF; font-weight: bold; }
.style4 {color: #FFFFFF; font-weight: bold; }
.style4 {color: #FFFFFF; font-weight: bold; }
-->
</style>
<p>&nbsp;</p>
<TABLE border='0' width='361'>
  <tr><td width="107" rowspan="4"><img src="<%=RS("banner")%>" width="88" height="31" align="right"><br>
    <br>    <br>
</td>
    <td width="244"><a href="klick.asp?id=<%=RS("id")%>" target="_blank" onMouseOver="self.status='<%= RS("hemsida")%>';return true" onMouseOut="self.status=' ';return true"><%=RS("namn")%></a></td>
  </tr>
  <tr>
    <td><strong><font size="1" face="Verdana">(</font></strong><span class="style4"><font size="1" face="Verdana"><%=RS("klick")%></font> <font size="1" face="Verdana" class="style4">klick)</font></span></td>
  </tr>
  <tr>
    <td><%=RS("text")%></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
</TABLE>

<%RS.MoveNext: LOOP
End If
RS.Close
Connect.Close%>
</BODY>
</HTML>

i conn.asp kan du ha

Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/lankar.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Medlem sedan nov. 2006107 inlägg
#6

Nu har jag gjort följande men det funkar endå INTE.
När jag trycker på sök knappen utan att ha fyllt i nått så listar den alla mina länkar från databasen????????

Medlem sedan nov. 2006107 inlägg
#7

Default.asp där knappen & sök rutan finns:

              <form name="form1" method="post" target="iframe" action="sok.asp">
                <label>
                
                  <div align="left">
                    <INPUT TYPE="text" SIZE="20" NAME="sokord">
                    <br>
                    <input name="Submit" type="submit" value="S&ouml;k">
                  </div>
                  </label>
                </label>
            </form>

I sok.asp

<!-- #include file = "adovbs.inc" -->
<!--#include virtual = "conn.asp"-->
<HTML><link href="style.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style3 {color: #FFFFFF; font-weight: bold; }
-->
</style>

<%
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/lankar.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL= "SELECT * FROM lankar WHERE key & namn LIKE '%" & Request.Form("sokord")& "%'"

Set RS=Connect.Execute (SQL)

If RS.EOF then
     response.Write "Ingen träff"
End if

Do Until RS.EOF

%>

<style type="text/css">
<!--
.style3 {color: #FFFFFF; font-weight: bold; }
.style4 {color: #FFFFFF; font-weight: bold; }
.style4 {color: #FFFFFF; font-weight: bold; }
-->
</style>
<p>&nbsp;</p>
<TABLE border='0' width='361'>
  <tr><td width="107"><img src="<%=RS("banner")%>" width="88" height="31" align="right"><br>
    <br>    <br>
</td>
    <td width="244"><a href="klick.asp?id=<%=RS("id")%>" target="_blank" onMouseOver="self.status='<%= RS("hemsida")%>';return true" onMouseOut="self.status=' ';return true"><%=RS("namn")%></a></td>
  </tr>
  <tr>
    <td width="107">&nbsp;</td>
    <td><strong><font size="1" face="Verdana">(</font></strong><span class="style4"><font size="1" face="Verdana"><%=RS("klick")%></font> <font size="1" face="Verdana" class="style4">klick) [ <%=RS("kat")%> ] </font></span></td>
  </tr>
  <tr>
    <td width="107">&nbsp;</td>
    <td><%=RS("text")%></td>
  </tr>
  <tr>
    <td width="107">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</TABLE>

<%
RS.MoveNext
LOOP
RS.Close
Connect.Close
%>

</HTML>

Och så i conn.asp

<%
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/lankar.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
%>
Medlem sedan dec. 20025 483 inlägg
#8

Vad vill du åstadkomma med det rödmarkerade nedan?

SELECT * FROM lankar WHERE [red]key & namn[/red] LIKE '%" & Request.Form("sokord")& "%'

Vill du söka i key-kolumnen bör du ta bort '& namn'.

Medlem sedan nov. 2006107 inlägg
#9

tog bort detta så nur står det bara key men men det funkar endå inte som jag vill att det ska göra...

Medlem sedan feb. 20032 027 inlägg
#10

varSokOrd=Request.Form("sokord")
SQL = "SELECT * FROM lankar WHERE key & namn LIKE '%" & varSokord & "%'"

Detta är att rekommendera och skydda dig mot SQL-injections med

Så här ser min sök ut på frisök
set RS = objConn.Execute("Select * From tblUsers where username LIKE '%" & varUsername & "%' and inloggad = "& varChk &" ORDER BY vip = 1")

Medlem sedan nov. 2006107 inlägg
#11

oki.
gjorde detta. men kan man inte "blockera" sök knappen så att man måste skriva i nått för att söka o har man inte skrivit nått så händer det inget?

Medlem sedan feb. 20032 027 inlägg
#12

Exploit skrev:

oki.
gjorde detta. men kan man inte "blockera" sök knappen så att man måste skriva i nått för att söka o har man inte skrivit nått så händer det inget?

Pseudokod

OM textrutevärde = "" SÅ
visa inget
ANNARS
Visa Sökknapp
SLUT OM

Smidigast är att ha det när man klickar på knappen som visar felmeddelande om att inget är inskrivet

Medlem sedan nov. 2006107 inlägg
#13

jaja skit samma fattar endå inget förutom att det ska vara en if sats jag får leta vidare på nätet...

Medlem sedan dec. 20025 483 inlägg
#14

Vad får du med

<!-- #include file = "adovbs.inc" -->
<!--#include virtual = "conn.asp"-->
<HTML><link href="style.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style3 {color: #FFFFFF; font-weight: bold; }
-->
</style>

<%
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/lankar.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

sokord = trim(Request.Form("sokord") & "")
if sokord = "" then
  response.write "ange sökord"
  response.end
end if
SQL= "SELECT * FROM lankar WHERE key LIKE '%" & sokord & "%'"

Set RS=Connect.Execute (SQL)

If RS.EOF then
     response.Write "Ingen träff"
End if

Do Until RS.EOF

%>

<style type="text/css">
<!--
.style3 {color: #FFFFFF; font-weight: bold; }
.style4 {color: #FFFFFF; font-weight: bold; }
.style4 {color: #FFFFFF; font-weight: bold; }
-->
</style>
<p>&nbsp;</p>
<TABLE border='0' width='361'>
  <tr><td width="107"><img src="<%=RS("banner")%>" width="88" height="31" align="right"><br>
    <br>    <br>
</td>
    <td width="244"><a href="klick.asp?id=<%=RS("id")%>" target="_blank" onMouseOver="self.status='<%= RS("hemsida")%>';return true" onMouseOut="self.status=' ';return true"><%=RS("namn")%></a></td>
  </tr>
  <tr>
    <td width="107">&nbsp;</td>
    <td><strong><font size="1" face="Verdana">(</font></strong><span class="style4"><font size="1" face="Verdana"><%=RS("klick")%></font> <font size="1" face="Verdana" class="style4">klick) [ <%=RS("kat")%> ] </font></span></td>
  </tr>
  <tr>
    <td width="107">&nbsp;</td>
    <td><%=RS("text")%></td>
  </tr>
  <tr>
    <td width="107">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</TABLE>

<%
RS.MoveNext
LOOP
RS.Close
Connect.Close
%>

</HTML>

? Har du en äldre version av Access kan du testa att byta '%' mot '*'.

Medlem sedan nov. 2006107 inlägg
#15

Jag har Microsoft Offfice Access 2007 (Beta)

Medlem sedan juni 200032 969 inlägg
#16

... och funkade inte Peters kod?

Du borde också flytta ut css-koden och tabellhuvud och -slut utanför loopen.

145 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)