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?
Uppdatera i loop
10 svar · 308 visningar · startad av Skarre
Ä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.
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".
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?
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?
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
Skriv ut SQL-satsen med response.write i stället för att exekvera den.
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).
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