Associatieve Arrays koppelen
Code (php)
1
2
3
4
5
2
3
4
5
// Initialize the gallery array
$galleryArray = $gallery->readImageDirectory('gallery-images');
// Initialize the youtube array
$youtubeArray = $gallery->readImageDirectory('youtube-images'); //dit kan wel anders moeten...
$galleryArray = $gallery->readImageDirectory('gallery-images');
// Initialize the youtube array
$youtubeArray = $gallery->readImageDirectory('youtube-images'); //dit kan wel anders moeten...
Deze moeten gekoppeld worden.
Bij afbeelding 1 hoort youtube van 1, enz.
De uitdraai gaat als volgt:
Code (php)
Iemand die me op weg kan helpen?
Mag ook wel andere manier zijn om de arrays te koppelen.
Gewijzigd op 30/06/2017 21:42:02 door Hans De Ridder
zie antwoord hieronder
Gewijzigd op 02/07/2017 17:28:49 door Dennis WhoCares
of gewoon de foreach uitschrijven als foreach ($galleryArray['images'] as $index => $image) waarna je $index kunt gebruiken om gegevens uit $youtubeArray te halen. Is ook wat betrouwbaarder.
Kunnen jullie een voorbeeld geven?
Want de gegevens komen uit twee mappen.
Dus moet ook gekoppeld worden op juiste gegevens bij elkaar.
Maar die kenmerken kan ik ook in de bestandsnaam verwerken.
Ik ben toch aan het experimenteren.
Ik dacht er aan om alles in 1 map te stoppen. (Zijn hele kleine bestanden).
En met kenmerk in de bestandsnaam er voor zorgen dat ze na elkaar in array komen.
En dan moet de teller telkens met 2 omhoog.
Dus in de array:
0 - youtube 1
1 - foto 1
2 - youtube 2
3 - foto 2
4 - youtube 3
5 - foto 3
Gewijzigd op 30/06/2017 23:33:59 door Hans De Ridder
Of je maakt een tabelletje in een database waarin je informatie over bestandsnamen bijhoudt als een soort van kapstok? Dan maakt het niet uit hoe de bestanden heten, of waar ze staan.
Juist om een soort database te maken zonder echte database.
Ik gebruik een open source fotoboek voor de weergave in foto's.
En bij clicken gebeurt er dan van alles. En soms moet ik bepaalde foto's koppelen.
Code (php)
Je zou, als je zeker weet dat de loop altijd hetzelfde verloopt ook iets eenvoudigers kunnen doen:
Code (php)
Gewijzigd op 01/07/2017 01:23:26 door Ben van Velzen
Zaterdag kom ik er niet aan toe.
Zal het morgen inbouwen en testen.
Gewijzigd op 01/07/2017 11:24:53 door Hans De Ridder
De teller ziet het aantal bestanden wel.
Maar er verschijnt niets tussen de haakjes om in de readers te plaatsen.
De layout neemt ook maar weinig over van de CSS.
ik heb nu ongeveer staan...
Code (php)
we weten niet hoe de array $galleryArray eruit ziet.
Maar als de array vol zit met arrays zonder een 'string' als key:
zet ['file_title'] eens achter [$i] of wat voor waarde je ook nodig heb
Code (php)
1
2
3
4
2
3
4
<?php for ($i = 0; $i < count($galleryArray['images']); $i += 2) { ?>
<li><a href="#" class="tooltip" onclick="youtubereader('<?php echo $galleryArray['images'][$i]['file_title']; ?>')">tekst</a><div id="special" onclick="youtubereader('<?php echo $galleryArray['images'][$i+1]['file_title']; ?>')"></div>
</li>
<?php } ?>
<li><a href="#" class="tooltip" onclick="youtubereader('<?php echo $galleryArray['images'][$i]['file_title']; ?>')">tekst</a><div id="special" onclick="youtubereader('<?php echo $galleryArray['images'][$i+1]['file_title']; ?>')"></div>
</li>
<?php } ?>
Gewijzigd op 02/07/2017 22:10:52 door Dennis WhoCares
Dat werkt (nog) niet.
Ik kom in de PHP het volgende tegen:
['file_title']
['thumb_path']
Had inderdaad jouw oplossing ook al geprobeerd, zowel voor als achter de $i.
Zonder resultaat.
Het mogen ook best 2 verschillende arrays zijn.
Als ik die maar bij de uitdraai kan gebruiken.
zou je eens een print_r() kunnen geven van beide arrays?
wellicht kunnen we je hier dan iets beter helpen :)
Gewijzigd op 03/07/2017 08:20:59 door Dennis WhoCares
De print_r($youtubeArray) komt nog..
De uitlezing blijft helaas nog leeg...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Array
(
[images] => Array
(
[zOATXRLfW2c.jpg] => Array
(
[file_title] => zOATXRLfW2c
[file_path] => javascript:void(0)" onclick ="googlereader('gallery-images/zOATXRLfW2c.jpg')
[thumb_path] => resources/cache/160x61-75-01e2e8e31007cdadd3a39d779e374326e83e55f3bf1047462e1cccc7cb0ed3cf.jpg
)
[xqJr5PXvbDI.jpg] => Array
(
[file_title] => xqJr5PXvbDI
[file_path] => javascript:void(0)" onclick ="googlereader('gallery-images/xqJr5PXvbDI.jpg')
[thumb_path] => resources/cache/160x61-75-8e3b37dd15213aed877d3b0b3dcad52c79245698b3f85ce331d8c102fcb7ff6b.jpg
)
)
(
[images] => Array
(
[zOATXRLfW2c.jpg] => Array
(
[file_title] => zOATXRLfW2c
[file_path] => javascript:void(0)" onclick ="googlereader('gallery-images/zOATXRLfW2c.jpg')
[thumb_path] => resources/cache/160x61-75-01e2e8e31007cdadd3a39d779e374326e83e55f3bf1047462e1cccc7cb0ed3cf.jpg
)
[xqJr5PXvbDI.jpg] => Array
(
[file_title] => xqJr5PXvbDI
[file_path] => javascript:void(0)" onclick ="googlereader('gallery-images/xqJr5PXvbDI.jpg')
[thumb_path] => resources/cache/160x61-75-8e3b37dd15213aed877d3b0b3dcad52c79245698b3f85ce331d8c102fcb7ff6b.jpg
)
)
Gewijzigd op 03/07/2017 12:32:20 door Hans De Ridder
Code (php)
1
[file_path] => javascript:void(0)" onclick ="googlereader('gallery-images/zOATXRLfW2c.jpg')
Dit ding is (of lijkt in ieder geval in eerste instantie) volledig afleidbaar uit file_title en is zodoende compleet overbodig. Indien deze data aangeleverd wordt en je hebt geen invloed op de inhoud: laat maar zitten dan.
De key van images is de bestandsnaam, en geen index. Als je het melden + weergeven van fouten tijdens ontwikkeling aan had staan zou PHP moeten zeuren over undefined indexes...
Je zou zoiets kunnen doen?
Code (php)
1
2
3
4
5
2
3
4
5
<?php
foreach ($galleryArray['images'] as $imageName => $imageData) {
// doe je ding
}
?>
foreach ($galleryArray['images'] as $imageName => $imageData) {
// doe je ding
}
?>
Hierbij helpt het ook enorm als je een zinnige naamgeving voor variabelen gebruikt. En wellicht een opfriscursus m.b.t. de werking van (geneste) arrays.
Gewijzigd op 03/07/2017 13:15:45 door Thomas van den Heuvel
Ik werk vanuit een bestaand open-source fotoboek. met nogal wat instellingen.
Ik ben die wat aan het aanpassen, waar dat in mijn vermogen ligt.
En ik dacht door een referentie in de afbeeldingen een volgorde te maken
waarbij er telkens 2 afbeeldingen in de array achter elkaar werden gezet.
En dan een teller zoals Ben en Dennis het aangaven.
Maar dat krijg ik (nog) niet voor elkaar.
Vandaar dat ik nog heb gekeken naar optie met 2 arrays.
Maar de open-sourcecode zitten zoveel instellingen en verwijzingen.
Ik denk dat ik ben aangewezen op 1 array. waar alle foto's in zitten.
en dan met truc(?) telkens die twee waarden eruit vis.
Of je introduceert een tussenstap, waarbij je eerst alle relevante data uitleest en deze vervolgens in je eigen data-structuur plaatst, zoals jij deze wilt gebruiken. Maar hoe weet je wat bij elkaar hoort? Staat alles op volgorde in gallery-images en youtube-images? Hoe ziet $youtubeArray er uit?
Dus ik kan met een referentie in de bestandsnaam (bijv uniek lidnummer) de twee bijbehorende
bestanden bij elkaar zetten.
bijv. 253531#gegevens bestand 1.jpg
253531#gegevens bestand 2.jpg
Afhankelijk van de gegevens wordt er bepaald hoe er iets uitgelezen wordt.
gegevens bestand 1 gaan naar een youtubespeler.
gegevens bestand 2 gaan naar een formulier.
Op de een of andere manier lukt het me niet om de gegevens uit te draaien...
Hier mijn werkvoorbeeld waarbij nu de onderste verwijzing naar vaste code gaat (altijd zelfde video)
De bovenste youtube thumb gaat bij click naar de youtube.
Pagina 1 werken de eerste 8 beelden.
http://pctraverse.nl/csstest/flyers/index.php
Als je een (gedeeltelijke) uitdraai van $youtubeArray kunt geven kunnen we makkelijk bepalen of we hier rechtstreeks aan kunnen refereren of dat we $galleryArray kunnen uitbreiden met relevante informatie uit $youtubeArray, en hoe.
Vandaar dat ik refereer naar dezelfde map.
Want die $galleryArray loop via heel veel instellingen op verschillende PHP bestanden.
Als ik dat doe, dan ziet hij er hetzelfde uit als de $galleryArray wat opbouw betreft.
Wil ik datzelfde doen voor $youtubeArray, dan moet ik al die bestanden nalopen in de open-source.
Dus dan maar alle bestanden in 1 map.
Die tussenstap vind ik wel interessant...maar wil ook nog niet echt lukken..
Toevoeging op 03/07/2017 22:27:37:
Ben wel iets verder gekomen.
Heb de bestanden in een nieuwe array gestopt. (tussenstap)
En als ik die uitlees dan worden de velden weer gevuld.
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
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$d = "../../../gallery-images/";
$files = array();
if(!is_dir($d)){
echo "geen gegevens";
}
else
{
$dir = opendir($d);
while ($f = readdir($dir)){
$match = strtolower($f);
if (eregi(".jpg",$match)){
array_push($files,"$f");
}
}
}
sort($files, SORT_NATURAL | SORT_FLAG_CASE);
foreach ($files as $key => $val) {
echo "files[" . $key . "] = " . $val . "\n";
}
?>
$d = "../../../gallery-images/";
$files = array();
if(!is_dir($d)){
echo "geen gegevens";
}
else
{
$dir = opendir($d);
while ($f = readdir($dir)){
$match = strtolower($f);
if (eregi(".jpg",$match)){
array_push($files,"$f");
}
}
}
sort($files, SORT_NATURAL | SORT_FLAG_CASE);
foreach ($files as $key => $val) {
echo "files[" . $key . "] = " . $val . "\n";
}
?>
De foreach heb ik alleen gebruikt om te testen.
Ik zoek nu nog naar een oplossing om deze array om te bouwen naar de oorspronkelijke array.
Met name de verwijzing naar de thumbs die geplaatst worden.
Tot zover in ieder geval bedankt voor jullie geduld en adviezen.
De thumbs heb ik nu zonder hash. Dus kan de bestandsnaam gebruiken maar dan in andere map.
Gewijzigd op 04/07/2017 20:00:42 door Hans De Ridder