webForumDet fria alternativet
Logga in / Bli medlem

Uppdatera i loop

ASP

10 svar · 313 visningar · startad av Skarre

Medlem sedan apr. 20012 427 inlägg
Trådstart#1

Jag sitter och skriver en administrationssida där man ska kunna ändra ordningen i vilken ett antal kategorier visas när dessa presenteras och jag antar att jag måste skapa en loop. Det låter lite luddigt men om ni tittar på den bifogade bilden så kanske ni ser vad jag försöker göra. Hur skapar jag en array av formulärfälten med siffror i?

Medlem sedan juni 2000974 inlägg
#2

Är det inte bättre att du bara kör din sortering i själva SQL-satsen?

SQL = "SELECT * FROM dinTabell ORDER BY ID DESC"

DESC innebär att du kör sorteringen tvärtom.

Medlem sedan apr. 20012 427 inlägg
#3

Du missförstår mig. Sidan som visas på den bifogade bilden är en administrationssida för att lägga till, redigera och radera presentationer av olika avdelningar på en fritidsgård. På själva hemsidan finns sedan en huvudsida där alla fritidsgårdens avdelningar listas upp tillsammans med en kort beskrivning och en länk till själva presentationen. Genom kolumnen "ordning" i databasen kan man själv bestämma exakt i vilken ordning dessa avdelningar ska visas genom att ange en siffra. När jag sedan loopar ut avdelningarna sorterar jag alltså efter kolumnen "ordning".

Medlem sedan mars 20015 287 inlägg
#4

Varför ska du ha in det i en array? Ska du inte lägga in det i databasen för att sen sortera i sql-frågan när du plockar ut datan?

Medlem sedan apr. 20012 427 inlägg
#5

Jag antog att man kunde göra det med en array, men jag kanske tänkte fel. Om jag har en SQL-sats som ser ut så här:

UPDATE Presentationer SET (Ordning = '" & Request.Form("ordning") & "') WHERE ID = " & Request.Form("id")

... så fungerar det om det vore en enda post som skulle uppdateras, men hur ska jag göra för att uppdatera samtliga posters "ordning"-värde i tabellen? En loop verkar rimligt, men hur loopar jag igenom formulärfält? En For Each-loop kanske, men då följer väl submit-knappen och gömda formulärfält med och förstör?

Medlem sedan apr. 20012 427 inlägg
#6

Nu är det fixat. Jag får visserligen meddelande om syntaxfel på SQL:en, men det löser sig säkert. :)

For Each objField In Request.Form()
	If InStr(objField,"order") Then
		intID = CLng(Right(objField,Len(objField) - 5))
		objConn.Execute("UPDATE Present SET (Ordning = " & CInt(Request.Form(objField)) & ") WHERE ID = " & intID)
	End If
Next
Medlem sedan juni 200032 967 inlägg
#7

Skriv ut SQL-satsen med response.write i stället för att exekvera den.

Medlem sedan apr. 20012 427 inlägg
#8

Jag har gjort det, men jag kan inte se någonting fel.

UPDATE Present SET (Ordning = 3) WHERE ID = 6

Både 3:an och 6:an ovan är av typen Long, och kolumntyperna i databasen är Tal respektive Räknare (Access).

Medlem sedan juni 200032 967 inlägg
#9

Och om du tar bort parentesen?
I övrigt ser det rätt ut.

Exakt vilket felmeddelande får du?

Mvh,

Medlem sedan apr. 20012 427 inlägg
#10

Ursprungligen av @nders Och om du tar bort parentesen?

Det gjorde susen! Tackar! Jag brukar alltid använda parenteser så det är underligt att den vägrar nu. Kanske måste vara fler än ett värde om man ska använda parenteser. :q

Medlem sedan juni 200032 967 inlägg
#11

Du ska egentligen inte ha parenteser alls i din UPDATE.

Mvh,

261 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)