webForumDet fria alternativet

kolla fält för personnummer

ASP

8 svar · 652 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Frågan#1

Hur kollar jag så att man anger ett värde

<% PrintDateBox2 "txtPersonnr", txtPersonnr %>

Sub PrintDateBox2(boxname,vdate)
	dim strYearValue,strMonthValue,strDayValue

	if vdate <> "invalid" then
		strYearValue = trim(year(vdate))
		strMonthValue = trim(month(vdate))
		strDayValue = trim(day(vdate))
	else
		strYearValue = "-1"
		strMonthValue = "-1"
		strDayValue = "-1"
	end if

	redim months(11)
	months(0) = "Jan"
	months(1) = "Feb"
	months(2) = "Mar"
	months(3) = "Apr"
	months(4) = "Maj"
	months(5) = "Jun"
	months(6) = "Jul"
	months(7) = "Aug"
	months(8) = "Sep"
	months(9) = "Okt"
	months(10) = "Nov"
	months(11) = "Dec"

	dim i

	'dag
	Response.Write "<select name=""" & boxname & "_day"">" & vbCrLf
	response.write "<option value=""""></option>"
	for i = 1 to 31
		Response.Write "<option"
		if cint(i) = cint(strDayValue) then
			Response.Write " selected"
		end if
		Response.Write " value=""" & i & """>" & i & "</option>" & vbCrLf
	next
	Response.Write "</select> - "

	'månad
	Response.Write "<select name=""" & boxname & "_month"">" & vbCrLf
	response.write "<option value=""""></option>"
	for i = 1 to 12
		Response.Write "<option"
		if cint(i) = cint(strMonthValue) then
			Response.Write " selected"
		end if
		Response.Write " value=""" & i & """>" & months(i - 1) & "</option>" & vbCrLf
	next
	Response.Write "</select> - "

	'år
	Response.Write "<select name=""" & boxname & "_year"">" & vbCrLf
	response.write "<option value=""""></option>"
	for i = year(now)-75 to year(now)-13
		Response.Write "<option"
		if cint(i) = cint(strYearValue) then
			Response.Write " selected"
		end if
		Response.Write " value=""" & i & """>" & i & "</option>" & vbCrLf
	next
	Response.Write "</select>"

End Sub
Medlem sedan juni 20019 519 inlägg
#2

Det du skickar här är en asp kod... du får kontrollera alla dina select name om det har ett värde eller inte.

txtPersonnr_day, txtPersonnr_month, txtPersonnr_year

Medlem sedan feb. 20032 027 inlägg
#3

det går ju inte kolla med request.form så hur skriver man skmidigast, är trött på att medlemmar inte fyller i nåt vid registrering

Medlem sedan juni 20019 519 inlägg
#4

Vill du göra det med Javascript ELLER ASP?

Visst går det med ASP med request.form... men du har "dynamiskt namn" på din funktion / sub
Så på ditt exempel får du ta Request.Form("txtPersonnr_day") , Request.Form("txtPersonnr_month") och Request.Form("txtPersonnr_year") Går även med javascript med folk kan stänga av javascript och då få du felet ändå.

Medlem sedan feb. 20032 027 inlägg
#5

så här då

<%if Request.Form("txtPersonnr_day") and Request.Form("txtPersonnr_month") and Request.Form("txtPersonnr_year") = "" then
response.redirect "reg-form.asp"
end if%>
Medlem sedan juni 20019 519 inlägg
#6

Du skriver i "klartext":

Om txtPerson_day är sant och txtPersonnr_month är sant och txtPersonnr_year är lika med "" då ska du gå till reg-form.asp

Hade nog skrivit:

If Request.Form("txtPersonnr_day") = "" Or Request.Form("txtPersonnr_month") = "" Or Request.Form("txtPersonnr_Year") = "" Then
'Något av de 3 val är lika med INGET gå till sidan igen
End If

Nu är det Om två är OK men inte det 3 så skall den ändå gå till tillbaka.

Medlem sedan feb. 20032 027 inlägg
#7

voigtann1 skrev:

Du skriver i "klartext":

Om txtPerson_day är sant och txtPersonnr_month är sant och txtPersonnr_year är lika med "" då ska du gå till reg-form.asp

Hade nog skrivit:

If Request.Form("txtPersonnr_day") = "" Or Request.Form("txtPersonnr_month") = "" Or Request.Form("txtPersonnr_Year") = "" Then
'Något av de 3 val är lika med INGET gå till sidan igen
End If

Nu är det Om två är OK men inte det 3 så skall den ändå gå till tillbaka.

är det inte bäst att ha 3 sanna eftersom sidan kan ge ett felmeddelande om nåt fält inte har värde, standard i db innan värde har angetts är 0000-00-00

Medlem sedan juni 20019 519 inlägg
#8

Tror i detta fallet så spelar det inte någon roll om man kör 'And' eller 'Or' Tror även du inte behöver skriva = "". Jag har lärt mig att man alltid ska vara så negativ över vad användaren fyller i... inte vad vi vill att han ska fylla i. Exempelvis:

Dim hasAccess
hasAccess = True

If Not Request.Form("name") = "Bob" Then
hasAccess = False
End If

Dvs vi ska aldrig ta för givet att man har tillgång utan om man uppfyller kriterierna det är DÅ du får tillgången.

Allt över 0 och "" är True om jag tänker rätt så visst. Spelar ingen roll vad du har för standard värde i databasen. Du vill egentligen inte tillåta "noll" värden i din registering om du vill ha att användaren måste ha ett födelsedata.

Låt hellre sätta fältet i databasen att den inte får vara lika med null och ge hellre ett felmeddelande än att du gör undantag att det får vara noll värde i din databas på sådna fält.

Medlem sedan dec. 1999419 inlägg
#9

Flyttas: JavaScript, DHTML -> ASP

259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)