webForumDet fria alternativet

ej i kryssad checkbox

16 svar · 419 visningar · startad av johannaloke

johannalokeMedlem sedan apr. 200393 inlägg
#1

Har ett formulär med en checkbox som ska kryssas i om personen jag ska lägga till är en sekreterare:

<input type=checkbox name=sekreterare value=6>

I filen som läser in formuläret använder jag

UploadRequest.Item("sekreterare").Item("Value") e

eftersom jag även gör en uppladdning av en bild så kan jag inte använda mig av request.form.

Problemet blir när inte checkboxen kryssats i för då har den inget värde. Jag får felmeddelandet:

Object required: 'Item(...)'

Är det någon som kan hjälpa mig att lösa det?
//Johanna

martinpartinMedlem sedan jan. 2001373 inlägg
#2

Hej,,

Kan du inte använda ett annat "default-värde" i databasen ?
Alltså om den är tom innan så kan den ju generara ett värde som "tom" t.ex. ? inte så snyggt men snabb lösning. Ev. Låta den gå igenom en annan fil med response.redirect. Känns inte bra alls men det fungerar.

Mvh
Martin

johannalokeMedlem sedan apr. 200393 inlägg
#3

Jag förstår inte riktigt hur du menar att jag ska komma runt problemet.
Jag lyckas ju inte göra själva inläsningen om checkboxen inte är ikryssad. Då får jag kompileringsfel. Om det bara vore att den blev tom så skulle jag ju själv kunna bestämma vad jag vill lägga in i databasen.
Jag kommer ju inte från databasen (om man kan förklara så) utan jag kommer från ett formulär som ska läsas in och värdena sen läggas in i databasen.

Vet inte om vi missuppfattar varandra?! Du får gärna förklara mer hur du menar så kanske jag förstår.
//Johanna

martinpartinMedlem sedan jan. 2001373 inlägg
#4

Oki... Om du postar det till en annan sida som tar emot formuläret och samlar ihop samtiliga värden... Och den kollar om sekretarar-checkboxen är tom är den det så tilldelas den variablen det värden annar så använder det postade värdet. Sedan kan du använda din av response.redirect med en querystring. Blir iofs jobbigt om du ska skriva en massa saker.

Dum idé är det nog :)

Finns det inte något motsvarande request.form i din komponent ?
t.ex. mySmartUpload.Form i aspsmartupload .

johannalokeMedlem sedan apr. 200393 inlägg
#5

Jag läser in med
UploadRequest.Item("sekreterare").Item("Value")
detta måste göras för att jag gör en uppladdning av en bild också.
Det motsvarar request.form.

Jag har en if sats som kollar om den är ikryssad. Och det funkar så länge den är ikryssad. Men om den inte är det så har den inget value och då blir det kompileringsfel. Jag hade velat att jag tex fick en 0 om den inte var ikryssad men jag får som sagt var bara kompileringsfel.
//Johanna

martinpartinMedlem sedan jan. 2001373 inlägg
#6

vad med:


if UploadRequest.Item("sekreterare") = "" then 

str_arsekreterare = "0"

Else

str_arsekreterare =  UploadRequest.Item("sekreterare")

End if

eller


if UploadRequest.Item("sekreterare") = "" then 

Kör kod med "hårdkodad" 0 

Else

Vanlig kod

End if
johannalokeMedlem sedan apr. 200393 inlägg
#7

Om jag gör som du skrev nu så funkar det när det inte är ikryssat men inte om det är det!
Får följande felmeddelande då:
Wrong number of arguments or invalid property assignment

Har du fler idéer?
//Johanna

martinpartinMedlem sedan jan. 2001373 inlägg
#8

Vilken variant använde du ?

johannalokeMedlem sedan apr. 200393 inlägg
#9

Den nedre men det är villkoret i if-satsen som gör att det blir kompileringsfel.
Och den är samma i båda.
För om den är ikryssad har den inte värdet "" utan något som jag inte kan kolla på det viset.
//Johanna

martinpartinMedlem sedan jan. 2001373 inlägg
#10

??? om den är ikryssad så har den väl ett värde ? det kan väl inte vara nått fel på det värdet ? du bestämmer ju det själv..
Det finns ju bara 2 värden när man använder checkbox.

If str_arsekreterare <> "" 

bla bla

Else

bla bla

End if

??

johannalokeMedlem sedan apr. 200393 inlägg
#11

UploadRequest.Item("sekreterare").Item("Value")
fungerar inte på samma sätt som
request.form

Request.form läser in oavsett om ikryssad eller ej och ger då värdet "" respektive "mitt value".

UploadRequest.Item("sekreterare").Item("Value") läser in bara om den är ikryssad annars ger det kompileringsfel. Alltså måste jag ha två olika inläsningssätt och det kan jag ju inte ha utan att jag först vet om den är ikryssad eller ej.
Jag kan alltså inte använda en if-sats med UploadRequest.Item("sekreterare").Item("Value") utan jag skulle behöva ett annat villkor typ:
om ikryssad
str = UploadRequest.Item("sekreterare").Item("Value")
annars
str = ""

