[PHP] Array uit .php bestand aanroepen - hoe?

Pagina: 1
Acties:
  • 108 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Ed.
  • Registratie: Augustus 2001
  • Laatst online: 26-09-2022
Ik heb al de search gebruikt, en zelf dit proberen op te lossen, maar ik ben nog maar net begonnen met php, en kon hier niets over vinden op phpfreakz, php.net of via deze search.

Wat ik wil is het volgende: 1 groot php bestand met daarin alle links naar alle plaatjes. Als ik dus ooit 1 plaatje van de ene dir naar de andere verplaats, ik alleen dat phpbestand hoef te editten, en alle pagina's automatisch meeveranderd worden. Het leek me slim om dit via een array te doen dus had ik 't volgende:

PHP:
1
2
3
4
5
6
7
<?php 
$plaatjes = array(
"home"=>"images/top/hom.jpg",
"uitleg"=>"images/top/uit.jpg",
"menu"=>"images/top/men.jpg"
);
echo "[img]\"$plaatjes[uitleg]\">";[/img]


Maar nu wil ik dus de array in een apart .php bestand hebben, en via die echo dat .php bestand aanroepen. Alleen hoe doe ik dat?

Wat ik bed8 heb is dit (weet dus niet hoe erg omslachtig dit is, en of dit de laadtijd van de site erg verslechterd). Ik heb zo'n arraybestand van zeg maar 20kb, en die laad ik in de htmlfile via een require. Dan kan ik gewoon die " echo "[img]\"$plaatjes[uitleg]\">";[/img] " gebruiken.

Maar er is vast een betere oplossing voor :)

Acties:
  • 0 Henk 'm!

  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

een database?

Skill is when luck becomes a habit.


Acties:
  • 0 Henk 'm!

  • Ed.
  • Registratie: Augustus 2001
  • Laatst online: 26-09-2022
Nee.. dat zou betekenen dat ik telkens als ik fftjes 1 urlletje wil aanpassen die database weer inmoet... Geef mij maar gewoon 1 groot php bestand, dat gaat makkelijker (toch? of moet dit echt via database om snelheid te garanderen?)

Acties:
  • 0 Henk 'm!

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 01-09 11:48
Maak een settings.php, met daarin:
PHP:
1
2
3
$plaatjes['home']   = 'images/top/hom.jpg';
$plaatjes['uitleg'] = 'images/top/uit.jpg';
$plaatjes['menu']   = 'images/top/men.jpg';

en include() of require_once() de settings.php in elk bestand waar de de array wil hebben :)

