webForumDet fria alternativet

Databaskoppling och IF!

ASP

41 svar · 854 visningar · startad av Coccozz

Medlem sedan apr. 20032 072 inlägg
Frågan#1

Hej!
Vore vänligt om någon kunde ta sig an och titta på vad jag har gjort för något fel här. Jag får inget felmeddelande men det händer ingenting.

<%
Set Databas = Server.CreateObject( "Adodb.Connection" )
Databas.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath( "db/bio.mdb" )
Databas.ConnectionString = "Data Source='" & MdbFilePath & "'"
Databas.open

X = DatePart("WW", now)
%>   

<FORM METHOD=POST ACTION="bio1.asp?do=check">
<p align="center"><font face="Verdana"><font size="1">Välj vecka:
<select size="1" name="vecka" style="margin:0; border:1px solid #000000; font-family:verdana; font-size:8pt; color:#000000; word-spacing:0; text-align:left">
<option value="<%=x%>" selected>vecka <%=x%></option>
<option value="<%=x+1%>">vecka <%=x+1%></option>
<option value="<%=x+2%>">vecka <%=x+2%></option>
</option>
</select></font><span style="font-size: 8pt"><font size="1"></font></b></font></span></font>
<input type="submit" value="Välj" name="B1" style="font-family: verdana; font-size: 8pt; word-spacing: 0; text-indent: 0; text-align: center; line-height: 100%; border-style: solid; border-width: 1; margin: 0"></p>
</p>
      	 <% 
      	 If Request.QueryString("do") = "check" Then
      	 vecka = Request.Form("vecka")
     	 
         IF vecka = " & = DatePart('WW', now) & " THEN 
         strSQL = "SELECT * FROM bio WHERE vecka = '& = DatePart('WW', now) &'"
         
		 Set objRS = objCon.Execute(strSQL)

		 Do Until objRS.EOF

		 Response.Write(objRS("titel")) & "<br>"
		 objRS.MoveNext

	     Loop
	 	 Set objRS = Nothing
	 	 END IF
		 If vecka = " & = DatePart('WW', now) & " Then response.write "X+1"
		 If vecka = " & = DatePart('WW', now) & " Then response.write "X+2"
         End IF
         %>
</form>

Tack på förhand//

r// Uppdaterade koden. Nu händer det en del. Får dock felmeddelandet:

Feltyp:
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: ''
/bio1.asp, line 44

Vad kan det vara?

r2// Återigen uppdaterat koden. Renderar nu inga felmeddelande men det händer heller inget.

Medlem sedan apr. 20032 072 inlägg
#2

Har nu lagt upp den på webben. Ni hittar sidan här.
Snälla, hjälp mig nu, jag vet att ni kan, nån av er.

Medlem sedan mars 20015 287 inlägg
#3

Först kallar du ditt objekt för Databas, senare kallar du det för objCon..

Medlem sedan mars 20015 287 inlägg
#4

Denna rad:

IF vecka = " & = DatePart('WW', now) & " THEN

Borde vara:

IF vecka = " & = DatePart("WW", now) & " THEN

Även denna är fel:

strSQL = "SELECT * FROM bio WHERE vecka = '& = DatePart('WW', now) &'"

Vad är det för format på vecka i din db?

/red. Hupp, pinsamt att jag missade det övriga som var fel i den översta raden, jaja man kan inte tänka på allt.

Medlem sedan apr. 20032 072 inlägg
#5

Solbulle, såhär?

.........
Set objRS = Databas.Execute(strSQL)
.........

Efter att ha ändrat IF-satsen med DatePart så får jag felmeddelandet:

Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A03F9)
'Then' förväntas.
/bio1.asp, line 25, column 27
IF vecka = " & = DatePart("WW", now) & " THEN
--------------------------^

Vecka är i sifferform i tabellen

Medlem sedan dec. 200012 464 inlägg
#6
IF cint(vecka) = DatePart("WW", date()) THEN
Medlem sedan apr. 20032 072 inlägg
#7

LarsG, nu fungerar sidan och när jag trycker välj så gör den också ett hopp och så får jag felmeddelandet:

Feltyp:
Microsoft JET Database Engine (0x80040E14)
Syntaxfel (operator saknas) i frågeuttrycket 'vecka = '& = DatePart('WW', now) &''.
/bio1.asp, line 29

Lägger upp sidan igen på frip, så kan ni via länken längre upp, eller här se det själva ;).
Vad jag kan förstå är det fel på den här raden:

         strSQL = "SELECT * FROM bio WHERE vecka = '& = DatePart('WW', now) &'"

Anar också att det har något att göra med, precis som solbulle sa, vilket slag kolumnen VECKA är av i tabellen BIO i BIO.mdb.
Kan någon förklara så är jag tacksam, är ganska n00b på att skriva egna sådana här grejjer ;)