UploadRequest.Item("sekreterare").Item("Value") returnerar alltså inte "" om den inte kryssats i för det går inte att läsa in den alls.

Därför tror jag att min syntax med upload är fel. Men jag vet inte hur den ska vara ístället.
Det verkar vara mycket krångligare än med request.form
//Johanna

martinpartinMedlem sedan jan. 2001373 inlägg
#12

Jag förstår ditt problem bättre nu.

Du kan ju använda On Error Resume Next. Men det är inte så snyggt o andra sidan.

Har dom som gör kompnenten nån hemsida eller nått så kan jag kolla till dig om jag hittar något ?
Det lär ju vara ett återkommande problem.

Mvh
Martin

johannalokeMedlem sedan apr. 200393 inlägg
#13

Jag har hittat en metod för scripting.dictionary-objekt (som UploadRequest är) som heter Exists som kollar om det finns något värde. Den funkade alldeles utmärkt efter som det bara finns värde om den är ikryssad annars returnerar funktionen null.

så här skrev jag:
if UploadRequest.Exists("sekreterare") = true

Tack i alla fall!
//Johanna

EclipseMedlem sedan juli 20003 825 inlägg
#14

Checkboxar - Rent generellt.

Jag har inte läst all kod i denna tråden så jag kan inte svara specifikt. Men checkboxar använder alla och jag har utvecklat det där lite längre för egen del.

[users]
intID
strName
bolAdmin

SQL = "SELECT intID, strName, bolAdmin FROM users;"
set mySQL = Conn.Execute(SQL)

IF NOT mySQL.EOF THEN myRow = mySQL.GetRows()

***
Ok, är du med på ovanstående!?

Du har en Array:
0,0 = 23 (intID)
1,0 = "Eclipse" (strName)
2,0 = FALSE (bolAdmin)

***
Det smarta med denna koden är att du använder samma kod oavsett om värdet är TRUE eller FALSE.

' ## VIEW
response.write "<A HREF=""confirm.asp?view_" & LCase(myRow(1,j)) & "=" & myRow(0,j)
response.write """><IMG SRC=""/admin/pics/icons/" & LCase(myRow(1,j)) _
& ".gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0"" TITLE=""Publish""></A>"

Jag vet inte om du förstår denna koden.

Den växlar:
confirm.asp?view_true&ID=23 ... true.gif </A>
confirm.asp?view_false&ID=23 ... false.gif </A>

I mappen "/admin/pics/icons/" finns ikonerna true.gif och fgalse.gif.

***
Sen har jag varit ännu mer slö och tänkte, kan man inte använda samma kod ännu mer? Jag menar, om man vet det ena så är det automatiskt det andra?

Från filen confirm.asp:
' ## VIEW - 2003-03-27
myVar = request("bolView")
IF myVar <> "" THEN
funcTrueFalse(myVar)
returnPath = "index.asp"
IF request("page") <> "" THEN returnPath = returnPath & "?page=" & request("page")
END IF

***
Funktionen till det där:

Från filen open.asp (inkluderad på varje sida)
' ## TRUE/FALSE
FUNCTION funcTrueFalse(myVar)
	DIM strQS, varQS
	DIM strFieldName, strFieldValue

	' ## COLLECT VALUES
	strQS = Request.Querystring
	varQS = split(strQS, "=")
	if not ubound(varQS) = -1 then
    strFieldName = replace(varQS(0), "sub_", "")
		strQS = varQS(1)
		varQS = split(strQS, "&")
    strFieldValue = varQS(0)
	END IF

	' ## UPDATE TABLE
	IF Left(Request.Querystring, 4) = "sub_" THEN
		SQL = "UPDATE [" & mySubTable & "] SET " & strFieldName & " = Iif(" & strFieldName &" = FALSE, TRUE, FALSE) WHERE intID = " & strFieldValue & ";"
	ELSE
		SQL = "UPDATE [" & myTable & "] SET " & strFieldName & " = Iif(" & strFieldName &" = FALSE, TRUE, FALSE) WHERE intID = " & strFieldValue & ";"
	END IF
	Conn.Execute(SQL)
END FUNCTION

Du kanske fattar allt det där och då är du en klippa! Själv är jag nöjd så länge allt fungerar...

Lycka till! :-)

martinpartinMedlem sedan jan. 2001373 inlägg
#15

Tar semester en vecka för att läsa din kod :)

EclipseMedlem sedan juli 20003 825 inlägg
#16

OK.... Den är lite väl omständig för *en enda checkruta*, jag håller med.

Hela poängen är att om du kan använda *samma* kod för alla famtida checkrutor i hela ditt liv och i alla kommande projekt och du behöver alltså aldrig mer fundera på detta.

Väl använd semester skulle jag säga! :-)

martinpartinMedlem sedan jan. 2001373 inlägg
#17

jepps håller med om det. Skönt när man har en grej som man vet att den fungerar oavsett. Men inte hur ! ? :)

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