[ Voor 31% gewijzigd door DRvDijk op 22-02-2003 02:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Om die array 'in' een ander bestand te krijgen, zal je volgens mij toch echt met een require of include moeten werken. In principe is de `$plaatjes' array dan gewoon in het bestand welke de include uitvoerde beschikbaar.
Maar nu wil ik dus de array in een apart .php bestand hebben, en via die echo dat .php bestand aanroepen. Alleen hoe doe ik dat?
Ik denk dat je hiermee bedoelt, dat je de include wilt vermijden, en gewoon in je huidige PHP / html via src="" het plaatje wat achter het pad/file zit in array $plaatjes wilt laten zien.

Wat je dan kan doen is bijvoorbeeld:
code:
1
[img]"plaatjes.php?id=uitleg"[/img]
Nu is de waarde van 'id' te benaderen via $_GET['id'], waardoor je je script het goede plaatje kan laten openen in je filesystem en deze kan returnen.
Ik gebruik zo'n aanroep van php bestanden om adhv een bepaald id verschillende grafieken te kunnen maken met hetzelfde php bestand. Alleen werkt dat net wat anders met de weergave van 't resultaat in je uiteindelijke pagina, dus dat zal je even zelf moeten uitzoeken ;)

Een ander (nuttig?) voorbeeld (even uit het blote hoofd hoor ;)):
PHP:
1
2
3
4
5
6
function get_img($id) {
  if (file_exists($id)) {
    $dimensions = getImageSize($id);
    return "[img]$id[/img]";
  }
}

Dit geeft je, als het bestand bestaat, een complete img string terug .. (getImageSize returnt een complete width="" height="" string op array positie 3 ..).

Acties:
  • 0 Henk 'm!

  • Ed.
  • Registratie: Augustus 2001
  • Laatst online: 26-09-2022
elviver schreef op 22 februari 2003 @ 02:11:
Maak een settings.php, met daarin:
PHP:
1
2
3
$plaatjes['home']   = 'images/top/hom.jpg';
$plaatjes['uitleg'] = 'images/top/uit.jpg';
$plaatjes['menu']   = 'images/top/men.jpg';

en include() of require_once() de settings.php in elk bestand waar de de array wil hebben :)
betekend dit geen 20kb dataverkeer extra voor de bezoeker? (aangenomen dat settings.php 20kb is)
dat zou nl. betekenen dat de pagina er weer enorm veel trager van wordt...

[ Voor 14% gewijzigd door Ed. op 22-02-2003 02:38 ]


Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Rolex schreef op 22 February 2003 @ 02:38:
[...]


betekend dit geen 20kb dataverkeer extra voor de bezoeker? (aangenomen dat settings.php 20kb is)
dat zou nl. betekenen dat de pagina er weer enorm veel trager van wordt...
php is geen dataverkeer, hij parsed het en dan verstuurd die html code naar de bezoeker dat is dan je dataverkeer

Acties:
  • 0 Henk 'm!

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
oplossing van elviver lijkt me de aangewezen oplossing? ..
dataverkeer is alleen dat gedeelte dat ook daadwerkelijk gebruikt wordt van die code.. dus niet meer dan je normaal met images werkt (lijkt me?)

Acties:
  • 0 Henk 'm!

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 01-09 11:48
Rolex schreef op 22 februari 2003 @ 02:38:
[...]


betekend dit geen 20kb dataverkeer extra voor de bezoeker? (aangenomen dat settings.php 20kb is)
dat zou nl. betekenen dat de pagina er weer enorm veel trager van wordt...
Nee :) Kijk, je hebt die (veel te grote) settings.php . Het enige wat die 'doet' is de array definiëren. Die settings.php include of require_once je in een ander PHP-bestand (bijvoorbeeld je index.php). Dan kun je vanuit dat bestand (index.php) die array aanroepen, alsof de array in de index.php gedefiniëerd is. Hoeveel data er verstuurd wordt naar de client hangt af van wat je in je index.php hebt staan (hoeveel print's of echo's je daarin hebt staan).


Bijvoorbeeld:
settings.php
PHP:
1
2
3
4
$plaatjes['home']   = 'images/top/hom.jpg'; 
$plaatjes['uitleg'] = 'images/top/uit.jpg'; 
$plaatjes['menu']   = 'images/top/men.jpg';
// Nog veel meer

index.php
PHP:
1
2
require_once('settings.php');
print '[img]"'[/img]';


Dit geeft als output:
code:
1
[img]"images/top/uit.jpg"[/img]


En dus niet de hele array die in de settins.php staat :)

Het includen van een bestand heeft geen dataverkeer tot gevolg, zolang het bestand dát je include op dezelfde server staat.
offtopic:
Als je het bestand wél van een andere server af wil includen heb je wél dat verkeer. Maar dan loop je weer tegen andere problemen aan, dat de inhoud van dat bestand niet overkomt, maar wat de server als resultaat van dat bestand afgeeft (in dit geval niets ;)))

Acties:
  • 0 Henk 'm!

  • Ed.
  • Registratie: Augustus 2001
  • Laatst online: 26-09-2022
Ok, ik snap nu hoe het werkt, enorm bedankt voor al de uitleg!
De server 'rekent' ahw uit wat waar moet komen te staan door de settings.php in te lezen, en doet dit allemaal voordat de gebruiker er iets van ziet. Dit kost ietswat rekenkracht en de bezoeker zal dan zeg maar 0.1 sec langer moeten wachten om dit allemaal uit te rekenen gok ik zo.

Maar... jij zegt "veel te grote settings.php"
Wat is er dan verkeerd mee, als ie zo groot is?
Pagina: 1