Avatar billede thb Nybegynder
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
Avatar billede oasen Nybegynder
27. maj 2003 - 18:02 #1
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")
Avatar billede thb Nybegynder
27. maj 2003 - 18:24 #2
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...
Avatar billede oasen Nybegynder
27. maj 2003 - 22:51 #3
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 ;)
Avatar billede thb Nybegynder
27. maj 2003 - 22:58 #4
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
Avatar billede oasen Nybegynder
28. maj 2003 - 09:09 #5
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...
Avatar billede thb Nybegynder
28. maj 2003 - 09:34 #6
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... :)
Avatar billede oasen Nybegynder
28. maj 2003 - 10:37 #7
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.
Avatar billede thb Nybegynder
28. maj 2003 - 10:48 #8
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...
Avatar billede oasen Nybegynder
28. maj 2003 - 10:53 #9
Det er også noget vrøvl du skriver ;)

Response.Write CreateInput("efternavn,cv,send", "text,text,submit",navn & "," & beskrivelse & ",Send")
Avatar billede oasen Nybegynder
28. maj 2003 - 10:57 #10
For at anskueliggøre det lidt, kan du også skrive:

Values = navn & "," & beskrivelse & "," & "Send"
Response.Write CreateInput("efternavn,cv,send", "text,text,submit", Values)
Avatar billede thb Nybegynder
28. maj 2003 - 11:02 #11
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
Avatar billede oasen Nybegynder
28. maj 2003 - 14:45 #12
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 &#9827; at splitte med.
Inspiration: http://www.html.dk/dokumentation/tegn/symboler.asp
Avatar billede oasen Nybegynder
28. maj 2003 - 14:46 #13
Hmm... &clubs;
Avatar billede thb Nybegynder
06. august 2003 - 21:14 #14
Lukker
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester