en dynamisk form - hvor antal felter styres fra et administrationsmodul.
Der kan altså være 1 eller 100 felter af type person_id_x.
Hvordan optimeres denne kode bedst:
for each variable_name in request.form x = x +1 if inStr(request.form.key(x),"person_id") > 0 then counter = counter + 1 Execute "str_" & request.form.key(x) & " = """ & request.form.item(x) & """" if eval("str_person_id_" & counter) = "" then ' en eller anden fejl - feltet er tomt else ' feltet er IKKE tomt - do your thing end if next
hmm ... så er det ikke så meget jeg ville ha optimeret koden (andet end at jeg ville have brugt arrays, istedet for at oprette variabler on the fly:
for each variable_name in request.form x = x +1 if inStr( variable_name,"person_id") > 0 then counter = counter + 1 Execute "str_" & variable_name & " = """ & request.form( variable_name ) & """" if eval("str_person_id_" & counter) = "" then ' en eller anden fejl - feltet er tomt else ' feltet er IKKE tomt - do your thing end if end if next
Dim arrVars() counter = 1 for each variable_name in request.form if inStr( variable_name, "person_id") > 0 then Redim Preserve arrVars( 1, counter ) arrVars( 0, counter ) = variable_name arrVars( 1, counter ) = Request.form( variable_name ) counter = counter + 1 end if next for i = 1 to UBound( arrVars, 2 ) Response.Write( "Felt: <b>" & arrVars(0, i ) & "</b>, værdi: <b>" & arrVars(1, i ) & "</b><br>" ) next
Jeg har dog aldrig forstået den helt store hensigt med dynamiske variable. jeg mener at hvis man ikke ved hvad ens variable hedder "i starten" af sin kode, så kan man hellere ikke vide hvad de hedder "i midten" af sin kode. Jeg synes arrays er meget bedre at arbejde med, for man ved altid hvad man har. Jeg har hellere aldrig oplevet nogen der bruger dynamiske variable, i mit professionelle liv, og mange af mine dygtige kolleger, samt den kode jeg læser hver dag, bruger det ikke. Nu kender jeg ikke til "de gode gamle sprog", men jeg har på følelsen af at dynamiske variable er noget der hører forhistorien til ... men det er bare mit ignorante bud :-)
/nute
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.