Мне нужно из z_admitad_product_data выбрать post_id, для которых в z_postmeta нет записи с z_postmeta.meta_key = '_wp_attached_file'
для понимания и полной картины
-- Структура таблицы `z_postmeta` -- CREATE TABLE IF NOT EXISTS `z_postmeta` ( `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `post_id` bigint(20) unsigned NOT NULL DEFAULT '0', `meta_key` varchar(255) DEFAULT NULL, `meta_value` longtext, PRIMARY KEY (`meta_id`), KEY `post_id` (`post_id`), KEY `meta_key` (`meta_key`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=215785 ;
-- Структура таблицы `z_admitad_product_data` -- CREATE TABLE IF NOT EXISTS `z_admitad_product_data` ( `post_id` int(11) NOT NULL, `price` decimal(10,2) NOT NULL, `old_price` decimal(10,2) DEFAULT NULL, `picture` varchar(150) NOT NULL, `vendor` varchar(150) NOT NULL, `model` varchar(150) NOT NULL, `id_item` bigint(11) NOT NULL, `url` varchar(500) DEFAULT NULL, `id` varchar(500) DEFAULT NULL, `currencyId` varchar(6) DEFAULT NULL, `offer_id` int(11) DEFAULT NULL, `attr_all` text NOT NULL, UNIQUE KEY `post_id` (`post_id`), KEY `id_item` (`id_item`), KEY `picture` (`picture`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
http://eddnet.org/?p=1580
предпоследний
Его может не быть (точнее записи с таким ид)
Aisamiery, этого не может быть, но
срабатывает не правильно
немного не правильно понял
мне условие когда запись есть тоже нужно обработать
Sitealert, да
спасибо за помощь!
он же $reader
while($reader->read()) { if($reader->nodeType == XMLReader::ELEMENT) { if($reader->localName == 'offer') { print $reader->getAttribute('id')."\n"; $reader->read(); while ($reader->localName != 'offer') { if($reader->nodeType == XMLReader::ELEMENT and $reader->localName == 'param') { print $reader->getAttribute('name')."\n"; if($reader->nodeType == XMLReader::TEXT) { print $reader->value."\n"; } } $reader->read(); } } } }
Спасибо!
Но немного что-то не то
Для
$source = <<<XML <?xml version="1.0"?> <offers> <offer available="true" id="O14112180643" type="vendor.model"><article>640295700752999</article><categoryId>1401000</categoryId><currencyId>RUR</currencyId><description>Комфортные треггинсы, содержат эластан для идеальной посадки, изделие дополнено кружевными вставками, широкий эластичный пояс, узкий крой штанин</description><model>Брюки Tom Tailor 640295700752999</model><modified_time>1482808144</modified_time><name>Брюки Tom Tailor 640295700752999</name><oldprice>4999</oldprice><param name="Пол">Женский</param><param name="Цвет">черный</param><param name="Размер" quantity="2" type="size" unit="EU">34/32</param><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-1b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-2b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-3b.jpg</picture><price>1500</price><topseller>false</topseller><topseller>false</topseller><url>https://ad.admitad.com/g/641a4c7cc1e181aacf623d89878ee1/?i=5&ulp=http%3A%2F%2Ftom-tailor-online.ru%2Fshop%2Fproduct%2Fbrjuki-tom-tailor-640295700752999</url><vendor>tom tailor</vendor><vendorCode>640295700752999</vendorCode></offer> <offer available="true" id="O14112180643" type="vendor.model"><article>640295700752999</article><categoryId>1401000</categoryId><currencyId>RUR</currencyId><description>Комфортные треггинсы, содержат эластан для идеальной посадки, изделие дополнено кружевными вставками, широкий эластичный пояс, узкий крой штанин</description><model>Брюки Tom Tailor 640295700752999</model><modified_time>1482808144</modified_time><name>Брюки Tom Tailor 640295700752999</name><oldprice>4999</oldprice><param name="Пол">Женский</param><param name="Цвет">черный</param><param name="Размер" quantity="2" type="size" unit="EU">34/32</param><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-1b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-2b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-3b.jpg</picture><price>1500</price><topseller>false</topseller><topseller>false</topseller><url>https://ad.admitad.com/g/641a4c7cc1e181aacf623d89878ee1/?i=5&ulp=http%3A%2F%2Ftom-tailor-online.ru%2Fshop%2Fproduct%2Fbrjuki-tom-tailor-640295700752999</url><vendor>tom tailor</vendor><vendorCode>640295700752999</vendorCode></offer> </offers> XML;
результат
$reader->value видит как пустое или его не видит---------- Добавлено 29.12.2016 в 14:56 ----------$xml->read();
забыл после определения нужной ноды, чтобы далее прочитать
error_reporting(-1); header("content-type: text/plain; charset=utf-8"); function xml2assoc(&$xml){ $assoc = array(); $n = 0; while($xml->read()){ if($xml->nodeType == XMLReader::END_ELEMENT) break; if($xml->nodeType == XMLReader::ELEMENT and !$xml->isEmptyElement){ $assoc[$n]['name'] = $xml->name; if($xml->hasAttributes) while($xml->moveToNextAttribute()) $assoc[$n]['atr'][$xml->name] = $xml->value; $assoc[$n]['val'] = xml2assoc($xml); $n++; } else if($xml->isEmptyElement){ $assoc[$n]['name'] = $xml->name; if($xml->hasAttributes) while($xml->moveToNextAttribute()) $assoc[$n]['atr'][$xml->name] = $xml->value; $assoc[$n]['val'] = ""; $n++; } else if($xml->nodeType == XMLReader::TEXT) $assoc = $xml->value; } return $assoc; } $source = <<<XML <?xml version="1.0"?> <offers> <offer available="true" id="O14112180643" type="vendor.model"><article>640295700752999</article><categoryId>1401000</categoryId><currencyId>RUR</currencyId><description>Комфортные треггинсы, содержат эластан для идеальной посадки, изделие дополнено кружевными вставками, широкий эластичный пояс, узкий крой штанин</description><model>Брюки Tom Tailor 640295700752999</model><modified_time>1482808144</modified_time><name>Брюки Tom Tailor 640295700752999</name><oldprice>4999</oldprice><param name="Пол">Женский</param><param name="Цвет">черный</param><param name="Размер" quantity="2" type="size" unit="EU">34/32</param><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-1b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-2b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-3b.jpg</picture><price>1500</price><topseller>false</topseller><topseller>false</topseller><url>https://ad.admitad.com/g/641a4c7cc1e181aacf623d89878ee1/?i=5&ulp=http%3A%2F%2Ftom-tailor-online.ru%2Fshop%2Fproduct%2Fbrjuki-tom-tailor-640295700752999</url><vendor>tom tailor</vendor><vendorCode>640295700752999</vendorCode></offer> <offer available="true" id="O14112180643" type="vendor.model"><article>640295700752999</article><categoryId>1401000</categoryId><currencyId>RUR</currencyId><description>Комфортные треггинсы, содержат эластан для идеальной посадки, изделие дополнено кружевными вставками, широкий эластичный пояс, узкий крой штанин</description><model>Брюки Tom Tailor 640295700752999</model><modified_time>1482808144</modified_time><name>Брюки Tom Tailor 640295700752999</name><oldprice>4999</oldprice><param name="Пол">Женский</param><param name="Цвет">черный</param><param name="Размер" quantity="2" type="size" unit="EU">34/32</param><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-1b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-2b.jpg</picture><picture>http://tom-tailor-online.ru/images/P0/02/07/98/99/brjuki-tom-tailor-chernyjj-640295700752999-3b.jpg</picture><price>1500</price><topseller>false</topseller><topseller>false</topseller><url>https://ad.admitad.com/g/641a4c7cc1e181aacf623d89878ee1/?i=5&ulp=http%3A%2F%2Ftom-tailor-online.ru%2Fshop%2Fproduct%2Fbrjuki-tom-tailor-640295700752999</url><vendor>tom tailor</vendor><vendorCode>640295700752999</vendorCode></offer> </offers> XML; $xml = new XMLReader(); $xml->XML($source); $assoc = xml2assoc($xml); print_r($assoc);
нужно не в массив складывать, а по одному элементу массива обрабатывать
как то никак не соображу как это реализовать использую приведенную функцию
rereg, все что в этом примере можно через simpleXML одним махом проще сделать
в том и дело, что мне не нужно складывать все в один массив (xml большой)
нужно работать по элементно---------- Добавлено 29.12.2016 в 12:32 ----------еще не могу понять сам прием
как if($xml->nodeType == XMLReader::TEXT) $assoc = $xml->value;
в нужные [$n]['val'] пишется текстовое значение без их указания ?
Евгений Русаченко, это были ошибки не пхп, а сервера
сначала что памяти мало
потом когда я выделил 1024 из 1024 доступных на вдс, то что-то с дальнейшей читаемостю файла (тоже ошибка сервера)
урл на xml в личку кинул