|
|
|
| Есть xml файл где некоторые теги повторяются -
.....
<offers>
<offer>
<color>синий</color>
<metric>1</metric>
<metric>2</metric>
</offer>
<offer>
<color>Белый</color>
<metric>5</metric>
<metric>6</metric>
</offer>
</offers>
.....
Я делаю следующее -
<?
$xml = simplexml_load_file($filename);
foreach ($xml->offers->offer as $offer)
{
$color = $offer->color;
$metric = $offer->metric;
$insert_new_client = mysql_query("insert into plus (mes,color
) values
('$metric','$color')");
}
?>
|
В базу добавляется содержимое тега <metric> - 1 и 5, т.е. по одной строке.
Вопрос - как добавить всё содержимое всех тегов <metric>. В - первую ячейку 1 и 2,
во вторую 5 и 6... и т.д. | |
|
|
|
|
|
|
|
для: Fest
(26.02.2012 в 12:36)
| | >$metric = $offer->metric;
Эту строку тоже нужно преобразовать в цикл | |
|
|
|
|
|
|
|
для: cheops
(26.02.2012 в 13:45)
| | зациклил - поучилось - скрипт работает
<?
$xml = simplexml_load_file($filename);
foreach ($xml->offers->offer as $offer)
{
$color = $offer->color;
foreach ($offer->metric as $metric)
{
echo $metric;
}
$insert_new_client = mysql_query("insert into plus (mes,color
) values
('$metric','$color')");
}
?>
|
но как зациклить $metric при запросе к базе данных? | |
|
|
|
|
|
|
|
для: Fest
(26.02.2012 в 16:00)
| | А в какой форме вы храните этот параметр в базе данных? Одна строка - один параметр? Через запятую? В любом случае будет удобно воспользоваться массивами и функцией implode(). | |
|
|
|
|
|
|
|
для: cheops
(26.02.2012 в 17:17)
| | Нужно загрузить эти данные в одну ячейку, через запятую.
должно получиться так -
-----------------------
синий | 1, 2 |
-----------------------
белый | 5, 6 |
------------------------
<?
$xml = simplexml_load_file($filename);
foreach ($xml->offers->offer as $offer)
{
$color = $offer->color;
foreach ($offer->metric as $metric)
{
echo $metric;
}
$insert_new_client = mysql_query("insert into plus (mes,color
) values
('$metric','$color')");
}
?>
|
если делать так, то -
-----------------------
синий | 2 |
-----------------------
белый | 6 |
------------------------
этот кусок кода -
$color = $offer->color;
foreach ($offer->metric as $metric)
{
echo $metric;
}
|
выводит правильно - в одну строку -
-----------------------
синий | 1, 2 |
-----------------------
белый | 5, 6 |
------------------------
Т.е. получается - цикл в цикле.
Но как построить запрос к базе данных? - не понимаю.
Может есть какой-нибудь обходной путь? | |
|
|
|
|
|
|
|
для: Fest
(29.10.2012 в 18:50)
| | Соберите массив в строку при помощи implode(',', $offer->metric) и подставьте результат в запрос | |
|
|
|
|
|
|
|
для: mihdan
(30.10.2012 в 00:19)
| | массив я собрал таким образом -
$color = $offer->color;
foreach ($offer->metric as $metric)
{
echo $metric;
}
|
а вот запрос к базе за рамками цикла
нужно что-то типа такого -
$insert_new_client = mysql_query("insert into plus (mes,color
) values
(' foreach ($offer->metric as $metric)
{
echo $metric;
}','$color')");
|
или я что-то совсем не понимаю | |
|
|
|
|
|
|
|
для: Fest
(30.10.2012 в 15:41)
| |
<?php
$sql ="INSERT INTO `plus` (`mes`, `color`) VALUES ('" . implode(',', $offer->metric) . "', '{$color}')";
?>
|
| |
|
|
|