2015-05-28 2 views
1

Итак, у меня есть база данных SQL, в которой хранятся игровая информация, такая как содержимое инвентаря, и я пытаюсь отобразить это на веб-странице, используя php.получить определенную строку таблицы из файла XML в php

SQL-материал работает, и у меня есть XML-файл, содержащий все имена и информацию для всех элементов. когда я попытался прочитать XML-файл для печати имен элементов, я получаю ошибки для некоторых записей.

<?php 

$ObjectXML = simpleXML_load_file("xml\objects_types.xml") or die("Error: Cannot Open XML file Object Types"); 

$servername = "localhost"; 
$username = - 
$password = - 

$connection = new mysqli($servername, $username, $password); 

if($connection->connect_error) 
{ 
    die("Connection failed: " . $connection->connect_error); 
} 
echo("Connected Successfully<br>"); 

$sql = "SELECT * FROM lif_1.items WHERE ContainerID = 158;"; 
$result = $connection->query($sql); 
echo('<table style="width:100%">'); 
echo("<tr>"); 
echo(" <th>ID</th>"); 
echo(" <th>ContainerID</th>"); 
echo(" <th>ObjectTypeID</th>"); 
echo(" <th>Quality</th>"); 
echo(" <th>Quantity</th>"); 
echo(" <th>Durability</th>"); 
echo(" <th>MaxDurability</th>"); 
echo("</tr>"); 
foreach($result as $row) 
{ 
    echo("<tr>"); 
    $rowpos = 0; 
    foreach($row as $value) 
    { 
     $rowpos++; 
     echo("<td>"); 
     echo($value); 
     if($rowpos==3) 
     { 
      echo(" Name:"); 
      echo($ObjectXML->row[$value-1]->Name); 
       //print_r($ObjectXML->xpath('//objects_types[@ID="'+$value+'"]')); 
     } 
     echo("</td>"); 
    } 
    echo("</tr>"); 
} 
?> 

на веб-странице (и ошибок): http://86.146.184.166/

XML-файл: http://86.146.184.166/xml/Objects_types.xml

я попытался с помощью XPath Основе раствора на здесь, но, казалось, возвращает пустой массив.

EDIT: выход: (немного трудно читать)

Connected Успешно
ID ContainerID ObjectTypeID Качество Количество Прочность MaxDurability236158644 Имя: Vertato Zonda10020002721581032 Имя:
Примечание: Попытка получить имущество не-объект в D: \ HTTP \ XAMPP \ HTDOCS \ index.php на линии
100100273158361 Название: Iron Bar10060002801581030 Имя:
Примечание: Попытка получить имущество не-объект в D: \ HTTP \ XAMPP \ HTDOCS \ index.php на линии
10028001089158338 Название: Bone Glue523001090158430 Название: Деревянная Gatehouse561001091158390 Название: Первобытный Crucible и Stick562001092158342 Название: Шелк Filaments56500

edit2 - Ответил: D Что я изменил упаковывают кого считает это полезным:

echo(" Name:"); 
    //echo($ObjectXML->row[$value-1]->Name); 
    $xpathobject = $ObjectXML->xpath("row/ID[.=\"$value\"]/parent::*"); 
    //print_r($xpathobject); 
    echo($xpathobject[0]->Name); 
+1

Было бы лучше, если бы вы включили ошибку в само сообщение, чтобы сделать его самосогласованным, чтобы в будущем, даже если связанный контент изменился, он все равно может принести пользу читателям. – ace

ответ

0

row тег в вашем XML содержит только 1029 записи. При вызове этой линии

echo($ObjectXML->row[$value-1]->Name); 

$value когда содержит либо 1032 или 1030 то, конечно, вы пытаетесь получить свойство несуществующего объекта.

Чтобы найти запись SimpleXml узла по значению тега, используйте xpath

$ObjectXML->xpath("row/ID[.=\"$value\"]/parent::*"); 
+0

Ну ладно, так что я могу использовать для поиска по тегу ID, а не по количеству строк? – Hobnob11

+0

@ Hobnob11 См. Мой обновленный ответ. Вы не указали это в своем вопросе, поэтому я не знал, что вы этого хотите. – ihsan

0

Вот пример того, как использовать XPath для получения ID узла по значению, а также пример того, как получить родительский узел:

Смежные вопросы