[php] dynamisch gegenereerde velden naar 2d array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Sorry voor de beetje vage titel maar anders samenvatten kan ik niet.

Wat is nu het geval

Ik heb een formulier dat dynamisch gegenereerd wordt in een lus.
Het aantal velden in het formulier kan dus verschillen.

Om niet in de war te komen met de waarden die gesubmit worden laat ik een tellertje meelopen.

PHP:
1
2
3
4
5
6
7
$i =0;

while()
{
    buildInputRow($i);
   $i++;
}


buildInputRow() ziet er ca. zo uit.
PHP:
1
2
3
4
5
6
7
function buildInputRow($i)
{
    echo
     "<input type=\"text\" name=\"naam".$i."\">\n"
    ."<input type=\"text\" name=\"blaat".$i."\">\n"
    ."<input type=\"text\" name=\"schaap".$i."\">\n";
}


De gesubmitte waarden komen er dan zo uit;
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
print_R($_POST)

/* output

Array
(
    [text0] => waarde_text0
    [blaat0] => waarde_blaat0
    [schaap0] => waarde_schaap0
    [text1] => waarde_text1
    [blaat1] => waarde_blaat1
    [schaap1] => waarde_schaap1
    [text2] => waarde_text2
    [blaat2] => waarde_blaat2
    [schaap2] => waarde_schaap2
)
*/


De lengte kan dus veranderen aan de hand van het aantal gegereerde velden in het formulier.

Wat ik eigelijk wil hebben
is
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Array
(
    [0] Array
         (
             [text] => waarde_text
             [blaat] => waarde_blaat
             [schaap] => waarde_schaap
          )
    [1] Array
         (
             [text] => waarde_text
             [blaat] => waarde_blaat
             [schaap] => waarde_schaap
          )
    [2] Array
         (
             [text] => waarde_text
             [blaat] => waarde_blaat
             [schaap] => waarde_schaap
          )
)

Op die manier is het namelijk veel makkelijker uit zoeken hoeveel rijen er zij gegenereerd.
Maar nu heb ik geen enkel idee hoe ik dat moet aanpakken, ik weet niet eens welke functies ik hier voor moet gebruiken.

Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Dan moet je gewoon met arrays werken in je forms:
code:
1
2
3
4
5
6
7
blaat: <input type="text" name="fields[0][blaat]" /><br>
test: <input type="text" name="fields[0][test]" /><br>
schaap: <input type="text" name="fields[0][schaap]" /><br><br>

blaat: <input type="text" name="fields[1][blaat]" /><br>
test: <input type="text" name="fields[1][test]" /><br>
schaap: <input type="text" name="fields[1][schaap]" /><br><br>

En aanschouw de output van een
PHP:
1
print_r ( $_GET [ 'fields' ] );
:Y)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Iets anders, bekijk de inhoud van je $_REQUEST es als je dit form submit:
PHP:
1
2
3
4
5
6
<form>
<input type='text' name='help[]'>
<input type='text' name='help[]'>
<input type='text' name='help[]'>
<input type='submit'>
</form>

* ACM spuitelf, bedankt drm :P

[ Voor 7% gewijzigd door ACM op 17-10-2003 11:14 ]


Acties:
  • 0 Henk 'm!

  • MichelVH
  • Registratie: Oktober 2001
  • Laatst online: 16-09 20:54
PHP:
1
2
3
4
5
6
7
function buildInputRow($i)
{
    echo
     "<input type=\"text\" name=\"naam[".$i."]\">\n"
    ."<input type=\"text\" name=\"blaat[".$i."]\">\n"
    ."<input type=\"text\" name=\"schaap[".$i."]\">\n";
}

Je krijgt nu een arrays terug van naam, blaat en schaap dus je kunt met count() kijken hoeveel items je hebt :)
edit:
iets met een spuit en elf :x

[ Voor 29% gewijzigd door MichelVH op 17-10-2003 11:15 ]

Don't be afraid of the dark, be afraid of what it hides


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Was het niet dat je dan als input name bv. name="blaat[1]" moet hebben? Ik denk dat het dan wel werkt.

Edit: euh, ja geen dank... gezellig spuiten met z'n allen!

[ Voor 35% gewijzigd door Michali op 17-10-2003 11:17 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

... en spuit 12 en 13 zijn ook van de partij :D

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Snelle service vandaag :D

Nog even voor de correctheid:
is het dan
PHP:
1
2
3
4
5
echo
 "<input .....  name=\"field[".$i."][naam]\"...>";
// of
echo
 "<input .....  name=\"field[".$i."]['naam']\"...>";  //Met quotes dus

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Probeer het eens, zou ik zeggen :Y)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1