|
|
|
| Вот часть xml файла:
<item tov_id="719510">
<tov_id rus="Артикул">719510</tov_id>
<tov_name rus="Наименование">Брелок-ручка шариковая серебристый</tov_name>
- <tov_rubr>
<rubr>Пенотека\Original\</rubr>
</tov_rubr>
<tov_color rus="Цвет">серебристый</tov_color>
<tov_upak_vid rus="Вид упаковки" />
<tov_vesed rus="Вес единицы (кг)">0</tov_vesed>
<tov_upak_kol rus="Количество в упаковке">0</tov_upak_kol>
<tov_upak_razm rus="Размер упаковки" />
<tov_vid_nanes rus="Вид нанесения">лазерная гравировка</tov_vid_nanes>
<tov_opis rus="Описание">Металлическая ручка-брелок на карабине очень удобна и всегда под рукой.</tov_opis>
<tov_price rus="Цена">34</tov_price>
- <tov_pic>
- <preview>
<pic>719510_a.jpg</pic>
</preview>
- <small>
<pic>719510_a.jpg</pic>
</small>
- <big>
<pic>719510_a.jpg</pic>
</big>
</tov_pic>
<tov_kol rus="Остаток на складе">0</tov_kol>
<tov_rez rus="Резерв">0</tov_rez>
<tov_str rus="Страница каталога">53</tov_str>
<tov_cat_skid rus="Каталог скидки">PENOTEKA 2008 (Азия)</tov_cat_skid>
<tov_razm rus="Размер товара" />
<tov_brand rus="Брэнд" />
<tov_mat rus="Материал товара">металл</tov_mat>
</item>
|
Собственно - нужно все эти данные перенести в таблицу. Как это реализовать?
Данные из файла беру так:
<?php
$filename = 'penoteka.xml';
$xml = simplexml_load_file($filename);
foreach ($xml->item as $item) {
$tov_id = $item->tov_id;
$tov_name = $item->tov_name;
$tov_rubr = $item->tov_rubr;
$tov_color = $item->tov_color;
$tov_upak_vid = $item->tov_upak_vid;
$tov_vesed = $item->tov_vesed;
$tov_upak_kol = $item->tov_upak_kol;
$tov_upak_razm = $item->tov_upak_razm;
$tov_vid_nanes = $item->tov_vid_nanes;
$tov_opis = $item->tov_opis;
$tov_price = $item->tov_price;
$tov_pic = $item->tov_pic;
$tov_kol = $item->tov_kol;
$tov_rez = $item->tov_rez;
$tov_str = $item->tov_str;
$tov_cat_skid = $item->tov_cat_skid;
$tov_razm = $item->tov_razm;
$tov_brand = $item->tov_brand;
$tov_mat = $item->tov_mat;
echo "
<tr>
<td>",iconv("UTF-8", "windows-1251", $tov_id),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_name),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_rubr),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_color),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_upak_vid),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_vesed),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_upak_kol),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_upak_razm),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_vid_nanes),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_opis),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_price),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_pic),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_kol),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_rez),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_str),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_cat_skid),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_razm),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_brand),"</td>
<td>",iconv("UTF-8", "windows-1251", $tov_mat),"</td>
</tr>";
}
?>
|
Но вот как все это потом записывать в БД - не пойму. Подскажите пожалуйста (примером с кодом).
Заранее большое спасибо. | |
|
|
|
|
|
|
|
для: Dizels
(15.03.2010 в 10:44)
| | А сформировать таблицу при выводе на страницу нельзя разве, зачем ее в базу тулить?
Существует многострочная запись для оператора INSERT, почитайте, сразу поймете как вставить записи в базу. | |
|
|
|
|
|
|
|
для: sim5
(15.03.2010 в 14:03)
| | >А сформировать таблицу при выводе на страницу нельзя разве, зачем ее в базу тулить?
Нужно именно в базу.
Итак, в базу вставил, но появились проблемы при получении данных из xml, подскажите, как исправить.
<tov_pic>
- <preview>
<pic>719510_a.jpg</pic>
</preview>
- <small>
<pic>719510_a.jpg</pic>
</small>
- <big>
<pic>719510_a.jpg</pic>
</big>
</tov_pic>
|
Как вытащить адреса картинок?
А то у меня пустое поле передает, оно впринципе и правильно, так как адреса записаны как вложенные элементы, но вот как их прочитать - не пойму, подскажите пожалуйста.
Как считываю данные показано в первом сообщении данной темы. | |
|
|
|
|
|
|
|
для: sim5
(15.03.2010 в 14:03)
| | Поробовал вытаскивать вот так:
$tov_pic_preview = $item->tov_pic->preview;
|
но чего-то не выходит :( | |
|
|
|
|
|
|
|
для: Dizels
(16.03.2010 в 11:01)
| | Когда парсите, сразу делайте вложенные циклы, чтобы вытянуть вложенные элементы.
Код из вашего первого поста:
<?php
foreach ($xml->item as $item) {
//здесь парсите данные...
$tov_pic = $item->tov_pic;
foreach ( $tov_pic as $pic) {
//здесь вытягиваете вложенные элементы
$pic_preview = $pic->preview;
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Лена
(16.03.2010 в 11:35)
| | Вроде бы вставил, но почему-то не записывает в БД значения, посмотрите, плз в чем ошибка:
<?php
// Соединяемся с базой данных
require_once("config.php");
// Указываем xml-файл
$filename = '1.xml';
// Парсим файл
$xml = simplexml_load_file($filename);
foreach ($xml->item as $item)
{
$tov_pic = $item->tov_pic;
foreach ( $tov_pic as $pic)
{
//здесь вытягиваете вложенные элементы
$pic_preview = $pic->preview;
}
// Преобразуем кодировку
$tov_pic = iconv("UTF-8", "windows-1251", $tov_pic);
$pic_preview = iconv("UTF-8", "windows-1251", $pic_preview);
$y = "INSERT INTO pen VALUES (NULL,
'$pic_preview'');";
if(mysql_query($y))
{
echo "Данные добавлены в БД<br>";
}
}
|
| |
|
|
|
|
|
|
|
для: Dizels
(16.03.2010 в 13:40)
| | Все еще нуждаюсь в Вашей помощи. | |
|
|
|
|
|
|
|
для: Dizels
(16.03.2010 в 13:40)
| | Я вам показала сам принцип, надо было дальше дописать.
У вас внутрь<preview> еще вложен элемент <pic>.
И ошибка у вас -надо вставлять в базу прямо внутри цикла foreach.
Еще одна ошибка - то, что увидела - в этой строке: $y = "INSERT INTO pen VALUES (NULL,
'$pic_preview'');"; Я про конец строки.
Значит,
<?php
foreach ($xml->item as $item){
$tov_pic = $item->tov_pic;
foreach ($tov_pic as $pic){
//здесь вытягиваете вложенные элементы
foreach ($pic as $value){
$ppp = $value->pic;
// Преобразуем кодировку
$tov_pic = iconv("UTF-8", "windows-1251", $tov_pic);
$ppp = iconv("UTF-8", "windows-1251", $ppp);
$y = "INSERT INTO pen VALUES (NULL,'$ppp');";
if(mysql_query($y)){
echo "Данные добавлены в БД<br>";
}
}
}
}
?>
|
Делала быстро, надо тестировать. Если так не получится, надо делать var_dump() на каждом шаге.
Наверное, Вам нужно было бы это не через simplexml_load_file делать... xml-файл можно парсить и по-другому... | |
|
|
|
|
|
|
|
для: Лена
(16.03.2010 в 16:14)
| | >И ошибка у вас -надо вставлять в базу прямо внутри цикла foreach.
Объясните, пожалуйста почему - попробовал вне цикла - вроде правильно работает.
Остальной код работает на УРА! Большое спасибо. | |
|
|
|
|
|
|
|
для: Dizels
(16.03.2010 в 16:36)
| | И последняя не решенная проблема:
пытаюсь записать в БД в рубрику значение Бренд\Original\ - т.е. именно со знаками \
Перед записью выводил данные - все передается, но в таблицу не записывается почему-то.
Чувствую, что это как раз из-за слешей - вопрос такой как все же это записать или же как записать только ту часть которая между слешами, т.е. в данном случае слово Original | |
|
|
|
|
|
|
|
для: Dizels
(16.03.2010 в 17:10)
| | Проблемка все еще не решена :( | |
|
|
|
|