[XML, PHP, SQL] Data in xml bestand invoeren..

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een XML parser in PHP gemaakt, dat script pakt een XML bestandje en parsed 'm naar HTML. Heel leuk en aardig allemaal. Ik wil echter de content uit het XML bestand uit een database halen (SQL). Maar om dat voor elkaar te krijgen, moet het bestand meteen .php heten en moet het geparsed worden door PHP.

M'n XML parse script pakt echter gewoon het PHP bestandje en parsed die, zonder dat het eerst door PHP geparsed is.

Vraag: hoe maak ik met PHP een XML bestand met content uit een database?

Ik hoop dat het een beetje duidelijk is... :)

Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
Op dinsdag 09 oktober 2001 19:08 schreef Agijsbro het volgende:
Ik heb een XML parser in PHP gemaakt, dat script pakt een XML bestandje en parsed 'm naar HTML. Heel leuk en aardig allemaal.
Is het niet veel logischer om dat met XSLT te doen :?
M'n XML parse script pakt echter gewoon het PHP bestandje en parsed die, zonder dat het eerst door PHP geparsed is.
Open het niet direct, maar via HTTP.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op dinsdag 09 oktober 2001 19:42 schreef tomato het volgende:

[..]

Is het niet veel logischer om dat met XSLT te doen :?
Inderdaad! Maar waar de site wordt gehost ondersteunen ze geen XSLT. Is wel jammer en ik ga 'r zeker ook nog mee aan de slag!
[..]

Open het niet direct, maar via HTTP.
Dus in de href de hele URL invoeren? Of bedoel je dat niet?

Acties:
  • 0 Henk 'm!

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 03-09 14:12
Op dinsdag 09 oktober 2001 19:42 schreef tomato het volgende:Is het niet veel logischer om dat met XSLT te doen :?
Lijkt mij ook een stuk handiger / makkelijker / beter onderhoudbaar.
Open het niet direct, maar via HTTP.
Of kijk een naar de eval() functie. Misschien bedoel je die. Vie HTTP openen kan onder Apache trouwens ook erg makkelijk met virtual()

Acties:
  • 0 Henk 'm!

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 16-08 06:44

CyberSnooP

^^^^ schrijft --->

Laat je code eens zien die probeert het .PHP-bestand te lezen.

Overigens is dit inderdaad niet de ideale methode, XSLT is een beter idee.

|_____vakje______|


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op dinsdag 09 oktober 2001 20:01 schreef freak007 het volgende:

[..]

Lijkt mij ook een stuk handiger / makkelijker / beter onderhoudbaar.
Maar ja, das dus geen optie. Ik weet dat het een mooie oplossing is.
[..]

Of kijk een naar de eval() functie. Misschien bedoel je die. Vie HTTP openen kan onder Apache trouwens ook erg makkelijk met virtual()
Ik check 't ff uit! :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op dinsdag 09 oktober 2001 20:01 schreef CyberSnooP het volgende:
Laat je code eens zien die probeert het .PHP-bestand te lezen.

Overigens is dit inderdaad niet de ideale methode, XSLT is een beter idee.
Dit is eigenlijk de code waar 't om gaat:
code:
1
2
3
4
5
6
7
8
// data file
$file = "$paginaselect";

// open XML file
if (!($fp = fopen($file, "r")))
{
    die("Cannot locate XML data file: $file");
}

De $paginaselect komt uit een form van een andere pagina (bv: pagina.php). Het probleem is dus, dat deze pagina ($paginaselect) niet door PHP wordt geparsed.

Acties:
  • 0 Henk 'm!

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 16-08 06:44

CyberSnooP

^^^^ schrijft --->

Ik neem aan dat $paginaselect de bestandsnaam bevat van het PHP-script wat het XML-bestand genereerd.

Je kunt het niet op deze manier gebruiken omdat fopen() letterlijk de inhoud (in dit geval dus PHP-code) terug geeft.

Je zult het PHP bestand dus uit moeten voeren. Dat kan met virtual o.i.d. maar mooier zou zijn als je het PHP-bestand aanpast, zodanig dat d.m.v. een include (of require) de inhoud te verkrijgen valt.

Het PHP bestand zou dus niet gebruik moeten maken van "echo" en "print" commandos, maar de XML zou in een variabele moeten komen te staan. Die variabele kun je dus gebruiken als input voor je XML-parser.

Opmerkingen:
Het gebruik van $paginaselect is redelijk onveilig. Een gebruiker zou daar bijna elke bestandsnaam voor in kunnen vullen.

Denk misschien ook eens aan caching van je XML-file. Extra simpel doordat je 2 aparte systemen gebruikt (1 voor het vormen van de XML en een andere voor het XML-->HTML)

|_____vakje______|


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op dinsdag 09 oktober 2001 20:12 schreef CyberSnooP het volgende:
Ik neem aan dat $paginaselect de bestandsnaam bevat van het PHP-script wat het XML-bestand genereerd.
Goed gezien. :P
Je kunt het niet op deze manier gebruiken omdat fopen() letterlijk de inhoud (in dit geval dus PHP-code) terug geeft.
Yepz, dat gebeurt inderdaad...
Je zult het PHP bestand dus uit moeten voeren. Dat kan met virtual o.i.d. maar mooier zou zijn als je het PHP-bestand aanpast, zodanig dat d.m.v. een include (of require) de inhoud te verkrijgen valt.

Het PHP bestand zou dus niet gebruik moeten maken van "echo" en "print" commandos, maar de XML zou in een variabele moeten komen te staan. Die variabele kun je dus gebruiken als input voor je XML-parser.
De parser wil toch een XML bestand? En gebruik ik de variabele in een .xml bestand, dan gebeurt er weer niets. I know.. Newbee alert! :(
Opmerkingen:
Het gebruik van $paginaselect is redelijk onveilig. Een gebruiker zou daar bijna elke bestandsnaam voor in kunnen vullen.
Maak ik ook geen gebruik van op de site. Dit is alleen om lokaal snel de nieuwe pagina's te kunnen bekijken.
Denk misschien ook eens aan caching van je XML-file. Extra simpel doordat je 2 aparte systemen gebruikt (1 voor het vormen van de XML en een andere voor het XML-->HTML)
Antwoorden leveren altijd weer nieuwe vragen op, zo ook hier.. :P
Pagina: 1