webForumDet fria alternativet

sökfunktion i mySQL med asp

ASP

8 svar · 343 visningar · startad av jake

Medlem sedan sep. 2001649 inlägg
Frågan#1

hej,
Snart verkar allt funka som det ska, men får ett felmeddelande när jag lägger en ett sökformulär på en sida
så hoppas det finns någon som inte har tröttnat på frågor...

Får felmeddelande
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
ODBC driver does not support the requested properties.

som pekar på rad 31

oRecSet.Open SQLStmt, strConn, 3, 1

edit: markerade raden

i följande kod.

Det är när jag lägger till sökformuläret längst ner i koden som det blir fel. Utan det fungerar det...

<!--#include file="../settings.inc.asp"-->

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

<tr>
				<td width="80" align="left">Inlagd</td>
				<td width="60" align="left">Arrangör</td>
				<td width="230" align="left">Uppgift</td>
				<td width="120" align="left">Vinst</td>
				<td width="80" align="left">Slutdatum</td>

			</tr>
<%

Const NumOfSites = 10

Function ListSites(SQLStmt, NumOfSites, startID)
  Dim olddate
  Dim writtentable

  Set oRecSet = Server.CreateObject("ADODB.Recordset")
  SQLStmt2 = "SELECT COUNT(*) as Antal FROM vinsttips"
  oRecSet.Open SQLStmt2, strConn, 3, 3
  intAntal = oRecSet("Antal")
  oRecSet.Close

  Alla = intAntal / NumOfSites
  Alla = int(Alla) -- 1
  Sida = startID / NumOfSites
  Sida = int(Sida) -- 1

                Set oRecSet = Server.CreateObject("ADODB.Recordset")
'fel >            oRecSet.Open SQLStmt, strConn, 3, 1

  If oRecSet.EOF = False Then

	Do While oRecSet.EOF = False
		If olddate <> oRecSet("datum") Then

			writtenTable = 0
		 %>
		
		
			
		<%End If  '' olddate <> oRecSet("datum") %>
		
  			<tr>
				<td width="80" align="left"><%=oRecSet("datum")%></td>
				<td onClick=window.open("<%=oRecSet("url")%>"); width="60" align="left" onmouseover="this.className='linktab'; window.status='<%=oRecSet("url")%>';return true;" onmouseout="this.className='linktabell'; window.status='' "><%=oRecSet("arrangor")%></td>
				<td onClick=window.open("<%=oRecSet("direkturl")%>"); width="230" align="left" onmouseover="this.className='linktab'; window.status='<%=oRecSet("direkturl")%>';return true;" onmouseout="this.className='linktabell'; window.status='' "><%=oRecSet("uppgift")%></td>
				<td width="120" align="left"><%=oRecSet("vinst")%></td>
				<td width="80" align="left"><%=oRecSet("slutdatum")%></td>

			
		<%	
		olddate = oRecSet("datum")
		oRecSet.MoveNext

		If oRecSet.EOF = 0 Then
			If olddate <> oRecSet("datum") Then
				Response.write "</Table>" & vbcrlf
				writtenTable = 1
			End If
		End If
  	
	Loop

	If (writtenTable = 0 AND oRecSet.EOF = True) Then
		Response.write "</TABLE>" & vbcrlf
	End If

	If oRecSet.EOF = False Then
		newdate = oRecSet("datum")
	Else
		newdate = "nothing"
	End If

	Response.Write "<br>Sida <b>" & Sida & "</b> av <b> " & Alla & "</b><br>"
	Response.write "<b><a class='pilar' title='Förra sidan' href='" & Request.ServerVariables("SCRIPT_NAME") & "?prev=" & startID - NumOfSites & "'>&#60;&#60; &nbsp;&nbsp;</a>"
	Response.write "---"
	Response.write "<a class='pilar' title='Nästa sida' href='" & Request.ServerVariables("SCRIPT_NAME") & "?next=" & startID + NumOfSites & "'>&nbsp;&nbsp; &#62;&#62; </a></b>"

  Else  ''(If oRecSet.EOF = False)
	Response.write "Slut<br><br>"
	Response.write "<b><a title='Förra sidan' href='" & Request.ServerVariables("SCRIPT_NAME") & "?prev=" & startID - NumOfSites & "'>&#60;&#60; &nbsp;&nbsp;</a>"
	Response.write "---"
	Response.write "<a title='Från början' href='" & Request.ServerVariables("SCRIPT_NAME") & "'>&nbsp;&nbsp; &#62;&#62;</a></b>"

  End If ''(If oRecSet.EOF = False)

  oRecSet.Close
  Set oRecSet = Nothing	

