Array's (nest) coderen in foreach?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Harry Hartman

Harry Hartman

25/03/2015 10:11:41
Quote Anchor link
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)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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!
Gewijzigd op 25/03/2015 10:12:18 door Harry Hartman
 
PHP hulp

PHP hulp

18/04/2024 17:04:32
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/03/2015 13:18:33
Quote Anchor link
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.
 
Harry Hartman

Harry Hartman

25/03/2015 14:08:45
Quote Anchor link
Bedankt voor je reactie.
Ik ben bekend met jouw idee en techniek maar dacht aan een simpele oplossing middels array's en foreach.

Toevoeging op 25/03/2015 14:11:39:

Na enig puzzel en zoekwerk ben ik hier op uit gekomen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$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];

    }

}
Gewijzigd op 25/03/2015 14:13:10 door Harry Hartman
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/03/2015 14:15:34
Quote Anchor link
Direct een array declareren in een apart PHP bestand?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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?

Toevoeging op 25/03/2015 14:16:39:

ik zou alleen die datum-getallen omzetten in een leesbaar formaat voor jezelf.
 
Harry Hartman

Harry Hartman

01/04/2015 12:33:03
Quote Anchor link
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
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/04/2015 13:40:04
Quote Anchor link
Dat betekent dat het gelukt is?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.