[perl] Wederkerende velden.

Pagina: 1
Acties:

  • BFS
  • Registratie: Augustus 2001
  • Laatst online: 21-08 15:47

BFS

Rude awakening

Topicstarter
Ik heb een perl script geschreven dat data uit een mailform haalt en dit doorstuurt naar een opgegeven mailadres.

Dit perl scripts wordt gebruikt door 3 verschillende (html) mail forms. Nu wil ik 3 velden in 1 formulier meerdere keren in dit mailform laten terug komen.
Dus in dit geval zijn dat:

part_info, effective_from en effective_through.

Alleen op het moment dat ik deze velden meerdere keren herhaal werkt mijn script niet meer. Nou kan ik natuurlijk het volgende doen.

part_info1, effective_from1 enz.

En vervolgens al deze velden vermelden in de andere 2 mail form's in een hidden field maar dat vind ik niet echt een nette oplossing.

Op welke manier zou ik dit probleem op kunnen lossen, ik heb al wat topics hier bekeken en google er op los gelaten maar helaas krijg ik niet echt bruikbare voorstellen of tips dus wellicht dat iemand hier mij een stapje op weg kan helpen.

When did I realize I was God? Well, I was praying and suddenly I realized that I was talking to myself


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

het beste kun je een apart mailscript maken voor dat form, die gewoon zelfstandig dewaarden van die wederkerende velden op de juiste plek plaatst.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • BFS
  • Registratie: Augustus 2001
  • Laatst online: 21-08 15:47

BFS

Rude awakening

Topicstarter
Dat zou een optie zijn maar de voorkeur van de afdeling die de server beheert is zo weinig mogelijk scripts dus helaas valt die optie min of meer af.

When did I realize I was God? Well, I was praying and suddenly I realized that I was talking to myself


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

hmm, heb jij een beter idee dan? :)

Wat je nog kan doen, is een hidden field met als value de naam van het veld dat herhaald moet worden ofzo, iets in die trand

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • BFS
  • Registratie: Augustus 2001
  • Laatst online: 21-08 15:47

BFS

Rude awakening

Topicstarter
Als ik een ander idee had gehad had ik het niet hoeven te vragen, denk ik zo ;)

En ik kan die velden idd wel hidden maken (zoals ik zelf al gezegd heb) maar ik vind het niet de mooiste/netste oplossing en vraag me dus af of er geen andere mogelijkheden zijn.

When did I realize I was God? Well, I was praying and suddenly I realized that I was talking to myself


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

nee, zo bedoel ik het niet... stel je hebt een textbox:
<INPUT type='textbox' name='foo'>

En die wil je dubbel hebben. Dan neem je de naam van die textbox (zo heet dat toch ook in HTML) op in de *value* van een hidden ding:

<INPUT type='hidden' name='repeat1' value = 'foo'>

En dan kun je je script laten kijken hoeveel dingen er met 'repeatXXX' beginnen en en dan de value nemen, en de waarde van `value` nog een keer outputten

[ Voor 21% gewijzigd door muba op 27-05-2003 12:29 ]

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Mja, mijn methode werkt:

Html bestand:
code:
1
2
3
4
5
6
7
8
9
10
11
<HTML><BODY>
<FORM METHOD=POST ACTION="001.pl">
Foo: <INPUT TYPE="text" NAME="foo"><BR>
Bar: <INPUT TYPE="text" NAME="bar"><BR>
<INPUT TYPE="hidden" NAME="repeat1" value="foo">
Foobar: <INPUT TYPE="text" NAME="foobar"><BR>
<INPUT type="hidden" name="repeat2" value="foo">
<INPUT type="hidden" name="repeat3" value="bar">
<INPUT TYPE="submit">
</FORM>
</BODY>


001.pl:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/perl

print "Content-type: text/html\n\n<HTML><BODY>";

if ($ENV{'REQUEST_METHOD'} eq 'POST') {

   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
   @pairs = split(/&/, lc($buffer));

   foreach $pair (@pairs) {
      ($name, $value) = split(/=/, $pair);
      $value =~ tr/+/ /;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

      $FORM{$name} = $value;
      if ($name =~ m/^repeat\d+$/) {
          print "$value: $FORM{$value}<BR>";
      }else{
          print "$name: $value<BR>";
      }
   } #end foreach
}# end if

print "</BODY></HTML>";


Output:
code:
1
2
3
4
5
6
foo: eerste tekstbox
bar: tweede tekstbox
foo: eerste tekstbox
foobar: derde tekstbox
foo: eerste tekstbox
bar: tweede tekstbox



edit:
Hallow? Ben je er nog? :)

[ Voor 21% gewijzigd door muba op 27-05-2003 12:43 ]

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • BFS
  • Registratie: Augustus 2001
  • Laatst online: 21-08 15:47

BFS

Rude awakening

Topicstarter
Sorry, ook ik heb eten nodig om een beetje te kunnen functioneren ;)


Ik zal eens gaan kijken of dit mij op weg helpt, bedankt iig voor the effort!

When did I realize I was God? Well, I was praying and suddenly I realized that I was talking to myself


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

:) hehe ok... horen we nog van je of je er wat aan hebt?

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • BFS
  • Registratie: Augustus 2001
  • Laatst online: 21-08 15:47

BFS

Rude awakening

Topicstarter
Dat lijkt me niet onredelijk ;)

Zodra ik de tijd vind het te implementeren hoor/horen jij/jullie het.


Duidelijk dat ik geen echte programeur ben (nog niet iig), ik kan gewoon met een if statement werken en op die manier dit probleem redelijk eenvoudig oplossen.

:)

[ Voor 46% gewijzigd door BFS op 27-05-2003 14:53 . Reden: Helder moment ]

When did I realize I was God? Well, I was praying and suddenly I realized that I was talking to myself

Pagina: 1