Een array van een array maken
Ik ben eindelijk klaar met me formulier.
Het werkt fantastisch, en ook mede dankzij jullie hulp.
Echter ik heb nog een wens en ik weet niet of dat haalbaar is.
Ik heb 3 delen. Hoofdgegevens, de zaterdag en de zondag.
Nu wil ik wanneer de gegevens voor zaterdag ingevuld zijn $_SESSION['input']['blabla'] (zijn er ongeveer 15 van) in een aparte array stoppen, die ik later kan uitlezen.
Voor de zaterdag precies hetzelfde, ze worden opgeslagen in $_SESSION['input']['blabla'] (zijn er 20 van ofzo) Zondag precies hetzelfde.
Nu kan ik dus aparte sessions aanmaken ['input'] veranderen in wat anders, maar is er ook een andere manier?
Groet,
Roel
Kun je eens proberen (en leren) om je probleem duidelijker te omschrijven? Voor jou is het vast heel duidelijk wat je bedoelt, maar voor mij niet. Dingen als $_SESSION['input']['blabla'] werken verwarrend. Zeg gewoon wat de echte waardes zijn, want zo snap ik niet wat je wil.
Ik wil de opbouw zelf bepalen van de array namelijk.
Roel H op 24/01/2014 06:24:02:
Nou ik probeer het zo duidelijk mogelijk. Maar als ik alle waardes hier neer moet zetten, ben ik wel f bezig. Maar misschien de vraag anders stellen. Ik wil een array uitlezen, tot een bepaalde waarde (tot de 10e bijvoorbeeld)
Ik wil de opbouw zelf bepalen van de array namelijk.
Ik wil de opbouw zelf bepalen van de array namelijk.
Je kunt een Array op allerlei manier uitlezen. Je kunt het volledig uitlezen met foreach() of maar 1 element uitlezen door de 'key' erachter te zetten. Een array begint standaard met key 0 dus als je het eerste element wilt doe je $array[0]; Dus als je de 10e wil doe je $array[9];
De opbouw van een Array kun je zelf bepalen door zelf de 'key' mee te geven.
Verder is het denk ik handig om wat te code te laten zien want je stelt een vrije brede, en niet heel erg duidelijke, vraag.
Geef dan even een fictief voorbeeld met een paar waardes. Het gaat ook niet om de waardes zelf, maar om hoe de array/arrays? is/zijn opgebouwd. Je omschrijving is niet heel duidelijk. En als je van een array de eerste 10 waardes in een andere array wilt stoppen, waarom stop je die 10 waardes dat niet gelijk in een aparte array? Het klinkt nu alsof je 1 array hebt met daarin verschillende dingen en die dingen wil je er nu weer uit "filteren" door er aparte arrays van te maken. Dat lijkt me niet echt handig, maar goed... je verhaal is niet echt duidelijk dus misschien begrijp ik je wel helemaal verkeerd.
Ik heb een sessie $_SESSION['input']['waarde']
De waardes zijn o.a.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
'naam' => 'text',
'geboortedatum' => 'text',
'woonplaats' => 'text',
'mail' => 'text',
'telefoonnummer' => 'text',
'liddah' => 'text',
'naampaard' => 'text',
'geslachtpaard' => 'select',
'naamvaderpaard' => 'text',
'stokmaat' => 'text',
'naampaard2' => 'text',
'geslachtpaard2' => 'select',
'naamvaderpaard2' => 'text',
'stokmaat2' => 'text',
'geboortedatum' => 'text',
'woonplaats' => 'text',
'mail' => 'text',
'telefoonnummer' => 'text',
'liddah' => 'text',
'naampaard' => 'text',
'geslachtpaard' => 'select',
'naamvaderpaard' => 'text',
'stokmaat' => 'text',
'naampaard2' => 'text',
'geslachtpaard2' => 'select',
'naamvaderpaard2' => 'text',
'stokmaat2' => 'text',
Nu wil ik zorgen dat het in de mail komt, en dat doe ik zo:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$content[] = '<ul>';
foreach($_SESSION['input'] as $key => $value)
{
if(!empty($value)){
$content[] = '<li>'.$key.': '.$value.'</li>';
}
}
$content[] = '</ul>';
foreach($_SESSION['input'] as $key => $value)
{
if(!empty($value)){
$content[] = '<li>'.$key.': '.$value.'</li>';
}
}
$content[] = '</ul>';
Nu geeft deze code alle waarde achtereen weer, dat werkt. Ik wil het echter opdelen in secties. Het hoofdgedeelte (bijvoorbeeld de eerste 4 waardes), daarna sectie 1 (waarde 5 tot 9) en sectie 2 (waarde 10 tot 14)
Hoe kan ik die met een array doen?
Hopelijk is de vraag helderder zo en het spijt me voor me belabberde vraagstelling in me OP.
Groet,
Roel
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$content[] = '<ul>';
if(isset($_SESSION['input']['waarde']['naam'])){
$content[] = '<li>Naam: '.$_SESSION['input']['waarde']['naam'].'</li>';
}
if(isset($_SESSION['input']['waarde']['geboortedatum'])){
$content[] = '<li>Geboortedatum: '.$_SESSION['input']['waarde']['geboortedatum'].'</li>';
}
$content[] = '</ul>';
?>
$content[] = '<ul>';
if(isset($_SESSION['input']['waarde']['naam'])){
$content[] = '<li>Naam: '.$_SESSION['input']['waarde']['naam'].'</li>';
}
if(isset($_SESSION['input']['waarde']['geboortedatum'])){
$content[] = '<li>Geboortedatum: '.$_SESSION['input']['waarde']['geboortedatum'].'</li>';
}
$content[] = '</ul>';
?>
Dan bepaal je zelf de volgorde en of er eventueel nog een ruimte tussen moet komen etc.
Toevoeging op 24/01/2014 13:58:51:
Wat ook kan is de Array van te voren al op delen in secties, dan kun je het wel met een foreach doen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
array('Persoonsgegevens',
Array(
'naam' => 'text',
'geboortedatum' => 'text',
'woonplaats' => 'text',
'mail' => 'text',
'telefoonnummer' => 'text'
),
Array('Paardgegevens',
Array(
'liddah' => 'text',
'naampaard' => 'text',
'geslachtpaard' => 'select',
'naamvaderpaard' => 'text',
'stokmaat' => 'text',
'naampaard2' => 'text',
'geslachtpaard2' => 'select',
'naamvaderpaard2' => 'text',
'stokmaat2' => 'text'
)
);
?>
array('Persoonsgegevens',
Array(
'naam' => 'text',
'geboortedatum' => 'text',
'woonplaats' => 'text',
'mail' => 'text',
'telefoonnummer' => 'text'
),
Array('Paardgegevens',
Array(
'liddah' => 'text',
'naampaard' => 'text',
'geslachtpaard' => 'select',
'naamvaderpaard' => 'text',
'stokmaat' => 'text',
'naampaard2' => 'text',
'geslachtpaard2' => 'select',
'naamvaderpaard2' => 'text',
'stokmaat2' => 'text'
)
);
?>
Nog een optie is controleren op een bepaalde waarde
Roel, volgens mij klopt je telling niet helemaal en is sectie 1 de eerste 5 waardes en niet de eerste 4?
Probeer dit eens. Even een voorbeeldje, als het werkt moet je zelf maar even de juiste waardes erin zetten...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Gewijzigd op 24/01/2014 14:16:53 door Ozzie PHP
Niet alle velden zijn verplicht, dus wanneer ik bij sectie 2 een waarde neer zet, kan het zijn dat die niet gepakt wordt, dus dan werkt het al niet meer.
Daarbij is $nettevelden nodig, om de titel netjes weer te geven.
Ik heb gekeken bij array_slice (http://nl1.php.net/array_slice), werkt wel, als ik hem los ergens test. Wil ik heb in dit script plakken, weet ik niet waar.
"wanneer ik bij sectie 2 een waarde neer zet, kan het zijn dat die niet gepakt wordt"
Waarom zou een waarde die je neerzet niet gepakt worden? Ik snap niet wat je bedoelt.
>> Daarbij is $nettevelden nodig, om de titel netjes weer te geven.
Wat je hiermee wilt zeggen weet ik niet.
Super bedankt voor jullie hulp en ik zal eraan werken dat ik mn vraag beter ga formuleren. Maar soms is iets uitleggen zo verdomd moeilijk, zodat de ander het snapt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
$titles = array('naam' => 'Basisgegegevns', 'aantalproevendressuuronderzadel' => 'Zaterdag', 'ritaangespannenlunch' => 'Zondag');
foreach($_SESSION['input'] as $key => $value)
{
if (isset($titles[$key])) {
$content[] = '<strong>'.$titles[$key].'</strong>';
}
if(!empty($value)){
$content[] = '<li>'.$nettevelden[$key].': '.$value.'</li>';
}
}
foreach($content as $key)
echo $key;
foreach($_SESSION['input'] as $key => $value)
{
if (isset($titles[$key])) {
$content[] = '<strong>'.$titles[$key].'</strong>';
}
if(!empty($value)){
$content[] = '<li>'.$nettevelden[$key].': '.$value.'</li>';
}
}
foreach($content as $key)
echo $key;
Gewijzigd op 24/01/2014 15:08:49 door Roel H