[PHP] Include pagina met variabelen

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

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jilvoos
  • Registratie: Maart 2003
  • Laatst online: 05-06 10:05
Ok wat is de situatie.

Ik heb een index waarin ik tekst wil includen. Die tekst moet uit een database gehaald worden. Dit wordt gedaan door fetch_tekst.php. Door middel van een id kan ik aangeven welke tekst dit moet zijn. Als ik dus in de browser fetch_tekst.php?id=7 invul krijg ik het daarbij behorende tekstje. Nu wil ik echter in index.php het volgende includen, <?php include("db/fetch_tekst.php?id=3");?>. Dit staat dus tussen de html door. Dit lukt echter niet. Include in de pagina zonder variabele en leg ik die variabele gewoon vast in fetch_tekst dan wordt wel netjes de tekst ge-include, maarja dat is niet wat is wil. De vraag is dus of iemand weet hoe ik een pagina+variabelen kan includen...

alvast bedankt,
Jilles

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:04

crisp

Devver

Pixelated

serverside, dus Programming

Verder is dit een basis vraagstuk. Normaliter zou je dit met een functie oplossen:

index.php:
PHP:
1
2
3
4
5
6
require_once('db/fetch_tekst.php');

$id = 10;
$text = get_text($id);

echo $text;


fetch_tekst.php:
PHP:
1
2
3
4
5
function get_text($id)
{
  // haal tekst
  return $text;
}

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 08:19
Ik zie het nut van het soort constructie als genoemd in de TS niet zo. Desalniettemin was er laatst ook al iemand met deze vraag op GoT en toen heb ik er een functie voor gemaakt. Ik zal even kijken of ik die kan terugvinden...

gevonden :)

[ Voor 19% gewijzigd door T-MOB op 30-03-2006 22:58 ]

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Jilvoos
  • Registratie: Maart 2003
  • Laatst online: 05-06 10:05
Helemaal goed, werkt prima, dankjewel!!
Wat is er mis mee dan?
Oh en ik begrijp die functie niet zo snel, is het alweer te laat voor :+

Beide bedankt voor de hele snelle reactie _/-\o_

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 08:19
Wat er mis mee is is dat je een methode om data over http protocol te versturen gebruikt om variabelen in PHP door te geven. Dat kan veel handiger met PHP zelf. Daarnaast is het gevaar van dit soort includes dat je variabelen overschrijft in je basis applicatie.
Bijvoorbeeld:
PHP:
1
2
3
4
//main.php
$a = 'main.php';
include 'include.php';
print($a);
PHP:
1
2
//include.php
$a = 'include.php';

Het aanroepen van main.php zal als output 'include.php' hebben, omdat in de include variabele $a wordt overschreven. Het werken met een functie of een klasse (in elk geval iets met een eigen namespace) zoals crisp omschrijft is dus voor 99,9% van de gevallen de aanbevolen aanpak.

De enige reden die ik kan bedenken waarom je iets anders zou willen is dat je een script hebt dat prima functioneert direct vanuit de browser, waarvan je de output nodig hebt, maar wat je niet 1-2-3 kunt aanpassen om het direct te gebruiken. In dat geval kan het handig zijn om de functionaliteit van include 'bestand?foo=bar'; tot je beschikking te hebben.
Oh en ik begrijp die functie niet zo snel, is het alweer te laat voor :+
En dat is dus wat door die functie geimplemnteerd wordt. Je kunt er een bestandsnaam en associatieve arrays voor GET, POST en COOKIE parameters in stoppen en je krijgt de uitvoer van bestand - gegeven deze parameters - terug in een string.

Regeren is vooruitschuiven