Zdravím,
mám script na xml feed který se napojí k dodavateli a pomocí xml importuje data do mé sql ale nastal problém že když script nečekaně zastaví a pustí se znovu narazí na produkt který tam již přidaný je a hodí mi chybu na duplicitu.
public function zpracujXmlZbozi($xml) {
foreach ($xml->StoItem as $item) {
$idKat = $this->connection->query(sprintf("SELECT product_id FROM product WHERE code = '%s' LIMIT 1", $item->Code))->fetch();
$nazev = $idKat ? $this->connection->query(sprintf("SELECT title FROM product WHERE product_id = %s LIMIT 1", $idKat->product_id))->fetch() : false;
if (!$nazev) {
Debugger::log($item->Id . ': ' . $item->Name, 'import');
$dataCatalog = [
'product_id' => intval($item->Id),
'code' => (string) ($item->Code),
'url' => Strings::webalize($item->Name),
'title' => (string) $item->Name,
'short_description' => (string) $item->Note,
'description' => (string) $item->Note,
'price' => intval($item->PriceEU),
'old_price' => intval($item->PriceDea),
'rating_sum' => 0,
'ratings' => 0,
'stock' => intval($item->QtyFree),
'images_count' => 1,
'hidden' => 0,
'producer' => 'Spokey',
];
$this->connection->query('INSERT INTO product', $dataCatalog);
$lastId = $this->connection->getInsertId();
/* katerogie */
foreach (['Level1', 'Level2', 'Level3'] AS $_level) {
$tmp = explode(' ', $item->SPresentTree->{$_level});
unset($tmp[0]);
$level = implode(' ', $tmp);
$kategorieId = $this->connection->query(sprintf('SELECT category_id FROM category WHERE title = "%s" LIMIT 1', $level))->fetch();
if ($kategorieId) {
$dataKat = [
'product_id' => $lastId,
'category_id' => $kategorieId->category_id
];
$this->connection->query('INSERT INTO product_category', $dataKat);
}
}
if ($item->ImgUrl) {
$count = count(\Nette\Utils\Finder::findFiles(intval($item->Id) . '_*.jpg')->in($this->slozka));
$filename = intval($item->Id) . '_1.jpg';
if (!file_exists($this->slozka . '/' .$filename)) {
$components = $this->slozka . '/' . $lastId;
mkdir($components, 0777, true);
copy($item->ImgUrl, $this->slozka . $lastId . '/' . $filename);
$count++;
$this->connection->query('UPDATE product SET images_count= ' . $count . ' WHERE product_id = ' . $lastId);
}
$this->createThumb($item->Id, $this->slozka . $lastId . '/' . $filename);
}
}
Kde mám chybu? Jelikož tam mám podmínku if (!$nazev) která by měla že pokud je název stejný mělo by to přejít na else ale ono to nedělá a já nevím proč?
Díky všem za pomoc