Externe Daten in Tabelle darstellen

Schaddi

Grünschnabel
Hallo zusammen.

Ich wende mich an Euch da ich keine Ahnung von php habe.

Ich lade 6 verschiedene Daten (oben) von einer anderen Seite und würde sie gern in der Tabelle (unten) darstellen - sortiert nach Namen. Die Ladezeit kann etwas dauern wegen der Abfrage der Daten. nom.php

Vielleicht weiss einer spontan eine Lösung - auch für das Problem mit den Umlauten.


Code einer einzelnen Datenabfrage:
PHP:
<?php
ini_set("user_agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 

$xml = new SimpleXMLElement(file_get_contents('http://armory.wow-europe.com/guild-info.xml?r=Der+abyssische+Rat&n=Nomaden+des+Donners&p=1'));

foreach ($xml->guildInfo->guild->members->character as $member){
    echo $member['name']."\n";
}  

?>

LG Euer Schaddi
 
Zuletzt bearbeitet:
Auch hallo,
HTML:
<table>
 <?php
foreach($xml->guildInfo->guild->members->character as $member)
{
  echo '<tr>
<td>'.$member['name'].'</td>
<td>'.$member['name2'].'</td>
</tr>';
}
?>
</table>

So oder so ähnlich.
Konnte jetzt aber leider nicht genau rauskriegen, wo dein Problem ist...

LG
 
Hi,

das Problem mit den Umlauten entsteht wahrscheinlich dadurch, dass Blizzard die XML-Daten in UTF-8 kodiert, duaber wahrscheinlich kein UTF-8 ausgibst. Tutorials, wie man seine PHP-Seite darauf umstellt, gibbet ne Menge einfach mal googeln, das wichtigste für die Ausgabe ist diese Zeile:
PHP:
header('Content-Type: text/html; charset=utf-8');
Falls du (aus was für Gründen auch immer) nicht auf UTF-8 umsteigen willst, bleibt nur das konvertieren der Daten in einen anderen Zeichensatz, Stichwort: utf8_decode().

Die passende Lösung zur Ausgabe der Daten hat schon mein Vorredner/Schreiber genannt, ich hoffe allerdings für dich, dass du eine Genehmigung von Blizzard hast, die Daten aus der Seite auszulesen, denn normalerweise ist es illegal, selektiv Daten aus einer fremden Website auszulesen, es sei denn, die Daten sind zur separaten Veröffentlichung vorgesehen (RSS Feeds z.B.). (!)
 
Zuletzt bearbeitet:
Hallo Emptynick.

Deinen Vorschlag habe ich gleich ausprobiert und er funktioniert - mit der Einschränkng das nur ein einziger Character, in diesem Falle Ozzy, ausgegeben wird. Es sind aber über 70.

Was kann dort noch vergessen worden sein?
Zudem steht der phpcode immer noch oben auf der Seite - den würde ich gern weg haben. ;)

Zu dem hervorragenden Beitrag von EvilO meinen Respekt. Einwand- und Fehlerfrei. Hier sind wahre Götter am Werk :)

LG Euer Schaddi
 
Zuletzt bearbeitet:
Bitte nochmal den aktuellen Quellcode hier reinstellen, sonst kann man dir kaum helfen, bei diesem Problem.
 
Hiho,

öhhm, folgender Code ergibt bei mir definitiv nicht nur einen Namen :D:
PHP:
<table>
 <?php
ini_set("user_agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
$xml = new SimpleXMLElement(file_get_contents('http://armory.wow-europe.com/guild-info.xml?r=Der+abyssische+Rat&n=Nomaden+des+Donners&p=1'));
foreach($xml->guildInfo->guild->members->character as $member)
{
  echo '<tr>
<td>'.$member['name'].'</td>
<td>'.$member['name2'].'</td>
</tr>';
}
?>
</table>

Genauso wird nicht noch irgendein Code angezigt oder sonst was :confused:, und der Code ist 1:1 von oben kopiert :)

Lg
 
Bitte nochmal den aktuellen Quellcode hier reinstellen.

Gern:
PHP:
<head>
<title>Arsenal</title>
</head>
<body text="#ff33ff" body bgcolor="#000000">

<table>
<table border="1" bgcolor="#000000" align="center">
  <colgroup>
    <col width="100">
    <col width="100">
    <col width="100">
    <col width="100">
    <col width="100">
    <col width="100">
  </colgroup>

<tr>
<th>Name</th>
<th>Klasse</th>
<th>Rasse</th>
<th>Geschlecht</th>
<th>Level</th>
<th>Gildenrang</th>
</tr>
<table>
 <?php
header('Content-Type: text/html; charset=utf-8'); 
ini_set("user_agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
$xml = new SimpleXMLElement(file_get_contents('http://armory.wow-europe.com/guild-info.xml?r=Der+abyssische+Rat&n=Nomaden+des+Donners&p=1'));
foreach($xml->guildInfo->guild->members->character as $member)
{
  echo '<tr>
<td>'.$member['name'].'</td>
<td>'.$member['race'].'</td>
<td>'.$member['class'].'</td>
<td>'.$member['gender'].'</td>
<td>'.$member['level'].'</td>
<td>'.$member['rank'].'</td>
</tr>';
}
?>
</table>

Ja korrekt.
Ich hatte den Code vorher nur ergänzt - offenbar nicht vollständig richtig.
Der code ist ausgeblendet, die Umlaute korrekt - nun müssen die abgerufenen Daten nur noch von links nach mittig in die Tabelle und sortiert nach Namen.
Wenn man euch nicht hätte.... :rolleyes: so langsam weiss ich was ich hier lerne.
 
Zuletzt bearbeitet:
Sicher das die Umlaute das einzige Problem sind? :D
Normalerweise müsste der späte Aurfruf von header() doch nen Fehler auslösen?

lg
 
Ich hatte noch ein wenig gesucht und nun ist alles gelöst.
Vielen Dank für Eure sehr gute unterstützung.

PHP:
<head>
<title>Nomaden Arsenal</title>
</head>
<body text="#ff33ff" body bgcolor="#000000">

<table>
<table border="1" bgcolor="#000000" align="center">
  <colgroup>
    <col width="100">
    <col width="100">
    <col width="100">
    <col width="100">
    <col width="100">
    <col width="100">
  </colgroup>

<tr>
<th>Name</th>
<th>Klasse</th>
<th>Rasse</th>
<th>Geschlecht</th>
<th>Level</th>
<th>Gildenrang</th>
</tr>

<?php
header('Content-Type: text/html; charset=utf-8'); 
$url = 'http://armory.wow-europe.com/guild-info.xml?r=Der+abyssische+Rat&n=Nomaden+des+Donners&p=1'; 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-Language: de-de, de;"));
$content = curl_exec ($ch);
curl_close ($ch);

$xml = new SimpleXMLElement($content);
foreach($xml->guildInfo->guild->members->character as $member)
{
  echo '<tr>
<td>'.$member['name'].'</td>
<td>'.$member['race'].'</td>
<td>'.$member['class'].'</td>
<td>'.$member['gender'].'</td>
<td>'.$member['level'].'</td>
<td>'.$member['rank'].'</td>
</tr>';
}
?>

LG Euer Schaddi :-)
 
Zurück