[PHP] include, wat te doen met die vraagtekens?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • lawnmower
  • Registratie: November 2000
  • Laatst online: 08-09 12:02

lawnmower

Elvis lives..

Topicstarter
Mannen.. (en vrouwen soms),

probleem: bij een aparte php-pagina die gebruik maakt (aangestuurd wordt) door get waardes (bv. showitem.php?id=643) werkt alles ok.

Hoe kan ik deze pagina includen in een andere pagina en dat hij TOCH nog aangestuurd kan worden dmv die get waardes. Er ontstaan dan twee ? vraagtekens. (bv. www.mijnsite.nl/index.php?id=showitem&item=643). Er is een ampsand (&) nodig om dit te laten werken, terwijl de pagina apart (aangestuurd met die ?showitem= , zich niet bewust is dat hij zelf geinclude is, dus geen ampsand (&) gebruikt.

Voor de opbouw van m'n site, heb ik de volgende index.php gemaakt:

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
26
27
28
29
30
31
32
33
34
<?php 

   include('include/layout.inc.php');

    // id opvragen
    $id = $_GET['id'];  

    // maak array voor toegestane pagina's
    $pages = array(); 
    $pages['home']          = 'home.htm';
    $pages['reviews']       = 'reviews/reviews.htm';
    //etc.

    //bestaat de pagina?
    if (isset($pages[$id]))
    { 
    //zo ja: include em
        $contentfile = $pages[$id];
    } 
        else 
    { 
    // zo nee: redirect naar de homepage
        $contentfile = $pages['home'];
    } 


    $layout = new Layout();
    $layout->beginPage();
   
    @include($contentfile);

    $layout->endPage();

?>

Hopelijk heeft iemand een antwoord en hopelijk was ik een beetje duidelijk. Ik heb de search gebruikt, ja wel anderhalf uur lang, maar heb niks kunnen vinden.

alvast bedankt!

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Alle variabelen in je php file zijn ook beschikbaar in de file die wordt ge-include, dus ik snap je probleem niet helemaal?

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Bij een include is het niet mogelijk om die waardes op te geven met een _GET.

Je kunt de waardes wel van te voren definieren en dan gebruiken in je bestand.
PHP:
1
2
3
$id="showitem";
$item=645;
include("bestand");

Hierbij kun je in het bestand dat is geinclude gewoon $id aanroepen ipv $_GET["id"].

Acties:
  • 0 Henk 'm!

  • lawnmower
  • Registratie: November 2000
  • Laatst online: 08-09 12:02

lawnmower

Elvis lives..

Topicstarter
Nou stel:

showtopic.php?id=6323

dit laat dus bijvoorbeeld topic nummer 6323 zien. Vervolgens staat er in diezelfde topic een link naar showtopic.php?topic=7362
Dit werkt allemaal perfect zo.

Maar...

Nu staat deze showtopic.php ge-include in een index.php

wat je dan gaat krijgen is: index.php?id=forumshowtopic.php?topic=7362

Dat zijn dus twee vraagtekens, terwijl die 2e vraagteken eigelijk een ampsand moet zijn om het te laten werken.

Het kan zijn dat ik de plank helemaal mis sla, zo'n expert ben ik niet in PHP. Ik liep er alleen tegenaan :)

[edit]: Ik kan natuurlijk wel gewoon meteen linken met die ampsand erin, dus: showtopic.php&topic=2346, maar dan werkt de file weer niet in z'n eentje.
Ik snap dat het allemaal nogal vaag overkomt.

[ Voor 17% gewijzigd door lawnmower op 07-03-2004 20:46 ]


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
een filenaam weergeven als argument is niet erg slim, dit is te wijzigen en include kan bijna overal bij ook buiten de standaard webdirectory.

Bij argumenten is het zo dat je bij het eerste argument een ? krijgt en daarna telkens een & zo dus index.php?id=showtopic&topic=7362. Als je hierbij de showtopic.php include kan die gebruikmaken van de $_GET["topic"] zonder dat je bij de include ?topic=7362 aangeeft.

index.php:
PHP:
1
include("showtopic.php");


showtopic.php:
PHP:
1
$topic=$_GET["topic"];

met de bovenstaande structuur zou je in feite dus showtopic.php?topic=5454 kunnen aanroepen en ook index.php?id=showtopic.php&topic=5321

Acties:
  • 0 Henk 'm!

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 19:48

pistole

Frutter

lawnmower schreef op 07 maart 2004 @ 20:43:
wat je dan gaat krijgen is: index.php?id=forumshowtopic.php?topic=7362

Het kan zijn dat ik de plank helemaal mis sla, zo'n expert ben ik niet in PHP. Ik liep er alleen tegenaan :)
Je slaat de plank inderdaad mis. Lees jezelf even in hoe een include werkt.

Alle GET, POST en BLA variabelen zijn gewoon geldig in de include file, en dus zal dat allemaal werken.

Misschien wel een goede tip: zorg ervoor dat je bestand niet afhankelijk is van een bepaalde GET/POST/BLA variable; gebruik juist functies met parameters die je vervolgens aanroept.

Ik frut, dus ik epibreer


Acties:
  • 0 Henk 'm!

  • lawnmower
  • Registratie: November 2000
  • Laatst online: 08-09 12:02

lawnmower

Elvis lives..

Topicstarter
Ik heb het door. Op de een of andere manier zat ik een beetje verkeerd en onlogisch en ingewikkeld te denken. (heb je wel eens toch? :) )

Bedankt voor jullie reacties!
Pagina: 1