[PHP] Dynamisch formulier in database

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
Ik heb een formulier wat zich telkens kan uitbreiden. Dit komt omdat de tabel geen vaste rows of colommen heeft maar deze uit de database haalt. Nu staat in elk veld een nummer in een tekstveld (van een formulier), afhankelijk van de rij en colom dat hij zit.
Het is dus de bedoeling dat de velden allemaal gesubmit worden met de waarde die ze hebben, en dat deze in de database komen.
Hier is een screenshot van hoe het nu is, misschien dat het dan iets duidelijker is: Afbeeldingslocatie: http://www.pleepapier.nl/misc.php?onderdeel=download&id=89

Het tekstveld krijgt dit mee: name=\"field_$fieldnumber\"
Hier krijgen we dus field_1, field_2, field_3 etc. mee. Dit gaat prima.
Alleen als ik deze wil submitten moet ik ze dus ook weer eruit kunnen halen, afhankelijk van het aantal vakjes dat er zijn. Het aantal vakjes worden al geteld en worden gebruikt in een loop. Alleen krijg ik het niet voor elkaar het field_$fieldnumber eruit te halen.

PHP:
1
2
3
4
5
6
for($n = 1; $n < $total; $n++) { 
    echo "$field_$n";
    echo " - ";
    echo "$n";
    echo "<br>";        
}


Het gaat om "$field_$n". Hoe krijg ik dit goed? Ik had de hoop dat PHP het samen zou voegen.


}

[ Voor 7% gewijzigd door Elect op 17-03-2004 21:02 ]

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

  • Hoppie
  • Registratie: Februari 2001
  • Niet online
Kun je de tekstvelden niet een array meegeven?
Dus:
PHP:
1
name="field[$fieldnumber]"

Na het posten heeft PHP field direct als array beschikbaar.

Acties:
  • 0 Henk 'm!

  • user643
  • Registratie: Februari 2002
  • Laatst online: 03-09 08:18

user643

Sweet Surrender

zou je niet alles in 1 echo kunnen zetten

PHP:
4
5
6
7
8
<?
for($n = 1; $n < $total; $n++) { 
    echo $field_$n." - ".$n."<br>";   
}
?> 


je zet hier $field_$n neer, moet dit niet field_$n zijn

[ Voor 46% gewijzigd door user643 op 17-03-2004 21:27 ]


Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
user643 schreef op 17 maart 2004 @ 21:17:
zou je niet alles in 1 echo kunnen zetten

PHP:
4
5
6
7
8
<?
for($n = 1; $n < $total; $n++) { 
    echo $field_$n." - ".$n."<br>";   
}
?> 


je zet hier $field_$n neer, moet dit niet field_$n zijn
Het kan idd in een echo, maar in het begin niet makkelijk vind ik zelf. Maar dat is persoonlijk :)

Het leek me logischer dat het $field_$n moest zijn, omdat het uiteindelijk een waarde is welke uit een formulier komt. En zonder die $ ervoor kan ik hem niet opvragen.

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

  • Hoppie
  • Registratie: Februari 2001
  • Niet online
user643 schreef op 17 maart 2004 @ 21:17:
zou je niet alles in 1 echo kunnen zetten

PHP:
4
5
6
7
8
<?
for($n = 1; $n < $total; $n++) { 
    echo $field_$n." - ".$n."<br>";   
}
?> 


je zet hier $field_$n neer, moet dit niet field_$n zijn
Tuurlijk kan dat, maar dat lost niet z'n probleem op....
HTML:
1
2
3
4
<input type="text" name="veld[1]"><!-- veld bevat: "veld1"-->
<input type="text" name="veld[2]"><!-- veld bevat: "veld2"-->
<input type="text" name="veld[3]"><!-- veld bevat: "veld3"-->
<input type="text" name="veld[4]"><!-- veld bevat: "veld4"-->

PHP:
1
2
3
4
5
$post_data = $_POST[$veld])
// $post_data[1] =  "veld1"
// $post_data[2] =  "veld2"
// $post_data[3] =  "veld3"
// $post_data[4] =  "veld4"

Ik hoop dat dit het geheel voldoende verduidelijkt.

Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
Hoppie, het zou idd wel kunnen met arrays, maar dan moet ik eerst gaan uitzoeken hoe ze precies werken en hoe ik ze in dit script krijg.

Ik hoopte eigenlijk dat het maar een klein probleempje zou zijn. Is er geen mogelijkheid tot het samenvoegen van de tekst $field_ en de waarde $n? Zodat hij telkens wel de juiste field kan pakken.

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

  • cavey
  • Registratie: Augustus 2000
  • Laatst online: 29-05 01:29
ehm

sure

$field . "_" . $n ....

lijk me beter te concateneren dan $field_$n ...

Acties:
  • 0 Henk 'm!

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

Volgens mij vergeet je de accolades, probeer dit eens:

PHP:
1
${"field_".$n}

De volgende code heb ik ff getest en het werkt:
PHP:
1
2
3
4
$field_1="het werkt";
$n=1;

echo ${"field_".$n};


btw: hier heb ik de info vandaan: http://nl.php.net/manual/en/language.variables.variable.php ;)

[ Voor 11% gewijzigd door [ash] op 20-03-2004 16:52 ]


Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
Yes thnx, dit was hem :)

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Maar evengoed: je moet echt / kan beter met array's gaan werken, lijkt me, als je dus niet weet hoe lang je form is, of je moet een hidden aanmaken met daarin hoe veel input fields je hebt: duidelijk minder mooi.
Array > en dan dus while / for loopen over the $_POST['field'] array.
PHP:
1
2
3
4
5
if(count($_POST['field']) > 0) {
   foreach($_POST['field'] AS $index => $value) {
         // dostuff
   }
}

[ Voor 32% gewijzigd door Cavorka op 20-03-2004 11:15 ]

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


Acties:
  • 0 Henk 'm!

  • ikke007
  • Registratie: Juni 2001
  • Laatst online: 18-09 14:10
klein dingetje wat ik altijd reuze handig vind om te testen hoe mijn forms doorkomen:

PHP:
1
2
3
4
5
IF($_SERVER['REQUEST_METHOD'] == 'POST')  
  foreach($POST as $key => $value){
    PRINT("$key => $value<BR>");
  }
}


krijg je gewoon een lijstje van alle POST vars met hun waarde (indien een POST var een array is geeft hij dat ook aan. succes!

[ Voor 32% gewijzigd door ikke007 op 20-03-2004 15:35 . Reden: stukje tag vergeten :| ]

Lets remove all security labels and let the problem of stupidity solve itself


Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

@iKKe007:
$_POST :) en dit werkt dus niet als je array's gaat doorsturen.

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Cavorka schreef op 20 maart 2004 @ 15:45:@iKKe007:$_POST :) en dit werkt dus niet als je array's gaat doorsturen.
Jawel hoor, dan staat er array, net als bij: echo array();

Acties:
  • 0 Henk 'm!

Verwijderd

@iKKe007
je kan toch net zo makkelijk dit doen op te zien wat er allemaal in $_POST staat:
PHP:
1
2
3
echo "<pre>";
print_r( $_POST );
echo "</pre>";

[ Voor 15% gewijzigd door Verwijderd op 20-03-2004 16:03 ]


Acties:
  • 0 Henk 'm!

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

oeps, wilde editten ipv quoten.... had een typo gezien :X

[ Voor 93% gewijzigd door [ash] op 20-03-2004 16:52 ]

Pagina: 1