Medlem sedan dec. 200012 464 inlägg
#8
strSQL = "SELECT * FROM bio WHERE vecka = " & vecka
Medlem sedan apr. 20022 743 inlägg
#9
strSQL = "SELECT * FROM bio WHERE vecka = " & DatePart('WW', now)

EDIT // LarsG's förslag skulle jag också köra på om vecka redan är definerad.

Medlem sedan apr. 20032 072 inlägg
#10

Gracias Por Favor :D
Då skall jag ordna lite.
Någon som vet hur man får en auto-submit? Alltså så att jag inte behöver trycka välj för att det skall "hända något".
För exempel se återigen länken längre upp eller här.

Medlem sedan juni 200032 967 inlägg
#11

Coccozz skrev:

Någon som vet hur man får en auto-submit? Alltså så att jag inte behöver trycka välj för att det skall "hända något".

<select onchange="this.form.submit();">
Medlem sedan apr. 20032 072 inlägg
#12

@nders, tack för autoupdaten.
Nu ser IF-koden ut såhär, och jag har säkert gjort någon liten tabbe, men jag har stirrat mig helt blind :r
Skickar den här så kanske ni kan upptäcka den om ni har tid och lust:

      	 <% 
      	 If Request.QueryString("do") = "check" Then
      	 vecka = Request.Form("vecka")
     	 
         IF cint(vecka) = DatePart("WW", date()) THEN 
 
		 strSQL = "SELECT * FROM bio WHERE vecka = " & vecka
         
		 Set objRS = Databas.Execute(strSQL)

		 Do Until objRS.EOF

		 Response.Write(objRS("titel")) & "<br>"
		 Response.Write(objRS("text")) & "<br>"
		 objRS.MoveNext

	     Loop
	 	 Set objRS = Nothing
	 	 END IF
	 	 	 	 
	 	 	ELSE IF Request.QueryString("do") = "check" Then
		   	vecka = Request.Form("vecka")
     	 
         	IF cint(vecka) = DatePart("WW", date()+1) THEN 
 
		 	strSQL = "SELECT * FROM bio WHERE vecka = " & vecka
         
		 	Set objRS = Databas.Execute(strSQL)

		 	Do Until objRS.EOF

		 	Response.Write(objRS("titel")) & "<br>"
		 	Response.Write(objRS("text")) & "<br>"
		 	objRS.MoveNext
         	END IF
         	
         	               	 
         ELSE IF Request.QueryString("do") = "check" Then
      	 vecka = Request.Form("vecka")
     	 
         IF cint(vecka) = DatePart("WW", date()+2) THEN 
 
		 strSQL = "SELECT * FROM bio WHERE vecka = " & vecka
         
		 Set objRS = Databas.Execute(strSQL)

		 Do Until objRS.EOF

		 Response.Write(objRS("titel")) & "<br>"
		 Response.Write(objRS("text")) & "<br>"
		 objRS.MoveNext
		 END IF
		 END IF
         	%>

Tackar//

Medlem sedan juni 200032 967 inlägg
#13

Hmm, vad är det egentligen koden ska göra? Du har tre kodstycken som är mer eller mindre identiska, dessutom har du en if-sats om är konstig:

"Om variabeln do innehåller "check", gör detta. Annars, om det är "check" den innehåller; gör detta. Om det inte är "check" eller "check", utan "check" variabeln innehåller, gör detta."

Om du indenterar din kod ordentligt så man ser vad som hör till vad är det lättare för dig att se vad du gjort för fel, och då förstår du kanske också vad jag menar ovan.

Medlem sedan apr. 20032 072 inlägg
#14

Ojsan. Som sagt en aning förblindad och kanske ännu mer, trött. Har nu tagit bort en del av det, borde nog kika på det imorrn om ni inte hjälper mig, e lite snurrig nu :S
Såhär får jag iaf. ihop koden

<% 
      	 If Request.QueryString("do") = "check" Then
      	 vecka = Request.Form("vecka")
     	 
            IF cint(vecka) = DatePart("WW", date()) THEN 
 
		    strSQL = "SELECT * FROM bio WHERE vecka = " & vecka
         
		    Set objRS = Databas.Execute(strSQL)

		    Do Until objRS.EOF

		    Response.Write(objRS("titel")) & "<br>"
		    Response.Write(objRS("text")) & "<br>"
		    objRS.MoveNext

	        Loop
	 	    Set objRS = Nothing
	 	    END IF
	 	 	 	 
	    IF cint(vecka) = DatePart("WW", date()+1) THEN
      
		strSQL = "SELECT * FROM bio WHERE vecka = " & vecka
         
		Set objRS = Databas.Execute(strSQL)

	 	Do Until objRS.EOF

	 	Response.Write(objRS("titel")) & "<br>"
	 	Response.Write(objRS("text")) & "<br>"
	 	objRS.MoveNext
       	END IF
         	         	               	 
            IF cint(vecka) = DatePart("WW", date()+2) THEN 
 
		    strSQL = "SELECT * FROM bio WHERE vecka = " & vecka
         
		    Set objRS = Databas.Execute(strSQL)

		    Do Until objRS.EOF

		    Response.Write(objRS("titel")) & "<br>"
		    Response.Write(objRS("text")) & "<br>"
		    objRS.MoveNext
		    END IF
		    END IF
         	%>

