2012-03-31 4 views
0

Résumé rapide de ma question: Je souhaite afficher le nombre de champs qu'un utilisateur a remplis. Je suis nouveau à l'apprentissage ASP et j'ai regardé et n'ai pas trouvé une solution. J'ai généré un exemple de page qui est simple par rapport à ce dont j'ai besoin d'aide, mais la même idée.Champs de comptage remplis

Lorsque l'utilisateur accède à la première page, il lui est évidemment donné trois zones de texte. Quand il soumet le formulaire, il affiche les informations qu'il a soumises avec le nombre de champs remplis. J'essaie de parcourir chaque champ et, si le nombre est supérieur à 0, d'en ajouter un à un compteur nommé tt. Le passage 2 me montre la boucle, plutôt que de me donner la valeur de tt. J'ai essayé de mettre la boucle en utilisant response.write mais cela n'a pas fonctionné.

<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

Est-ce que votre question sur ASP ou ASP.net classique? Le code ressemble à ASP. –

+0

On dirait qu'il pourrait être MVC2 en utilisant VB? – TGH

+0

.asp, désolé à ce sujet – user1084561

Répondre

0

Vous ne pouvez pas utiliser de noms de variables dynamiques. Ils ne sont pas pris en charge. Essayez ceci:

'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

Vous pouvez utiliser la méthode Eval pour cela - en général il est mal vu, mais ce cas est l'utilisation valable:

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 

Comme vous pouvez le voir, vous devez convertir la valeur numéroter en utilisant CLng pour avoir une comparaison correcte.

Questions connexes