с XML файла в таблицу

383
21 декабря 2016, 04:24

Моя задача, получив XML файл преобразовать в таблицы (в данном случае в три таблицы). Как отобразить все таблицы? В данный момент удалось отобразить только одну.

<?xml version="1.0"?>
<books>
    <book> 
        <title>Heart of a Dog</title>
        <author>Mikhail Bulgakov</author>
        <released>1925</released>
        <country>Russia</country>
        <price>389</price>
        <currency>EUR</currency>
        <discount>0</discount>
        <img>/img/001.jpg</img>
    </book>
    <book> 
        <title>Postmortem</title>
        <author>Patricia Cornwell</author>
        <released>1990</released>
        <country>USA</country>
        <price>320</price>
        <currency>EUR</currency>
        <discount>80</discount>
        <img>/img/002.jpg</img>
    </book>
    <book> 
        <title>The Sign of the Four</title>
        <author>Arthur Conan Doyle</author>
        <released>1890</released>
        <country>United Kingdom</country>
        <price>300</price>
        <currency>EUR</currency>
        <discount>50</discount>
        <img>/img/003.jpg</img>
    </book>
</books>
<?php
$xml = simplexml_load_file('books.xml');
foreach ($xml as $x) {
   $title = $x->title;
   $author = $x->author;
   $country = $x->country;
   $released = $x->released;
   $price = $x->price;
   $currency = $x->currency;
   $discount = $x->discount;
   $image = $x->image;
}
?>
<html>
   <table border="1" cellspacing="0" cellpadding="5" width="250px" >
   <tr>
   <td colspan="2" <td style="background-color:#ffffff;color:#333;">
                 <img src="<?php echo $image; ?>" />
   </td> 
   </tr> <tr>
   <td colspan="2" style="background-color:#ffffff;color:#333;">
                 <?php echo $title . ", " . $author; ?> 
   </td> 
   </tr><tr>
   <td style="background-color:#ffffff;color:#333;">
                 <?php echo "Country: " .$country; ?>
   </td> 
   <td style="background-color:#ffffff;color:#333;">
                 <?php echo "Price: ".$price." ".$currency; ?>
   </td> 
   </tr><tr>
   <td style="background-color:#ffffff;color:#333;">
                <?php echo "Publication date: ".$released; ?> 
   </td>
   <td style="background-color:#ffffff;color:#333;">
                <?php echo "Discount: ".$discount." ".$currency; ?>
   </td>
   </tr>
   </table>
</html>
Answer 1

Вы сначала проходите цикл foreach, а потом 1 раз рисуете таблицу, поэтому 1 строчка и получается. Вам нужно:

1) открыть таблицу, (тег <table>)

2) Пройтись циклом foreach по объекту $xml: в каждой итерации прорисовать строчку (тег <tr>)

3)После завершения всех итераций закрыть таблицу (</table>).

READ ALSO
require после fwrite

require после fwrite

Всем привет! Записываю в файл массив:

337
soap client не может подконнектиться

soap client не может подконнектиться

Все работало, пока в один прекрасный момент не решили поменять все коннекты, в итоге 1с-ник настроил связь через другой порт и дал ссылку вида...

410
Загрузка изображений на сервер

Загрузка изображений на сервер

Возникла проблема с загрузкой изображений на сервер (локальный Openserver)

400
Не отрабатывает скрипт с сервера

Не отрабатывает скрипт с сервера

Здравствуйте, запускаю скрипт из консоли сервера php -f path/constructorphp & Вот скрипт:

299