Form array opslaan

Pagina: 1
Acties:

  • lemonade
  • Registratie: Mei 2005
  • Laatst online: 17-04 15:16
Ik ben al een hele tijd naar een goed werkende oplossing aan't zoeken voor het volgende probleem, hoop dat iemand me hier verder kan helpen:

Uit 2 database tabellen bouw ik een 2D form op, waar elk formfield en combinatie is van de 2 ID's van de gebruikte velden uit de database. Elk veld is dus in dat form een unieke combinatie en variabel.
Voorbeeld:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
   | 1 | 2 | 3 | 4 | 5 |
-------------------------
1   |   |   |   |   |   |
-------------------------
2   |   |   |   |   |   |
-------------------------
3   |   |   |   |22 |   |
-------------------------
4   |   |   |   |   |   |
-------------------------
5   |   | 3 |   |   |   |
-------------------------

De waarde 22 is dus een combinatie van de id's 4 en 3, en 3 een combinatie van 2 en 5.

De waardes uit dit form moeten weer opgeslagen worden naar een database waar per formfield een rij aangemaakt word met daarin de 2 id's en de waarde van het formfield.

Hoe krijg ik nu uit de post van het form bij elke waarde de juiste ID's?

Kan bijvoorbeeld in een hidden field een combinatie van de ID's maken zoals "00040003" waarin ik de ID's koppel maar dit is niet de bedoelling.

Heeft iemand hier een mooie oplossing voor?

☀️ PVOutput 15125 Wp op SE15k | 🔋 Cupra Born Copper Edition One | 🔋 Tesla MY ‘26 AWD


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15-04 22:58

Janoz

Moderator Devschuur®

!litemod

Een hidden field lijkt mij sowieso overbodig. Je kunt immers gewoon het tekstveld een naam geven. De naamgeving opbouwen uit een combinatie van ID's lijkt mij verder niet zo vreemd. Ik zou het alleen niet 'positie' specifiek doen. In jouw voorbeeld zou de ID nooit verder mogen gaan dan 9999. Je zou in je formnaam de bijde ID's kunnen scheiden met bv een _.

Ik weet verder niet welke serverside omgeving je gebruikt. Php heeft bijvoorbeeld de mogelijkheid om met [] automatisch een associatieve array te genereren. Misschien werkt dit ook 2 dimensionaal.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • lemonade
  • Registratie: Mei 2005
  • Laatst online: 17-04 15:16
Was even mijn omgeving vergeten te vermelden, mijn excuses, dit is php.

Dat van die 'vaste' naam wat je zegt klopt idd, het was ook maar een voorbeeld.
Het is een optie die ik gebruik als het niet anders gaat.

Een associatief array ken ik, maar weet niet hoe ik dit moet toepassen in deze vorm?

Omdat het formulier variabel is weet ik niet van te voren hoeveel waardes ik terug krijg, daarom is een associatief array misschien handig?

[ Voor 21% gewijzigd door lemonade op 16-01-2006 13:42 ]

☀️ PVOutput 15125 Wp op SE15k | 🔋 Cupra Born Copper Edition One | 🔋 Tesla MY ‘26 AWD


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 14-04 16:14
Je kunt het input-veldje waar de 22 instaat, toch gewoon "4_3" noemen, en het invulveldje waar nu 3 instaat "2_5" ?

In PHP loop je door je post vars heen, split je de key op de underscore, en je hebt de 2 ID's en de waarde erin;

PHP:
1
2
3
4
5
6
7
8
9
<?
foreach($_POST as $name => $value) {
  list($ID1, $ID2) = explode("_", $name);
  // Horizontale ID in $ID1, verticale in $ID2, en de waarde in $value. Bijv
 // $ID1 = 4
 // $ID2 = 3
 // $value = 22
}
?>


In die loop kun je ze in je database gooien, of wat je er ook mee wilt :?

Om het formulier op te bouwen gooi je de waardes van de X-as in een Array, zodat je bij iedere kolomnaam weet waaruit je de veldnamen moet opbouwen.

[ Voor 17% gewijzigd door frickY op 16-01-2006 13:47 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-04 15:11

Bosmonster

*zucht*

Of als je dan toch PHP gebruikt:

PHP:
1
2
3
4
5
6
7
8
9
<input type="text" name="val[x][y]">

<?php
foreach ($_POST['val'] as $x => $ycoll) {
   foreach ($ycoll as $y => $value) {
      // doe iets met $x, $y en $value
   }
}
?>

  • lemonade
  • Registratie: Mei 2005
  • Laatst online: 17-04 15:16
Bosmonster schreef op maandag 16 januari 2006 @ 13:51:
Of als je dan toch PHP gebruikt:

PHP:
1
2
3
4
5
6
7
8
9
<input type="text" name="val[x][y]">

<?php
foreach ($_POST['val'] as $x => $ycoll) {
   foreach ($ycoll as $y => $value) {
      // doe iets met $x, $y en $value
   }
}
?>
Dit werkt inderdaad prima, thx!
Ik was iets te moeilijk aan het denken geloof ik..

☀️ PVOutput 15125 Wp op SE15k | 🔋 Cupra Born Copper Edition One | 🔋 Tesla MY ‘26 AWD

Pagina: 1