[php]Array opbouwen met 3 elementen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 18:12

SinergyX

____(>^^(>0o)>____

Topicstarter
Ik wilde een klein nieuw project opzetten op mijn werk, waarbij dit de huidige situatie is:
Grp A Grp B Grp C
A1_1 B1_1 C1_1
A1_2 B1_2 C1_2
A1_3 B1_3 C1_3

A2_1 B2_1 C2_1
A2_2 B2_2 C2_2
A2_3 B2_3 C2_3

Dit alles staat in een vorm van bestelformulier, als basis kies je een groep, waarna je daarna een sub produkt X1 en X2 kiest. Via javascript heb ik de pulldown menu’s al dynamisch gemaakt, dat deze automatisch aanpassen als je een andere groep kiest (de lijst opmaak is nu nog statisch, maar wordt een klusje voor later).
Nu wilde ik e.e.a. makkelijker maken na submit van het formulier, door middel van bv de functie $producten[1,3,2] (dus waarde GrpA, A1_3,A2_2) te creeren, alles op basis van cijfers kan opslaan en via die array de namen te laten zien. De subgroepen hebben steeds dezelfde indexnummers (1 t/m 3), omdat deze toch op basis van de hoofdgroep worden geselecteerd. Een combinatie van verschillende subgroepen is niet mogelijk. zo zou $producten[3,1,2] GrpC, C1_1, C2_2 geven

Nu wilde ik deze tabel in een array zetten. Via php.net ben ik al wat te weten gekomen, dat je enkel 2 items kan plaatsen in een array (1 = A1_1, 2 = A1_2 etc). Via google kwam ik op een voorbeeld waar ze 3 items in een array plaatsen.
code:
1
2
3
4
5
6
$produkten = array (
    array ("grp A","A1_1","A2_1"),
    array ("grp A","A1_2","A2_2"),
    etc tot en met
    array ("grp C","C1_3","C2_3"),
);

Dit ging dus niet werken, gezien groep B geen index 2 meer, ook de subprodukten worden doorgenummerd. Wat ik denk ik dus nodig hebt is een matrix tabel (heet dat zo?), echter zoek ik op array/matrix/php kom ik steeds op een php module genaamd matrix.php, welke ik niet kan gebruiken omdat ik geen root acces tot de server hebt.
Of is het toch beter alles in MySql te zetten, met elke groep een eigen tabel?

[ Voor 23% gewijzigd door SinergyX op 06-07-2005 10:22 . Reden: code deed het niet meer, nog niet.. toch wel nu? ]

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 19-09 21:26

DataGhost

iPL dev

je begrijpt dat je "aanhalingstekens" nodig hebt he 8)7

Acties:
  • 0 Henk 'm!

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Ik snap niet zo goed hoe die tabel in elkaar steekt.

Weet je overigens dat je ook een string kan gebruiken als key voor je array?

Naast dat je kunt zeggen:

code:
1
2
$myArray = array();
$myArray[1] = "Grp A";


Kun je dus ook gebruiken:

code:
1
2
$myArray = array();
$myArray['Grp A'] = array('A1_1', 'A1_2', etc.)


Je kunt vervolgens door je array(s) lopen met een simpele foreach() loop:

code:
1
2
3
4
5
6
7
8
9
foreach ( $myArray as $groep_omschrijving => $producten ) {

  foreach ( $producten as $i => $product ) {

    echo "productnummer {$i} = {$product}";

  } // foreach()

} // foreach()


Welllicht dat je daar iets aan hebt?

Acties:
  • 0 Henk 'm!

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 18:12

SinergyX

