Voor een banner/slider wissel ik de inhoud met if(tijdstip) elseif(tijdstip) code zodat de juiste afbeeldingen, links en achtergrond worden geladen.
Het aantal sliders is variabel, de 3 links staan apart.

Voorbeeld code: (met 2 wissel momenten)

if($epochTime > 1427641200) { // zo 29 maart 17:00 uur

// slider images
img1
img2
img3
img4
img5
img6

// seperate links
link1
link2
link3

// background image
imgA

} elseif($epochTime > 1427040000) {  // zo 22 maart 17:00 uur

// slider images
img3
img4
img7
img8

// seperate links
link2
link4
link5

// background image
imgB

}

Nu wil ik enkele weken vooruit coderen met de juiste img, links en bg voor dat moment en copy/paste dezelfde if() code steeds met de juiste aanpassingen.
Dat wil ik graag makkelijker maken door foreach te gaan gebruiken.
Hoe codeer je dat nu?
Hoe formuleer je een array zodat het [tijdstip][afbeeldingen][links][background] die bij elkaar horen verwerkt kan worden met foreach?

Alvast bedankt voor het meedenken!
Het handigste lijkt me om er eerst een goed databasemodel voor te maken.
Daarna trek je alleen de juiste records uit de database met de query die je hiervoor nodig hebt.
Vervolgens is pas de foreach aan de beurt dat dan overigens kinderspel is

Je zou er bijvoorbeeld (om een idee te geven) voor kunnen kiezen om een tabel met de naam 'afbeeldingen' te maken waarin je alle mogelijke afbeeldingen opslaat. Ditzelfde kun je doen voor links en backgrounds. Vervolgens zou je dan een tabel met een naam als bijvoorbeeld 'banners' kunnen maken waarin je alleen de starttijd inzet en dan een een verwijzing naar een record in de andere tabellen. Zoiets dus:

-id
-starttime // datetime wanneer begonnen wordt met het laten zien van deze banner
-image_id // verwijzing naar de juiste afbeelding
-link_id // verwijzing naar de juiste link
-background_id // verwijzing naar de juiste achtergrond

Spreekt dit je een beetje aan? dan kunnen we er wat dieper op in gaan.

Bedankt voor je reactie.
Ik ben bekend met jouw idee en techniek maar dacht aan een simpele oplossing middels array's en foreach.

[size=xsmall]Toevoeging op 25/03/2015 14:11:39:[/size]

Na enig puzzel en zoekwerk ben ik hier op uit gekomen:

$Data = array(
    array(1427641200, array("img3","img4","img7","img8"), "link2", "link4", "link5", "imgB"), // 29 maart
    array(1427040000, array("img1","img2","img3","img4","img5","img6"), "link1", "link2", "link3", "imgA") // 22 maart
);

foreach ($Data as $Value) {

    if($epochTime > $Value[0]) {

        echo $Value[0]."<br>";
        foreach ($Value[1] as $ValueImgs) { echo $ValueImgs."<br>"; }
        echo $Value[2]."<br>".$Value[3]."<br>".$Value[4]."<br>";
        echo $Value[5];

    }

}
Direct een array declareren in een apart PHP bestand?

<?php
$schedule = array(
array(
'start' => '15-03-2015 08:00:00',
'image' => 'imagefile.jpg',
'background' => '#333',
'link' => 'http://vette-kroketten.nl'
),
array(
'start' => '22-03-2015 08:00:00',
'image' => 'imagefile2.jpg',
'background' => '#F3F3F3',
'link' => 'http://dikke-pannekoeken.nl'
),
);
?>

Of hetzelfde in JSON?

[size=xsmall]Toevoeging op 25/03/2015 14:16:39:[/size]

ik zou alleen die datum-getallen omzetten in een leesbaar formaat voor jezelf.
Kleine aanpassing:
Nieuwste array met gegevens steeds bovenaan in de array toevoegen...
Toevoegen na if loop: break; // als meest recente time klopt zodat oudere niet worden meegenomen, breekt uit totale loop

Reageren