webForumDet fria alternativet

Uppdatera i loop

10 svar · 308 visningar · startad av Skarre

SkarreMedlem sedan apr. 20012 427 inlägg
#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?

RifflesMedlem 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.

SkarreMedlem 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".

solbulleMedlem 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?

SkarreMedlem 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?

SkarreMedlem 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
@ndersMedlem sedan juni 200032 969 inlägg
#7

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

SkarreMedlem 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).

@ndersMedlem sedan juni 200032 969 inlägg
#9

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

Exakt vilket felmeddelande får du?

Mvh,

SkarreMedlem 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

@ndersMedlem sedan juni 200032 969 inlägg
#11

Du ska egentligen inte ha parenteser alls i din UPDATE.

Mvh,

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