Pokud chcete úspěšný eshop, budete pravděpodobně párovat u zboží kategorie s heurekou. K tomu potřebujete ideálně do databáze dostat všechny heureka kategorie, a následně je buď u kategorií nebo u zboží spárovat. Budu se nyní zabývat tím, jak dostat celý strom kategorií na lokální server do databáze.
V databázi předpokládám tabulku s názvem heureka_kategorie a s jediným sloupcem pojmenovaným nazev. Níže uvedený kód načte všechny kategorie heureky a uloží je do dočasného XML souboru na disku. Následně tento soubor zpracuje a všechny kategorie uloží do databáze, přičemž je ukládá jako textový řetězec včetně celé cesty, tzn. názvy kategorií odděleny oddělovačem |.
$file="http://www.heureka.cz/direct/xml-export/shops/heureka-sekce.xml"; $ch = curl_init($file); $fp = @fopen("tmp/heureka.xml", "w"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); function vetev($PARENT) { global $dbh; if (isset($PARENT->CATEGORY)) { foreach($PARENT->CATEGORY as $CHILD) { $CATEGORY_FULLNAME = isset($CHILD->CATEGORY_FULLNAME) ? $CHILD->CATEGORY_FULLNAME : ""; $CATEGORY_FULLNAME = trim(str_replace("Heureka.cz |", "", $CATEGORY_FULLNAME)); if ($CATEGORY_FULLNAME) $dbh->query("insert into heureka_kategorie (nazev) values ('".$CATEGORY_FULLNAME."')"); vetev($CHILD); } } } if (file_exists("tmp/heureka.xml")) { $xml = file_get_contents("tmp/heureka.xml"); $HEUREKA = new SimpleXMLElement($xml); try { $dbh = new PDO("mysql:host=localhost;dbname=nazevdatabaze;charset=utf8",'jmeno','heslo'); $dbh->query("truncate table heureka_kategorie"); vetev($HEUREKA); $dbh = null; } catch (PDOException $e) { echo "Error!: " . $e->getMessage() . "<br/>"; exit(); } }