Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: XML с повторяющимися тегами
 
 автор: Fest   (26.02.2012 в 12:36)   письмо автору
 
 

Есть 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... и т.д.

  Ответить  
 
 автор: cheops   (26.02.2012 в 13:45)   письмо автору
 
   для: Fest   (26.02.2012 в 12:36)
 

>$metric = $offer->metric;
Эту строку тоже нужно преобразовать в цикл

  Ответить  
 
 автор: Fest   (26.02.2012 в 16:00)   письмо автору
 
   для: 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 при запросе к базе данных?

  Ответить  
 
 автор: cheops   (26.02.2012 в 17:17)   письмо автору
 
   для: Fest   (26.02.2012 в 16:00)
 

А в какой форме вы храните этот параметр в базе данных? Одна строка - один параметр? Через запятую? В любом случае будет удобно воспользоваться массивами и функцией implode().

  Ответить  
 
 автор: Fest   (29.10.2012 в 18:50)   письмо автору
 
   для: 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 |
------------------------
Т.е. получается - цикл в цикле.
Но как построить запрос к базе данных? - не понимаю.
Может есть какой-нибудь обходной путь?

  Ответить  
 
 автор: mihdan   (30.10.2012 в 00:19)   письмо автору
 
   для: Fest   (29.10.2012 в 18:50)
 

Соберите массив в строку при помощи implode(',', $offer->metric) и подставьте результат в запрос

  Ответить  
 
 автор: Fest   (30.10.2012 в 15:41)   письмо автору
 
   для: 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')"); 


или я что-то совсем не понимаю

  Ответить  
 
 автор: mihdan   (31.10.2012 в 11:32)   письмо автору
 
   для: Fest   (30.10.2012 в 15:41)
 

<?php
$sql 
="INSERT INTO `plus`  (`mes`, `color`) VALUES ('" implode(','$offer->metric) . "', '{$color}')";
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования