27. maj 2003 - 14:29
Der er
12 kommentarer og 2 løsninger
hjælp til function
Hej alle Jeg prøver at lave en function som skal lave en form ud fra nogle værdier, men det går ikke så godt.. Når jeg laver en form på min side, så ser den sådan ud.. <table cellpadding="0" cellspacing="0" class="mid-text"> <form action="" method="post" name=""> <tr><td>Navn</td></tr> <tr> <td><input type="text" size="25" name="navn" value="<%=navn%>"></td> </tr> <tr><td height="10"></td></tr> <tr> <td><input type="submit" value="Gem"></td> </tr> </form> </table> Det kunne jeg godt tænke mig at jeg bare kunne skrive: response.write createForm("navn","text") eller noget lign.. Jeg har prøvet at lave noget men det bliver alt for kludret hvis man lige pludselig skal kunne sætte variabler ind, og f.eks. select boxe.. men her er min kode (i simpel form) <% Function formCreator(action,felterne,navnene,type,formnavn,c) felterneArr = split(felterne,",") navnArr = split(navnene,",") typeArr = split(type,",") variablerArr = split(v,replace_string) if c <> "" then c = "onsubmit='return " & c & "(this)'" else c = "" response.write "<table class=mid-text cellpadding=0 cellspacing=0>" response.write "<form action='" & action & "' method=post name=ret " & c & ">" For i = lbound(navnArr) to ubound(navnArr) response.write "<tr><td>" & navnArr(i) & "</td></tr>" response.write "<tr><td>" if id <> "" then if typeArr(i) <> "area" then response.write "<input type='" & typeArr(i) & "' size=25 name=" & felterneArr(i) & " value='" & replace(variablerArr(i),replace_string,",") & "'>" else response.write "<textarea name='" & felterneArr(i) & "' cols='50' rows='6'>" & replace(variablerArr(i),replace_string,",") & "</textarea>" end if else if typeArr(i) <> "area" then response.write "<input type='" & typeArr(i) & "' size=25 name=" & felterneArr(i) & ">" else response.write "<textarea name='" & felterneArr(i) & "' cols=50 rows=6></textarea>" end if end if response.write "</td></tr>" response.write "<tr><td height=10></td></tr>" Next response.write "<tr><td><input type=submit value=" & formnavn & "></td></tr>" response.write "</form></table>" End function %> Håber at i kan forstå det, og at i kan hjælpe Thomas
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Function CreateForm(navn) CreateForm = "<table cellpadding='0' cellspacing='0' class='mid-text'>" &_ "<form action='' method='post' name=''>" &_ "<tr><td>Navn</td></tr>" &_ "<tr>" &_ "<td><input type='text' size='25' name='navn' value='" & navn & "'></td>" &_ "</tr>" &_ "<tr><td height='10'></td></tr>" &_ "<tr>" &_ "<td><input type='submit' value='Gem'></td>" &_ "</tr>" &_ "</form>" &_ "</table>" End Function Response.Write CreateForm("Johnny")
Det jo være sådan at jeg også bare kan skrive response.write CreateForm("Navn,email,beskrivelse","text,text,textarea") altså så den laver det flere gange...
Nå ja... Så skal du have gang i en løkke oppe i funktionen. F.eks.: Function CreateForm(FormMethod, InputNavne, InputTyper) CreateForm = "<form method='" & FormMethod & "' action=''>" ArrNavne = Split(InputNavne, ",") ArrTyper = Split(InputTyper, ",") For i = 0 To UBound(ArrNavne) If ArrTyper(i) = "textarea" Then CreateForm = CreateForm & "<textarea name='" & ArrNavne(i) & "'></textarea>" Else CreateForm = CreateForm & "<input type='" & ArrTyper(i) & "' name='" & ArrNavne(i) & "'>" End If Next CreateForm = CreateForm & "</form>" End Function Response.Write CreateForm("post", "efternavn,cv,send", "text,textarea,submit") For Select-bokse er det nok lettest at lave en seperat funktion: Function CreateSelect(SelectNavn, OptionNavne, OptionData) CreateSelect = "<select name='" & SelectNavn & "'>" ArrNavne = Split(OptionNavne, ",") ArrData = Split(OptionData, ",") For i = 0 To UBound(ArrNavne) CreateSelect = CreateSelect & "<option value='" & ArrData(i) & "'>" & ArrNavne(i) & "</option>" Next CreateSelect = CreateSelect & "</select>" End Function Response.Write CreateSelect("Aldersgruppe", "Ung,Middel,Gammel", "30,50,70") Håber du kunne bruge det til noget ;)
Det er meget fint, og det er faktisk det samme som jeg har vist oppe for oven.. :) Men hvad gør man når man skal sætte funktionen med select sammen med toppen, og hvad hvis der skal være en value på form felterne.. ??? Så begynder problemerne.. Synes jeg.. :) Thomas
Det er nok bedre, du bare har en funktion til input-felter og en til select-bokse. Så kan du stadig gøre det kort. Response.Write "<form>" Response.Write CreateInput("blabla") Response.Write CreateSelect("blabla") Response.Write "</form>" Det skal godt nok være en stor formular, før jeg kan se idéen i alt det her...
Hva så hvis der skal value på... f.eks. hvis man nu skal lave en side hvor man kan rette i ting fra en db, og så skal stå noget i felterne.. hvad gør man så.. Altså hvis jeg skriver følg. <% SQL = "select * from tabel" set s = conn.Execute(SQL) navn = s("navn") beskrivelse = s("beskrivelse") %> Hvordan får jeg så værdien af de to variabler (navn & beskrivelse) til at stå inde i felterne.. ??? Thomas Jeg rejser på ferie lige om lidt, og jeg er først tilbage på søndag, så det er ikke fordi at jeg ikke vil svare... :)
Så må du bare udvide parametrene lidt: Function CreateInput(InputNavne, InputTyper, InputData) ArrNavne = Split(InputNavne, ",") ArrTyper = Split(InputTyper, ",") ArrData = Split(InputData, ",") For i = 0 To UBound(ArrNavne) CreateInput = CreateInput & "<input type='" & ArrTyper(i) & "' name='" & ArrNavne(i) & "' value='" & ArrData(i) & "'>" Next End Function Response.Write CreateInput("efternavn,cv,send", "text,text,submit", "Poulsen,Hårdtarbejdende professor,Udfør") Jeg ved ikke, om du stadig vil have løkken i funktionen nu, da den kun lave inputs.
Så skulle response.write se således ud: Response.Write CreateInput("efternavn,cv,send", "text,text,submit",navn,beskrivelse,"Send") og så melder den fejl, for den metode har jeg prøvet...
Det er også noget vrøvl du skriver ;) Response.Write CreateInput("efternavn,cv,send", "text,text,submit",navn & "," & beskrivelse & ",Send")
For at anskueliggøre det lidt, kan du også skrive: Values = navn & "," & beskrivelse & "," & "Send" Response.Write CreateInput("efternavn,cv,send", "text,text,submit", Values)
ja okay.. Det er rigtigt.. sådan gjorde jeg også på et tidspunkt.. Men så kommer der et andet problem, det laver split ved "," så hvis der står et , i beskrivelsen så bliver der cuttet flere steder end der skal.. :| Jeg prøvede med at lave at den replacede med en eller anden skør streng eks: "|.|" for det er der aldrig nogle der bruger.. men så bliver funktionen også større og større og derfor ville jeg spørge herinde om der var nogle der kunne en smartere måde.. :) Thomas Thomas
Så split med konstanten VerticalTab f.eks. Den bruges vist ikke mere.
Streng = "Hans" & VerticalTab & "Bente" & VerticalTab & "John"
ArrStreng = Split(Streng, VerticalTab)
Eller find et eller andet sygt tegn, såsom klør ♣ at splitte med.
Inspiration:
http://www.html.dk/dokumentation/tegn/symboler.asp
06. august 2003 - 21:14
#14
Lukker
Kurser inden for grundlæggende programmering