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();
}
}