____(>^^(>0o)>____

Topicstarter
met een concreet voorbeeld voor de tabel (genomen voorbeelden zijn illustratief):
Voor lease-auto's hebben we de keuze uit 3 modellen, Mercedes SLK, BMW 5, Audi A3.
De eerste subgroep is de motor soort, varierend van simpele benzine tot krachtige diesels. De tweede subgroep is de kleur, hier hebben we 3 kleuren mogelijk.

code:
1
2
$myArray = array();
$myArray['Grp A'] = array('A1_1', 'A1_2', etc.)


Zou ik hiermee nog een extra subarray kunnen maken? zoals:
code:
1
2
3
4
5
6
7
$myArray = array();
$myArray['Grp A'] = array();
$myArray['Grp A']['Motor'] = array('1.2 benz','1.5 benz', '1.8 diesel');
$myArray['Grp A']['Kleur'] = array('blauw','geel', 'groen');
$myArray['Grp B'] = array();
$myArray['Grp B']['Motor'] = array('2.2 benz','2.8 benz', '3.0 diesel');
$myArray['Grp B']['Kleur'] = array('zwart,'wit', 'zilver');

Mocht dat kunnen, kan ik dan via $myArray[0][1][1] bijvoorbeeld de Grp A, kleur geel opvragen?

(mijn excuses voor wat brakkige uitleg, met zware verkoudheid wil mijn hoofd niet 100% meewerken.)

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Sinergy schreef op woensdag 06 juli 2005 @ 11:42:
met een concreet voorbeeld voor de tabel (genomen voorbeelden zijn illustratief):
Voor lease-auto's hebben we de keuze uit 3 modellen, Mercedes SLK, BMW 5, Audi A3.
De eerste subgroep is de motor soort, varierend van simpele benzine tot krachtige diesels. De tweede subgroep is de kleur, hier hebben we 3 kleuren mogelijk.

code:
1
2
$myArray = array();
$myArray['Grp A'] = array('A1_1', 'A1_2', etc.)


Zou ik hiermee nog een extra subarray kunnen maken? zoals:
code:
1
2
3
4
5
6
7
$myArray = array();
$myArray['Grp A'] = array();
$myArray['Grp A']['Motor'] = array('1.2 benz','1.5 benz', '1.8 diesel');
$myArray['Grp A']['Kleur'] = array('blauw','geel', 'groen');
$myArray['Grp B'] = array();
$myArray['Grp B']['Motor'] = array('2.2 benz','2.8 benz', '3.0 diesel');
$myArray['Grp B']['Kleur'] = array('zwart,'wit', 'zilver');

Mocht dat kunnen, kan ik dan via $myArray[0][1][1] bijvoorbeeld de Grp A, kleur geel opvragen?

(mijn excuses voor wat brakkige uitleg, met zware verkoudheid wil mijn hoofd niet 100% meewerken.)
Probeer het eens uit :>

(het kan)

Acties:
  • 0 Henk 'm!

  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 26-08 09:08

Kippenijzer

McFallafel, nu met paardevlees

Dan kan inderdaad, maar ik zie niet in waarom je, om vage dubbele toewijzigen, waardoor index nummering kan veranderen niet gewoon ['Grp A']['Kleur'][0] gebruikt dan

Acties:
  • 0 Henk 'm!

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Precies, dat was inderdaad mijn punt ... als je gewoon voor alle array "keys" strings gebruikt in plaats van integers (zoals hieronder dus geillustreerd), dan heb je de cijfers niet meer nodig.

Bovendien kun je in je JavaScript natuurlijk OOK strings gebruiken, bijvoorbeeld in de <OPTION> tags van je <SELECT> dozen.

Bijvoorbeeld:
code:
1
2
3
4
<select name='GroupSelect'>
<option value='Group_A'>Mercedes SLK</option>
<option value='Group_B'>Een andere praaaachtige wagen</option>
</select>


En dan kun je ook nog ... om het helemaal aardig te maken ... al in HTML je PHP array voorbereiden, namelijk zo:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<select name='myArray["group"]'>
<option value="grp A">Group A</option>
 etc....
</select>

<select name='myArray["motor_inhoud"]'>
<option value="2.0">2.0</option>
 etc....
</select>

<select name='myArray["kleur"]'>
<option value="Groen">Groen</option>
 etc....
</select>


Je krijgt dan in PHP een keurige array die er ongeveer zo uitziet:
code:
1
2
3
4
5
$myArray (
   "group" => "grp A",
   "motor_inhoud" => "2.0",
   "kleur" => "Groen"
)


Da's vrij makkelijk te verwerken.

Handig of handig? :P

[ Voor 46% gewijzigd door gvanh op 06-07-2005 16:03 . Reden: Tweede deel toegevoegd. ]


Acties:
  • 0 Henk 'm!

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 18:12

SinergyX

____(>^^(>0o)>____

Topicstarter
een kleine toelichting waarom ik de waarden op wil slaan in de mysql als cijfers; er is een kans dat dit script ook toegepast gaat worden bij onze zuster/dochter bedrijven. Die hebben dezelfde lease-system, alleen met wat andere auto's. In principe hoef ik dan alleen de array aan te passen en blijft de mysql altijd hetzelfde (pers_id|auto_id|motor_id|kleur_id). Aparte manier, ik weet het :P

mijn keuze is nu gevallen op een statische sub-array stuk te maken (zoals ik vroeg in mijn 2de post) en deze in een apart tekst file te zetten, zodat deze ook door andere collega's makkelijk kan worden aangepast qua auto's, motoren of kleuren.
Door het idee van gvanh ga ik het huidige javascript stuk vervangen door een php stuk, die het formulier deels submit en de 2 selectboxen update op basis van de gekozen auto. (je zit dit veel bij die land/provincie forms, die zich updaten nadat je een land hebt gekozen).

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Sinergy schreef op woensdag 06 juli 2005 @ 16:43:
een kleine toelichting waarom ik de waarden op wil slaan in de mysql als cijfers; er is een kans dat dit script ook toegepast gaat worden bij onze zuster/dochter bedrijven. Die hebben dezelfde lease-system, alleen met wat andere auto's. In principe hoef ik dan alleen de array aan te passen en blijft de mysql altijd hetzelfde (pers_id|auto_id|motor_id|kleur_id). Aparte manier, ik weet het :P
Databasenormalisatie?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1