Autor Zpráva
Ondrra
Profil *
Ahoj,

potrebuji v php vygenerovat xml soubor a ten pak na cizí webové stránce nějakým způsobem rozložit.

Udělal jsem si php skript (xmldata.php), který když spustím, tak se mi z databáze vytvoří xml struktura. Ted jsem chtel pomocí simplexml_load_file('xmldata.php'); načíst potřebná data. Nicméně funkce akceptuje pouze soubory s příponou xml. Jak mám tedy vytvořit soubor s příponou .xml tak, aby při každém jeho zavolání vrátil aktuální data z databáze?

Potřebuji taky, aby xml soubor obsahoval data, která si uživatel vyžádal. Např. na cizí webové stránce bude formulář s výběrem různých druhů produktů. Po odeslání by se z mé databáze vygeneroval nějaký ten xml soubor s urcitými a aktualnimi daty a tato data by se zobrazila na cizí webové stránce.

Předem díky za rady
thingwath
Profil
Simplexml_load_file načítá ze souboru, tudíž je pro tento případ na první pohled nepoužitelná. Použíj simplexml_load_string, s tím, že si výstup toho skriptu uložíš do řetězce (to už buď děláš, nebo přes http://www.php.net/manual/en/ref.outcontrol.php).

Druhou otázku moc nechápu, zkus ji trochu rozvést :-)
Ondrra
Profil *
Dik, ale stale mi to neni moc jasne, jak je to s tim ulozenim vystupu toho skriptu do retezce. Zkusil jsem nasledujici kod a ma to jednu chybku. A to ze mi funkce include vypise data z xml souboru a funkce var_dump vypise strukturu xml nasledovne. Jak se to tedy ma spravne nacist do toho retezce? Dik

ob_start();
include "xmldata.php";
$vystup = ob_get_contents();
ob_end_flush();

$xml = $xml = simplexml_load_string($vystup);
var_dump($xml);
thingwath
Profil
Tohle by mělo fungovat, tedy, nevím proč tam máš dvakrát to $xml =, ale na pohled v tom nevidím problém. Zkus přesně popsat co to dělá, připoj třeba nějaký ukázkový výstup, prohlédni logy.
Ondrra
Profil *
Tento kod:
-------------------------------------------------------
ob_start();
include "xmldata.php";
$vystup = ob_get_contents();
ob_end_flush();

echo "<br /><br />";
$xml = simplexml_load_string($vystup);
var_dump($xml);
-------------------------------------------------------

mi v prohlizeci zobrazi toto:

-------------------------------------------------------
pokus1pokus2pokus3pokus1pokus2pokus3pokus1pokus2pokus3pokus1pokus2poku s3pokus1pokus2pokus3

object(SimpleXMLElement)#1 (1) { ["produkt"]=> array(5) { [0]=> object(SimpleXMLElement)#2 (3) { ["nazev"]=> string(6) "pokus1" ["vyrobce"]=> string(6) "pokus2" ["adresa"]=> string(6) "pokus3" } [1]=> object(SimpleXMLElement)#3 (3) { ["nazev"]=> string(6) "pokus1" ["vyrobce"]=> string(6) "pokus2" ["adresa"]=> string(6) "pokus3" } [2]=> object(SimpleXMLElement)#4 (3) { ["nazev"]=> string(6) "pokus1" ["vyrobce"]=> string(6) "pokus2" ["adresa"]=> string(6) "pokus3" } [3]=> object(SimpleXMLElement)#5 (3) { ["nazev"]=> string(6) "pokus1" ["vyrobce"]=> string(6) "pokus2" ["adresa"]=> string(6) "pokus3" } [4]=> object(SimpleXMLElement)#6 (3) { ["nazev"]=> string(6) "pokus1" ["vyrobce"]=> string(6) "pokus2" ["adresa"]=> string(6) "pokus3" } } }
----------------------------------------------------------

No a me tam vadi ten prvni radek pokus1pokus2........
Nemuze to byt zpusobeny tim, ze to testuji lokálně? Ne tedy na 2 serverech, jak to potom bude ve skutecnosti.
thingwath
Profil
Aha, použij ob_end_clean místo flush.
Ondrra
Profil *
Diky. Jeste mam jeden problem: nevis, proc se mi v tom souboru, kde zobrazim pomoci simplexml data, zobrazují špatně české znaky? Kódování mám v obou souborech nastaveno na windows-1250
thingwath
Profil
Nevím, zkus si zkontrolovat kódování všude, kde s těmi daty přicházíš do styku, ale vážně nemám tušení kde by to mohlo být.
Toto téma je uzamčeno. Odpověď nelze zaslat.