End Function ''ListSites()

%>
<script language="javascript">
function Validate()
{

	if (document.addsite.url.value =="http://")
	{
		alert("Du glömde länken");
		document.addsite.url.focus();
		return false;
	};
	
	if (document.addsite.kommentar.value =="Kommentar")
	{
		alert("Du har inte skrivit någon kommentar");
		document.addsite.kommentar.focus();
		return false;
	};

	if (document.addsite.namn.value =="Ditt namn")
	{
		alert("Du glömde ditt namn");
		document.addsite.namn.focus();
		return false;
	};

};
</script>

<%

 Dim startID
 startID = 0

 If Request.QueryString("next") <> "" Then
    startID = Request.QueryString("next")
 End If

 If Request.QueryString("prev") <> "" Then
    startID = Request.QueryString("prev")
 End If

 If startID < 0 Then
    startID = 0
 End If

 strPattern = Request.Querystring("search")

 strPattern = Replace(strPattern, "'", "''", 1, -1, 1)
 strPattern = Replace(strPattern, "´", "", 1, -1, 1)
 strPattern = Replace(strPattern, "`", "", 1, -1, 1)

 If Request.Querystring("search") = "" Then
	SQLStmt = "select * from vinsttips order by id desc LIMIT " & startID & "," & NumOfSites
 	ListSites SQLStmt, NumOfSites, startID
 Else
	Response.Write "<center><b>Listar max 10 sökresultat på " & strPattern & "</b><br><br>" &vbcrlf
	SQLStmt = "select * from vinsttips WHERE rubrik LIKE '%" & strPattern & "%' order by id desc LIMIT 0,10"
 	ListSites SQLStmt, NumOfSites, startID
 End If
%>
  <form action="vinsttips.asp" method="GET" name="Formen">
      <input type="text" name="search" size="20" maxlength="30">&nbsp<input type="image" src="images/sok.gif" title="Sök efter en site" align="absmiddle" border="0">
   </form>
  
  </tr>
			</table>
Medlem sedan juni 200032 967 inlägg
#2

Vad innehåller startID?

(markera gärna raden felmeddelandet pekar på i koden, så det är lättare för oss att hitta)

Medlem sedan juni 20034 013 inlägg
#3

Skriv ut SQLStmt så du ser vad den innehåller (response.write).

Vad betyder 3,1 i slutet? Ser att du har skrivit 3,3 på ett annat ställe.

Medlem sedan sep. 2001649 inlägg
#4

startID definieras i sista asp kodstycket efter javascriptet...

vet inte exakt skillnaden på 3,1 och 3,3 då jag har fått en kod som jag redigerar i men blir samma fel även om det står 3,3...

hm... då jag skriver ut:

Response.write SQLStmt

så skrivs ändå inte ut något mer på sidan...

Medlem sedan juni 20034 013 inlägg
#5

Tja, då är det ju inte så konstigt längre. För SQLStmt borde väl innehålla något?

Medlem sedan juni 200032 967 inlägg
#6

jake skrev:

startID definieras i sista asp kodstycket efter javascriptet...

Ja, men vad innehåller variabeln?

vet inte exakt skillnaden på 3,1 och 3,3 då jag har fått en kod som jag redigerar i men blir samma fel även om det står 3,3...

http://www.devguru.com/technologies/ado/quickref/recordset_open.html

hm... då jag skriver ut:

Response.write SQLStmt

så skrivs ändå inte ut något mer på sidan...

Var lägger du den kodraden då?

Medlem sedan sep. 2001649 inlägg
#7

@nders skrev:

jake skrev:

Response.write SQLStmt

så skrivs ändå inte ut något mer på sidan...

Var lägger du den kodraden då?

oj, jag lade den nog på fel ställe. När jag lägger den i en egen container skriver den ut:

select * from vinsttips order by id desc LIMIT 0,10

Medlem sedan sep. 2001649 inlägg
#8

hej igen,
när jag läste igenom koden en gång till såg jag att det var fel kolumnnamnet som skulle söka i databasen...

from vinsttips WHERE rubrik LIKE  osv...

så det fungerar bättre. En kompletterande fråga är hur skulle jag skriva om jag ville söka flera kolumner ur databasen?

det fungerade inte med

from vinsttips WHERE rubrik OR kommentar LIKE osv..

där rubrik och kommentar är två kolumner i tabellen vinsttips.

Medlem sedan juni 20034 013 inlägg
#9

WHERE rubrik LIKE 'vad-du-vill' OR kommentar LIKE 'vad-du-vill'

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)