@nders har du kollat länken i tidigare inlägg? Om inte, gör så så tror jag att du förstår vad IFsatserna skall göra. De skall visa info om filmer som går i den valda veckan.

Medlem sedan apr. 20022 743 inlägg
#15

Koden är ju lika dan i alla dina if-satser. Det spelar ju ingen roll om vecka är DatePart("WW", date()) eller DatePart("WW", date()+1) eller DatePart("WW", date()+2), den skriver ju ut samma sak, alltså kan du skippa if-satserna.

Medlem sedan apr. 20032 072 inlägg
#16

Hehe, är som sagt trög. tack för att du öppnade ögonen på mig Poffe.
Ang. @nders kodsnutt till autosub. Den fungerar superbra till de två nedersta/sista alternativen men inte till det översta. Varför inte?
Selectbox kod:

<select size="1" name="vecka" style="margin:0; border:1px solid #000000; font-family:verdana; font-size:8pt; color:#000000; word-spacing:0; text-align:left" onchange="this.form.submit();">
<option value="<%=x%>">vecka <%=x%></option>
<option value="<%=x+1%>">vecka <%=x+1%></option>
<option value="<%=x+2%>">vecka <%=x+2%></option>
</option>
</select>

Tackar//

Medlem sedan apr. 20022 743 inlägg
#17

Det fungerar inte på översta eftersom det redan är valt, sätt en tom rad överst så ska det nog fungera.

Medlem sedan apr. 20032 072 inlägg
#18

Ajaj, skall bli kapten Poffe :e
Då kanske du kan hjälpa mig lite snabbt med adminsidan jag skall ha till också när du ändå är i tagen :p.
Använder den här koden till Insert Into:

If Request.QueryString("do") = "add" Then

	titel	= Request.Form("titel")
	text	= Request.Form("text")
	vecka	= Request.Form("vecka")
	dag		= Request.Form("dag")
	bild	= Request.Form("bild")
	starttid= Request.Form("tid")
	pris	= Request.Form("pris")
	
'	SQL = "Insert Into bio(titel) Values('" & titel & "')"

	SQL = "Insert Into bio(titel, [text], vecka, dag, bild, starttid, pris) Values('" & titel & "', '" & text & "',"_
		& vecka & ", " & dag & ", " & bild & ", " & starttid &", " & pris & ")"
		
	Con.Execute(SQL)
	
	Session("mess") = "Händelsen är nu inlagd i databasen"
	Con.Close
	Set Con = nothing
	
	Response.Redirect "admin.asp"
End If

Får detta felmeddelandeT:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i INSERT INTO-uttryck.
/bio/admin.asp, line 37

Tackar//

R// Jodå, att bara stoppa in en tom ruta fungerar superbt :D
Kan man inte få så att rutan stannar kvar på markerad vecka efteråt? Eller är det krångligt. Nu laddar den om sidan och så blir den åter blank, listrutan. Kolla länken här så förstår ni nog ;).

Medlem sedan apr. 20022 743 inlägg
#19

Vilken databas använder du?

Antar att starttid är satt som datum i databasen.

SQL = "Insert Into bio(titel, [text], vecka, dag, bild, starttid, pris) Values('" & titel & "', '" & text & "',"_
		& vecka & ", " & dag & ", " & bild & ", '" & starttid &"', " & pris & ")"

eller om det är Access

SQL = "Insert Into bio(titel, [text], vecka, dag, bild, starttid, pris) Values('" & titel & "', '" & text & "',"_
		& vecka & ", " & dag & ", " & bild & ", #" & starttid &"#, " & pris & ")"
Medlem sedan apr. 20022 743 inlägg
#20

Coccozz skrev:

Jodå, att bara stoppa in en tom ruta fungerar superbt :D
Kan man inte få så att rutan stannar kvar på markerad vecka efteråt? Eller är det krångligt. Nu laddar den om sidan och så blir den åter blank, listrutan. Kolla länken här så förstår ni nog ;).

Du får ha en if-sats som kollar om Request.Form("vecka") har ett värde och jämföra mot listan, om det matchar så får du sätta dit "selected".

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