NL Computer Forum

Maak het zelf => Programmeren => Topic gestart door: RuudDeWit op 9 september 2011, 01:00:43

Titel: PHP - XML gegevens ophalen
Bericht door: RuudDeWit op 9 september 2011, 01:00:43
Hallo,

Ik heb een .xml artikelbestand die er ongeveer zo uitziet:

<artikels>
 <artikel>
 <artikelnummer>00001</artikelnummer>
 <beschrijving>tekst......</beschrijving>
 <image>http://link....</image>
 </artikel>

 <artikel>
  <artikelnummer>00002</artikelnummer>
  <beschrijving>tekst......</beschrijving>
  <image>http://link....</image>
  </artikel>
 
...enz
</artikels>

Ik heb een PHP script gemaakt waarin een parser de informatie uit het XML bestand haalt en deze met HTML code in een webpagina toont, geen probleem. Standaard wordt het eerste artikel getoond of met het aanpassen van het script alle artikelen maar dit XML bestand bevat 100 artikelen dus wil ik $_GET gebruiken om slechts 1 artikel weer te geven. De link wordt dan:

http://www.domein.nl/artikel.php (http://www.domein.nl/artikel.php)?artikel=0001

In het php script heb ik $xmlArtikel = $_GET['artikel']; gezet die de variabele opslaat. Mijn probleem is dus, hoe krijg ik alleen artikel 0001 uit het XML bestand. Heeft iemand een idee of bestaand voorbeeld wat mij verder kan helpen?
Titel: Re: PHP - XML gegevens ophalen
Bericht door: Peter op 9 september 2011, 11:41:15
Hoi Ruud,

PHP, da's al weer ff geleden...

De XML data komt eerst in een 2-dimensionale array te staan, bijv. $artikels
$artikels[0][$artikelnummer] wordt dan 0001
$artikels[1][$artikelnummer] wordt dan 0002

Maw, $artikels[artikel][artikel_item] bevat de XML data.

Met $_GET heeft dat toch niet te maken? $_GET verwijst naar formulier-gegevens, zie HIER (http://www.w3schools.com/php/php_get.asp).


Peter
Titel: Re: PHP - XML gegevens ophalen
Bericht door: RuudDeWit op 10 september 2011, 01:06:42
Hallo Peter,
Citaat
Met $_GET heeft dat toch niet te maken? $_GET verwijst naar formulier-gegevens, zie HIER (http://www.w3schools.com/php/php_get.asp).
Ik had die link ook al gelezen maar $_GET wordt ook gebruikt om data op te halen middels een variabele. Ik heb een tijdje geleden een PHP script (SOAP) gemaakt die verbinding maakt met een webserves van een elektronica leverancier en daar de XML informatie van een artikel ophaalt. Hier een stukje van dat script:
define('ARTIKELS_WSDL_URI', '[url]https://portal.domain/WebServices/ProductService.asmx?WSDL'[/url]);

$client = new SoapClient(ARTIKELS_WSDL_URI, array('encoding'=>'UTF-8'));

$response = $client->__soapCall('GetProductByName',
    array(
        array(
            'productName' => $_GET['artikel'],
            'langCode'    => 'nl'
        )
    )
);

header('Content-Type: text/html; charset=utf-8'); // UTF-8 (important!)
$xml = $response->GetProductByNameResult->any;

//XML parser!
$xmlData = new SimpleXMLElement($xml);

Het script artikel.php wordt dan vanuit een onlineshop opgevraagd middels de link http://.../artikel.php?artikel=XYZ345 waarna alle info van het artikel XYZ345 wordt weergegeven. Mij probleem is dus hoe ik dit met een kant-en-klaar XML bestand doe die op een webserver staat.
Titel: Re: PHP - XML gegevens ophalen
Bericht door: Peter op 10 september 2011, 13:37:54
Hoi Ruud,

Mijn kennis van PHP is nog niet zo groot.
Heb je HIER (http://www.xmlforasp.net/CodeBank/webservices/ACMECorp/ACMECorp.asmx?op=GetProductByName) wat aan?


Peter
Titel: Re: PHP - XML gegevens ophalen
Bericht door: RuudDeWit op 10 september 2011, 17:37:54
Hallo Peter,

Deze info was mij bekend, daarmee kun je live informatie ophalen. De gegevens database (XML-SOAP) is anders als een standaard XML bestand en dat is wat ik nu wil. Ik zoek verder...
Titel: Re: PHP - XML gegevens ophalen
Bericht door: Peter op 10 september 2011, 17:48:47
Hoi Ruud,

Citaat
Ik zoek verder...
Oke. Ik zag dat je elders ook al hulp gezocht had.
Als ik het goed begrijp wil je een webpagina bouwen om door de XML lijst te bladeren en telkens maar 1 artikel zien.

Mocht het niet lukken, geef dan een gil en het XML bestand. Misschien komen we er dan uit.


Succes, Peter
Titel: Re: PHP - XML gegevens ophalen
Bericht door: fortron op 26 september 2011, 09:53:52
Heb je al een oplossing gevonden?
Titel: Re: PHP - XML gegevens ophalen
Bericht door: RuudDeWit op 27 september 2011, 00:55:18
Hallo Fortron,
Citaat
Heb je al een oplossing gevonden?
Nee nog niet. Ik heb een PHP scriptje geschreven naar aanleiding van voorbeelden maar die haalt alleen het eerste artikel uit het xml bestand. Ik ben nu aan het zoeken en vooral uitproberen met .asp scripts.

Titel: Re: PHP - XML gegevens ophalen
Bericht door: RuudDeWit op 3 oktober 2011, 17:08:51
Hallo,

Om deze topic af te sluiten. Ik heb heel veel hulp gekregen van forumlid Fortron (https://www.nlcomputerforum.nl/index.php?action=profile;u=389) die mij geholpen heeft om dit probleem op te lossen. Dit kon niet meer via dit forum omdat er een uitwisseling was van diverse php en xml bestanden. Forton, bedankt voor je hulp!
Titel: Re: PHP - XML gegevens ophalen
Bericht door: Peter op 3 oktober 2011, 20:08:34
Hoi Ruud,

Kun je nog even in het kort aangeven wat de oplossing is.


Peter
Titel: Re: PHP - XML gegevens ophalen
Bericht door: RuudDeWit op 19 oktober 2011, 00:15:00
Hallo Peter,

Ik kan niet zeggen dat het een simpele oplossing was maar in eerste instantie heeft Fortron mij een php script opgestuurd waarmee je de informatie uit een xml bestand haalt en eerst gezocht wordt op het artikelnummer en daarna alleen die informatie toont. Omdat het erg traag werkte, er moet immers een xml bestand van 42 Mb doorgezocht worden, heeft hij een script gemaakt die de xml gegevens eerst in een MySql database plaatst. Daarna wordt het php script gebruikt om de betreffende artikelgegevens uit de database te halen en in een html pagina weer te geven.

Een knap stukje programmeer werk, Ik had er zelf niet uitgekomen.
Titel: Re: PHP - XML gegevens ophalen
Bericht door: Peter op 19 oktober 2011, 18:20:22
Hoi Ruud,

Citaat
Omdat het erg traag werkte, er moet immers een xml bestand van 42 Mb doorgezocht worden, heeft hij een script gemaakt die de xml gegevens eerst in een MySql database plaatst.
Het is mij duidelijk. 42MB data is inderdaad heel wat om door te spitten.
Nette oplossing!


Peter