2012-03-31 8 views
0

Schnelle Zusammenfassung meiner Frage: Ich möchte die Anzahl der Felder anzeigen, die ein Benutzer ausgefüllt hat.Zählfelder ausgefüllt

Ich bin neu beim Lernen ASP und ich habe gesucht und habe keine Lösung gefunden. Ich habe eine Beispielseite generiert, die im Vergleich zu dem, mit dem ich Hilfe benötige, einfach ist, aber die gleiche Idee.

Wenn der Benutzer auf die erste Seite geht, bekommt er offensichtlich drei Textfelder. Wenn er das Formular einreicht, werden ihm die von ihm übermittelten Informationen mit der Anzahl der ausgefüllten Felder angezeigt. Ich versuche, jedes Feld zu durchlaufen, und wenn die Zahl größer als 0 ist, füge ich einen zu einem Zähler namens tt hinzu.

Pass 2 zeigt mir die Schleife, anstatt mir den Wert von tt. Ich habe versucht, die Schleife mit response.write setzen, aber das hat nicht funktioniert.

<html> 
<body> 

<% 
sub pass1 
%> 
Pass 1 <P> 
<form action="count_p.asp" method = "post"> 
<input type="text" name="t1"><BR> 
<input type="text" name="t2" ><BR> 
<input type="text" name="t3"><BR> 
<input type="hidden" name="token" value="2"> 
<input type="submit" value="submit query"> 




<% 
end sub 

sub pass2 
    response.write "<P>Pass 2 tokenvalue="+cstr(tokenvalue) 

t1=request.form("t1") 
t2=request.form("t2") 
t3=request.form("t3") 



response.write "<P>t4=" + t1 
response.write "<P>t4=" +t2 
response.write "<P>t4=" +t3 
%> 

tt=0 
for i=1 to 3 
    if t + cstr(i) > 0 then 
    tt=tt+1 
    end if 
then 


response.write "<P>Fields filled = " + tt 



<% 
end sub 



tokenvalue=request.form("token") 
select case tokenvalue 
case "" 
    call pass1 
case "2" 
    call pass2 
case "3" 
    call pass3 

end select 
%> 


</body> 
</head> 
+0

Ist Ihre Frage zu klassischem ASP oder ASP.net? Der Code sieht wie ASP aus. –

+0

Sieht aus, als könnte es MVC2 mit VB sein? – TGH

+0

.asp, tut mir leid – user1084561

Antwort

0

Sie können keine dynamischen Variablennamen verwenden. Sie werden nicht unterstützt. Versuchen Sie folgendes:

'Here we are splitting all the form values 
'into an array. Your values will come in 
'looking something like this: 
' 
' t1=4&t2=323&t3=3 
' 
'after we split them, you'll have 3 sets 
'of values that look like: 
' 
' aFormNamesAndValues(0) = "t1=4" 
' aFormNamesAndValues(1) = "t2=323" 
' aFormNamesAndValues(2) = "t3=3" 

aFormNamesAndValues = Split(Request.Form,"&") 

tt=0 
for i=0 to 2 
    'Ok, splitting once again, this time on the 
    'equals character. Now we will have an array 
    'with 2 values, the name of the form field 
    'and the value it holds, we can check each 
    'value and perform some logic on it: 
    aNameAndAValue = Split(aFormNamesAndValues(i),"=") 

    if aNameAndAValue(0) = "t" & (i+1) then 
     if aNameAndAValue(1) > 0 then 
      tt=tt+1 
     end if 
    end if 
then 
0

Sie Eval Methode dafür verwenden kann - in der Regel ist es verpönt, aber in diesem Fall ist es gültig Nutzung:

tt=0 
For i=1 to 3 
    curValue = Eval("t" & i) 
    If IsNumeric(curValue) Then 
     If CLng(curValue)>0 Then 
      tt = tt + 1 
     End If 
    End If 
Next 

Wie Sie auch sehen können, Sie den Wert konvertieren zu nummerieren mit CLng, um einen richtigen Vergleich zu haben.

Verwandte Themen