Multi-level Arrays ?
Het volgende probeel. Niet zozeer een probleem met code, alswel met 'denken'. Wat ik heb is het volgende. Een lijst met dagen, dmv een for-loop. En bij iedere dag een aantal personen. Bij die personen kan ik (niet verplicht) een starttijd (bestaande uit een uur en minuten, in aparte velden) en een eindtijd (idem) invullen.
Nu wil ik die velden na het submitten van het formulier doorlopen. Maw, kijken of er bij pietje op een bepaalde dag iets is ingevuld, en indien ja, dan doe ik daar weer allerlei andere dingen mee (voornamelijk in een database stoppen).
Nu heb ik al wat dingen geprobeerd met array's (dus, wat ik normaal doe : <input name="naam[]"> etc.). Maar, in dit geval krijg ik dat niet voor elkaar. Logischerwijs zou het iets moeten zijn als 'input name="start[][]" waarbij de eerste [] dan voor de dag staat, en de tweede [] voor de persoon.
Ik kom er even niet uit, heeft iemand een idee ?
Gr,
André
wil je uit een aantal input velden een array maken?
dan doe je toch gewoon dit:
Code (php)
1
2
3
4
5
2
3
4
5
<?
$dag = date('l');
$array[$dag]['naam'] = $_POST['naam'];
# of iets wat daar op lijkt
?>
$dag = date('l');
$array[$dag]['naam'] = $_POST['naam'];
# of iets wat daar op lijkt
?>
Kan je iets duidelijker wat je probeert te doen te omschrijven (ik kom er nog niet helemaal uit wat je plan is met multilevel arrays, en misschien kan ik je een andere weg naar rome uitleggen, of op zn minst waarom je deze weg wilt bewandelen)
Het is een soort van rooster-schema voor een bedrijf. Op een formulier vul ik twee datums in. In het script wordt gechecked welke van de mensen en middelen beschikbaar zijn in die periode.
De volgende pagina geeft een lijst met de dagen in die periode, dus bijvoorbeeld :
1 maart
2 maart
3 maart
Bij iedere dag worden de namen gegeven van de mensen/middelen die beschikbaar zijn, en per mens/middel kun je een starttijd en een eindtijd ingeven. Bijvoorbeeld zoiets dus, voor 1 maart :
1 maart Pietje start : eind :
Jantje start : eind :
Middel start : eind :
Wat er dan dus verder moet gebeuren, is het bekijken van óf er bij een mens/middel een starttijd is opgegeven per dag. Indien ja, dan moet dat in een database worden opgeslagen (dat lukt wel), en anders checked ie gewoon de volgende persoon.
Dus, logischerwijs zou het dan zoiets moeten worden ?
<input name="starttijd[][]"
en dan in het script een loopje die checkt :
if isset ($starttijd[$dag][$medewerker]) ?
Het is een soort van rooster-schema voor een bedrijf. Op een formulier vul ik twee datums in. In het script wordt gechecked welke van de mensen en middelen beschikbaar zijn in die periode.
De volgende pagina geeft een lijst met de dagen in die periode, dus bijvoorbeeld :
1 maart
2 maart
3 maart
Bij iedere dag worden de namen gegeven van de mensen/middelen die beschikbaar zijn, en per mens/middel kun je een starttijd en een eindtijd ingeven. Bijvoorbeeld zoiets dus, voor 1 maart :
1 maart Pietje start : eind :
Jantje start : eind :
Middel start : eind :
Wat er dan dus verder moet gebeuren, is het bekijken van óf er bij een mens/middel een starttijd is opgegeven per dag. Indien ja, dan moet dat in een database worden opgeslagen (dat lukt wel), en anders checked ie gewoon de volgende persoon.
Dus, logischerwijs zou het dan zoiets moeten worden ?
<input name="starttijd[][]"
en dan in het script een loopje die checkt :
if isset ($starttijd[$dag][$medewerker]) ?
Gebruik je MySQL?
Jep
<input name="starttijd[][]"> lijkt me niet werken,
<tr><td>1 Maart</td><td>Medewerker met het id 0 <input name="startijd[0301][03]"></td></tr>
(03 is hierbij dan een ID van de medewerker)
Vervolgens kan je dit doorlopen met foreach.
Grtz,
Arend
Ja, zoiets had ik al bedacht....maar dat werkte niet. Zal het nog eens proberen, maar dan met en for loopje in het formulier, om die name= dingen automatisch aan te maken. Ik piel even verder, dank in ieder geval voor het meedenken ! Ik zit op de goeie weg, zal wel ergens een domme tik/denk-fout gemaakt hebben....