[PHP/MYSQL] include file met een variabele

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • denyos
  • Registratie: Februari 2004
  • Laatst online: 07:42
Ik heb een (voor mij) groot probleem dat enorm eenvoudig op te lossen moet zijn (althans dat verwacht ik wel).

Het probleem is het volgende, ik heb een index.php file en in die file wil ik andere bestanden laten includen. Leek me niet moeilijk doormiddel van een switch (zie ook code hieronder)

Dit gaat dan ook gewoon goed. Nu is het alleen zo dat de file news/news_article.php om een id vraagt dus dacht ik bij de include een id mee te geven
code:
1
2
3
4
5
6
7
8
9
10
<?php 
switch($_GET['message']) { 
  case 'newsarticle': 
    include("news/news_article.php?news_id=0000000005"); 
    break; 
   default: 
    include('news/news_last.php'); 
    break; 
}
?>


dit levert alleen keer op keer de volgende foutmelding op

code:
1
2
3
Warning: include(news/news_article.php?news_id=0000000005) [function.include]: failed to open stream: Invalid argument in e:\Inetpub\wwwroot\otdl\index.php on line 55

Warning: include() [function.include]: Failed opening 'news/news_article.php?news_id=0000000005' for inclusion (include_path='.;C:\php5\pear') in e:\Inetpub\wwwroot\otdl\index.php on line 55


als ik de bij de include het ?news_id=0000000005 weg haal dan krijg ik de melding niet. Het gaat dus ergens fout bij het meegeven van de variabele.

Ik ben momenteel al een tijdje aan het zoeken en proberen van mogelijkheden zoals de variabele een vaste waarde meegeven waarbij ik zeker weet dat die record er is (in dit geval dus 0000000005). Helaas blijf ik iedere keer vastlopen op de variabele en zag ik mij genoodzaakt om jullie hulp in te roepen.

Alvast bedankt

Strava


Acties:
  • 0 Henk 'm!

  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 03-06 14:45

Yoozer

minimoog

Maakt je script een juist verschil tussen de string 0000000005 en het getal 5? Dan nog, volgens mij werkt include alleen maar met filenamen, en zoekt 'ie nu naar een bestand dat letterlijk zo heet. Ik denk niet dat je het op die manier moet proberen te includen. Je kunt dit oplossen door van het artikel-id een session variabele te maken en die dan op te laten vragen door news.php, maar het zou nog beter moeten kunnen. Over het algemeen is de template iets wat ge-include wordt door de pagina zelf, niet andersom. Dus, news.php bevat een include voor template.php (ik noem maar iets).

VVV nog beter, hoef je nog niet eens met sessions te werken :).

[ Voor 102% gewijzigd door Yoozer op 15-05-2006 13:40 . Reden: meer nullen ]

teveel zooi, te weinig tijd


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Include kun je zien als die code wordt ingevoegd in het huidige script.
PHP:
1
2
$news_id = 5;
include('news/news_article.php');

of als string met voorloopnullen:
PHP:
1
2
$news_id = "000000005";
include('news/news_article.php');


Bij jou denk ik dat de oorzaak iets dieper ligt. Jij bent waarschijnlijk gewend om $foo te gebruiken wanneer file.php?foo=bar wordt aangeroepen. Bij veel hosts (en zo hoort het ook, is ook de standaard instelling in php.ini) werkt dat niet, en moet je juist $_GET['foo'] gebruiken. $_GET slaat erop dat de variabele als GET is meegegeven. Maar omdat include via PHP en niet via je webserver werkt, is $_GET helemaal leeg.

[ Voor 79% gewijzigd door GlowMouse op 15-05-2006 13:43 ]


Acties:
  • 0 Henk 'm!

Anoniem: 106551

Probeer je een redirect to doen aan de hand van een wel of niet doorgegeven parameter ? Daar moet je volgens mij de Header() function voor gebruiken

PHP:
1
header("Location: http://www.example.com/")

Acties:
  • 0 Henk 'm!

  • denyos
  • Registratie: Februari 2004
  • Laatst online: 07:42
De pagina die het nummer moet ontvangen doet momenteel nog helemaal niks met de variabele.
Verder wordt er netjes onderscheid gemaakt tussen 5 en 0000000005.

Voorheen programmeerde ik vaak in ASP maar doordat de hosting van mijn clan geen asp ondersteund ben ik genoodzaakt in PHP te programmeren. In asp gebruikte ik altijd includes met variabelen en ik was er eigenlijk vanuit gegaan dat dit in PHP ook gewoon kon.

Strava


Acties:
  • 0 Henk 'm!

  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 03-06 14:45

Yoozer

minimoog

ASP (Classic) include't volgens mij ook alleen bestanden, geen querystring variabelen. Plus, het includen van bepaalde bestanden afhankelijk van een switch is m.i. niet mogelijk.

teveel zooi, te weinig tijd


Acties:
  • 0 Henk 'm!

  • denyos
  • Registratie: Februari 2004
  • Laatst online: 07:42
ik heb het probleem opgelost. Bedankt Glow_Mouse (en alle anderen natuurlijk) ik heb het eventjes uitgeprobeerd zoals jij zei. news_id gewoon van te voren definieren en vervolgens die waarde direct laten gebruiken in de aan te roepen pagina (dus geen losse waarde mee geven) en dit werkt natuurlijk perfect.

Ik ben denk beetje in de war geweest met het verschil tussen includes en frames 8)7

In ieder geval bedankt allemaal. Veel nuttige en snelle informatie

Strava


Acties:
  • 0 Henk 'm!

  • denyos
  • Registratie: Februari 2004
  • Laatst online: 07:42
Yoozer schreef op maandag 15 mei 2006 @ 13:44:
ASP (Classic) include't volgens mij ook alleen bestanden, geen querystring variabelen. Plus, het includen van bepaalde bestanden afhankelijk van een switch is m.i. niet mogelijk.
includen via switch werkt juist perfect (dat wordt ook op enorm veel site aangeraden)

Strava


Acties:
  • 0 Henk 'm!

  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Include betekent niet het aanroepen van een pagina, maar het precieze bestand op die plaats invoegen, daarom dus van tevoren die id aangeven ;)

My personal videoteek: -Clique-; -NMe- is een snol!

Pagina: 1