zoals de titel al zegt,

hoe kan ik in een php script een andere php file laden maar alleen de variables die erin staan gebruiken?

ik wil dus:

index.php: (simpele versie)
<?
$title="Laloeka.nl";
$paginatitel="";

echo "<html><body>Titel: $title<br>Pagina: $paginatitel<br><center>";
// hier moet de pagina output van home.php komen
echo "</center></body></html>";
?>


home.php: (simpele versie)
<?
$paginatitel="Home";
?>
<h1>Home</h1>
welkom!


Hoe zorg ik dus dat het variable $paginatitel ingelezen wordt, maar de pagina pas later geecho't/geinclude't wordt?
Betere indeling maken en niet direct in een echo zetten.
Wat bedoelt u met 'betere indeling maken' en 'niet direct in een echo zetten.'

Hier kan ik niets mee..

---

Er is trouwens niet echt een mogelijkheid de home.php pagina te veranderen en in een string te zetten, want er komt ook een gastenboek.php pagina, en die geeft alles als echo's
Je kan niet een pagina includen en hopen dat ie de echo's niet uitvoert. Dus wil jij alleen $vars includen dan zal je daar een apart bestand voor moeten maken.
Nou, het kan wel....

datbestand.php
<?php
$var_uit_datbestand = 3;
?>
<b>Dit is vervelende tekst</b>


Jouw php-bestand

<?php
ob_start();
include("datbestand.php");
ob_end_clean();

echo "Ik wil er ... " . $var_uit_datbestand;
?>


Resultaat zal zijn: Ik wil er ... 3.



Maarr..... zo werkt het niet.
Zet alle html die je hebt (de inhoud) ook in een variabele, bijvoorbeeld $html.
En echo die waar jij wilt.
Wat een verschrikkelijke oplossing.
SanThe schreef op 11.10.2009 17:21
Wat een verschrikkelijke oplossing.

Reden?

Ik ga heb uittesten, maar niet nu, ik heb nu geen tijd..

Iig bedankt :)
Output buffering wordt meestal afgeraden omdat het niet de juiste oplossing levert. Het zorgt er ook voor dat je site trager wordt, omdat die helemaal in het geheugen wordt gestopt en vraagt meer van je server.
Het voorbeeld van Eddy is dus fout omdat het data in het geheugen stop waarmee je niks meer mee doet, dat is een verspilling.

De oplossing voor jou probleem is gewoon alles in variabelen stoppen.
Of gebruik maken van een template parser / engine.
Karl schreef op 12.10.2009 19:04
[...]
Of gebruik maken van een template parser / engine.

Vertel? :P

Alles in variablen stoppen is geen optie aangezien een deel van de output door scripts gegenereerd wordt.

EDIT:

Kan ik misschien iets doen als dit:
index.php:
<?
global $varinclude;
$varinclude=true;
include "test.php";
echo $test;
$varinclude=false;
include "test.php";
?>


test.php:
<?
global $varinclude;
if ($varinclude == true)
{
    $test="1234abcdABCD.,?!";
}
else
{
    echo "Test!!!";
}
?>


Werkt zoiets?
SanThe schreef op 11.10.2009 17:21
Wat een verschrikkelijke oplossing.


Geheel met je eens.
Als je zo je site met touwtjes aan elkaar gaat knopen wordt het al snel tijd voor versie 2.0.... want dit houdt nooit lang stand.
Ja, en dan heb je die global niet voor nodig.

Maar alsnog, zoals al vele keren is aangeraden: zet het in een variabele.
Dus gewoon GEEN echo in test.php!
mod-edit:

Bumpen
Twee of meer keer na elkaar in een topic posten, voordat andere forumleden gereageerd hebben, heet "bumpen". Omdat het opdringerig overkomt is bumpen pas na 24 uur toegestaan. Bumpen kan een reden zijn voor de admins en mods om een topic te sluiten. Gebruik het knopje om je tekst aan te passen indien nodig.

Reageren