# Mitgliederliste wow homepage



## Sorgonas (8. Januar 2014)

Hallo an alle,

ich bin hier langsam am verzweifeln, ich versuche meine Mitglieder-Liste zu ändern und zwar, das 4 immer nebeneinander angezeigt werden, und das wichtigste, das die Zahlen die von 
WOW-Amory ausgegeben werden (1=Paladin ...) nicht als Zahl sondern mit der Bezeichnung ausgegeben werden. zur Zeit habe ich es gerade mal geschafft, das die Klassen in den 
verschiedenen Farben schon mal angezeigt werden, damit man diese unterscheiden kann. Ich hoffe das mir da jemand mit weiter helfen kann. Hier ist meine Seite mal zum ansehen.
Danke für Eure Ratschläge und Lösungen im vorraus.



```
<meta charset="ISO-8859-1" />
	<meta name="description" content="" />
	<meta name="author" content="" />
	<meta name="keywords" content="" />
	<link href="mitglieder.css" type="text/css" rel="stylesheet" />

<?php



// Konfiguration
$guildname		= 'Familia de Lux';
$realmname		= 'Lothar';
$guildfields	= 'members';	// Möglich sind: achievements, members

// Auslesen der Gildendaten.
$requestURL = 'http://eu.battle.net/api/wow/guild/'.rawurlencode($realmname).'/'.rawurlencode($guildname).'?fields='.$guildfields;

$response = @file_get_contents($requestURL, true);

// Prüfe Rückgabe
if (strpos($http_response_header[0], '200'))
{
	$decode = json_decode($response, true);
	echo '<p align="center"><table border="1"><tr>';
	echo '<td><h2><font color="#990000">Gildeninformationen</font></h2></td>';
	echo "<td><p align='center'><img src='logo.png' width='50' height='50'></p></td>";
	echo '<tr><td><b><font color="#33FF00">Gildenname:</b></td><td> '.$decode['name'].'</font><br /></td></tr>';
	echo '<tr><td><b><font color="#33FF00">Realm:</b></td><td> '.$decode['realm'].'</font><br /></td>';
	echo '<tr><td><b><font color="#33FF00">Gildenstufe:</b></td><td> '.$decode['level'].'</font><br /></td>';
	echo '<tr><td><b><font color="#33FF00">Mitgliederanzahl:</b></td><td> '.count($decode['members']).'</font><br /></td>';
	echo '<tr><td><b><font color="#33FF00">Gildenerfolgspunkte:</b></td><td> '.$decode['achievementPoints'].'</font><br /></td>';
	echo '</tr></table>';


?>

<?php
	echo '<table id="Tabelle" border="1"><tr></p>';
	foreach ($decode['members'] as $memberItem)
	{
		$member = $memberItem['character'];

 	switch($member["class"]) {
 	case "1":
 	$color = "#C69B6D";
 	break;
 	case "2":
 	$color = "#F48CBA";
 	break;
 	case "3":
 	$color = "#AAD372";
 	break;
 	case "4":
 	$color = "#FFF468";
 	break;
 	case "5":
 	$color = "#F0EBE0";
 	break;
 	case "6":
 	$color = "#C41E3B";
 	break;
 	case "7":
 	$color = "#2359FF";
 	break;
 	case "8":
 	$color = "#68CCEF";
 	break;
 	case "9":
 	$color = "#9382C9";
 	break;
 	case "10":
 	$color = "#00FFBA";
 	break;
 	case "11":
 	$color = "#FF7C0A";
 	break;
 	default:
 	$color = "white";
	}


		echo '<p align="center"><table border="1" style=\'background-color:'.$color.'\'><tr><td><h3>'.htmlentities($member['name'], ENT_COMPAT, 'UTF-8').'</h3></td><td></td></tr>';

		echo '<tr><td><b>Klasse:</b></td><td> '.$member['class'].'</td></tr><br />';
		echo '<tr><td><b>Level:</b></td><td> '.$member['level'].'</td></tr><br />';
		echo '<tr><td><b>Volk:</b></td><td> '.$member['race'].'</td></tr><br />';


		$memberfields = 'talents';

		$requestURL = 'http://eu.battle.net/api/wow/character/'.rawurlencode($realmname).'/'.urlencode(html_entity_decode($member['name'], ENT_COMPAT, 'UTF-8')).'?fields='.$memberfields;

		$response = @file_get_contents($requestURL, true);

		// Prüfe Rückgabe
		if (strpos($http_response_header[0], '200'))
		{
			$decodeMember = json_decode($response, true);


			echo '<tr><td><b>Erfolgspunkte:</b></td><td> '.$decodeMember['achievementPoints'].'</td></tr><br />';
		echo '</tr></table></p>';
		}
	}
}
?>
```


----------



## spectrumizer (8. Januar 2014)

```
$classNames = array("Paladin", "Schurke", "Hexenmeister", "...");
$classColors = array("#12abef", "#543210", "...");

// ...

$classId = (int) $member["class"] - 1;
echo "<font color='{$classColors[$classId]}'>{$classNames[$classId]}</font><br>";
```


----------



## Sorgonas (9. Januar 2014)

spectrumizer schrieb:


> ```
> $classNames = array("Paladin", "Schurke", "Hexenmeister", "...");
> $classColors = array("#12abef", "#543210", "...");
> 
> ...



*Vielen Dank*, mit einer kleinen änderung hat es super gepasst. Echt klasse.

```
$classNames = array("Krieger", "Paladin", "J&auml;ger", "Schurke", "Prister", "Todesritter", "Schamane", "Magier", "Hexenmeister", "M&ouml;nch", "Druide");
	$classRace = array("Mensch", "Orc", "Zwerk", "Nachtelf", "Untoter", "Taure", "Gnom", "Troll", "Goblin", "Blutelf", "Draenei", "", "", "", "", "", "", "", "", "", "", "Worg", "", "", "Pandare");

// ...

$classId = (int) $member["class"] - 1;
$raceId = (int) $member["race"] -1;



		echo '<p align="center"><table style=\'background-color:'.$color.'\'><tr><td><h3>'.htmlentities($member['name'], ENT_COMPAT, 'UTF-8').'</h3></td><td></td></tr>';

		echo '<tr><td><b>Klasse:</b></td><td> '; echo '<font >'.$classNames[$classId].'</font></td></tr><br />';
		echo '<tr><td><b>Level:</b></td><td> '.$member['level'].'</td></tr><br />';
		echo '<tr><td><b>Volk:</b></td><td> '; echo '<font>'.$classRace[$raceId].'</font></td></tr><br />';
```

Ich bekomme leider nur immer noch nicht das mit meiner Tabelle hin, das ich pro Reihe 4 Member angezeigt bekomme, hast du dafür evtl. auch eine Idee oder Irgend jemand?

Danke schon mal im vorraus.


----------



## ZAM (9. Januar 2014)

Du solltest den Abruf übrigens dringend cachen, weil du die Abfrage ohne Header über file_get_contents machst und keinen API-Key verwendest. Damit riskierst du, dass der Schnittstellenserver deine Kiste irgendwann temporär bei zu vielen Requests blockiert. Das beschleunigt vor allem auch den Abruf und die Tests 


```
<html>
<head>
	<meta charset="ISO-8859-1" />
	<meta name="description" content="" />
	<meta name="author" content="" />
	<meta name="keywords" content="" />
	<link href="mitglieder.css" type="text/css" rel="stylesheet" />
</head>
<body>
<?php
// Konfiguration
$sGuildName  = 'Familia de Lux';
$sRealmName  = 'Lothar';
$sGuildFields= 'members'; // Möglich sind: achievements, members
$iMaxEntries = 4; // Anzahl der maximalen Einträge pro Zeile
$sMemberFields = 'talents';
$sCacheFile = 'cache.sth';
$iCacheTimeout = 3600; // Cache-Timeout in Sekunden
$sAPIURL = 'http://eu.battle.net/api/wow/';
$aGuildData = array();

$aClassNames = array('Krieger', 'Paladin', 'J&auml;ger', 'Schurke', 'Prister', 'Todesritter', 'Schamane', 'Magier', 'Hexenmeister', 'M&ouml;nch', 'Druide');
$aClassRaces = array('Mensch', 'Orc', 'Zwerk', 'Nachtelf', 'Untoter', 'Taure', 'Gnom', 'Troll', 'Goblin', 'Blutelf', 'Draenei', '', '', '', '', '', '', '', '', '', '', 'Worg', '', '', 'Pandare');
$aClassColors = array('#ffffff','#C69B6D', '#F48CBA','#AAD372','#FFF468','#F0EBE0','#C41E3B','#2359FF','#68CCEF','#9382C9','#00FFBA','#FF7C0A');
$sRawEncodedRealm = rawurlencode($sRealmName);
$sRawEncodedGuild = rawurlencode($sGuildName);
$sResponse = null;
$sOutput = '';

if( !is_file($sCacheFile) || (time() - filemtime($sCacheFile)) > $iCacheTimeout || filesize($sCacheFile) == 0 ) {

    // Auslesen der Gildendaten.
    $sRequestURL = $sAPIURL . 'guild/'.$sRawEncodedRealm.'/'.$sRawEncodedGuild.'?fields='.$sGuildFields;
    $sResponse = @file_get_contents($sRequestURL, true);
    if (strpos($http_response_header[0], '200')) {

        $http_response_header = null;
        $aRawData = json_decode($sResponse, true);
        $aGuildData = $aRawData;
        unset($aGuildData['members']);

        foreach ($aRawData['members'] as $aMemberItem )
        {
            $sCharName = $aMemberItem['character']['name'];
            $sCharResponse = @file_get_contents(
                $sAPIURL . 'character/'.$sRawEncodedRealm.'/'.urlencode(html_entity_decode($sCharName, ENT_COMPAT, 'UTF-8')).'?fields='.$sMemberFields
                , true
            );

            // Prüfe Rückgabe
            if (strpos($http_response_header[0], '200')) {

                $aDecodeMember = json_decode($sCharResponse, true);
                $aGuildData['members'][] = json_decode($sCharResponse, true);
            }
        }

        file_put_contents($sCacheFile, json_encode($aGuildData));
        unset($aGuild, $decodeMember, $aRawData, $http_response_header, $sCharResponse, $sResponse);
    }
} else {
    $aGuildData = json_decode(file_get_contents($sCacheFile), true);
}

// Prüfe Rückgabe
if ( sizeof($aGuildData) ) {

    $sOutput .= '<p align="center"><table border="1"><tr>';
    $sOutput .= '<td><h2><font color="#990000">Gildeninformationen</font></h2></td>';
    $sOutput .= "<td><p align='center'><img src='logo.png' width='50' height='50' /></p></td>";
    $sOutput .= '<tr><td><b><font color="#33FF00">Gildenname:</b></td><td> '.$aGuildData['name'].'</font><br /></td></tr>';
    $sOutput .= '<tr><td><b><font color="#33FF00">Realm:</b></td><td> '.$aGuildData['realm'].'</font><br /></td>';
    $sOutput .= '<tr><td><b><font color="#33FF00">Gildenstufe:</b></td><td> '.$aGuildData['level'].'</font><br /></td>';
    $sOutput .= '<tr><td><b><font color="#33FF00">Mitgliederanzahl:</b></td><td> '.count($aGuildData['members']).'</font><br /></td>';
    $sOutput .= '<tr><td><b><font color="#33FF00">Gildenerfolgspunkte:</b></td><td> '.$aGuildData['achievementPoints'].'</font><br /></td>';
    $sOutput .= '</tr></table></p>';

    $sOutput .= '<div>';
    $iColumn = 0;

    foreach ($aGuildData['members'] as $aMemberItem ) {
			
		$sOutput .= '<div style="float:left">';
		$sOutput .= '<table style=\'background-color:'.$aClassColors[$aMemberItem['class']].'\'><tr><td colspan="2"><h3>'.htmlentities($aMemberItem['name'], ENT_COMPAT, 'UTF-8').'</h3></td></tr>';
		$sOutput .= '<tr><td><b>Klasse:</b></td><td> '; 
		$sOutput .= '<font >'.$aClassNames[$aMemberItem['class'] - 1].'</font></td></tr>';
		$sOutput .= '<tr><td><b>Level:</b></td><td> '.$aMemberItem['level'].'</td></tr>';
		$sOutput .= '<tr><td><b>Volk:</b></td><td> '; 
		$sOutput .= '<font>'.$aClassRaces[$aMemberItem['race'] - 1].'</font></td></tr>';
		$sOutput .= '<tr><td><b>Erfolgspunkte:</b></td><td> '.$aMemberItem['achievementPoints'].'</td></tr>';
		$sOutput .= '</tr></table>';
		$sOutput .= '</div>';

        $iColumn++;
        if( $iColumn > $iMaxEntries-1 ) {
            $sOutput .= '<div style="clear:both"></div>';
            $iColumn = 0;
        }
    }
    $sOutput .= '</div>';    
}
echo $sOutput;
unset($aGuildData, $aMemberItem, $aMemberItem, $sOutput);
?>
</body></html>
```


----------



## Sorgonas (9. Januar 2014)

WOW, das sieht viel aufgeräumter aus nun als bei mir ;-) Leider bekomme ich eine Fehlermeldung, wenn ich deinen Code benutze.
Kann es sein, das ich noch eine Datei nun erstellen muss bei mir? Ja ich bin noch recht neu im Programmieren und gestehe, ich habe
nicht die allergrösste Ahnung. Daher bin ich für jegliche Hilfe dankbar.
Dies bekomme ich angezeigt:


> 3600) { // Auslesen der Gildendaten. $requestURL = 'http://eu.battle.net/api/wow/guild/'.$sRawEncodedRealm.'/'.$sRawEncodedGuild.'?fields='.$guildfields; $response = @file_get_contents($requestURL, true); if (strpos($http_response_header[0], '200')) { $http_response_header = null; $aRawData = json_decode($response, true); $aGuildData = $aRawData; unset($aGuildData['members']); foreach ($aRawData['members'] as $memberItem ) { $sCharName = $memberItem['character']['name']; $charResponse = @file_get_contents( 'http://eu.battle.net/api/wow/character/'.$sRawEncodedRealm.'/'.urlencode(html_entity_decode($sCharName, ENT_COMPAT, 'UTF-8')).'?fields='.$sMemberFields , true ); // Prüfe Rückgabe if (strpos($http_response_header[0], '200')) { $decodeMember = json_decode($charResponse, true); $aGuildData['members'][] = json_decode($charResponse, true); } } file_put_contents($cache_file, json_encode($aGuildData)); unset($aGuild, $decodeMember, $aRawData, $http_response_header, $charResponse, $response); } } else { $aGuildData = json_decode(file_get_contents($cache_file), true); } // Prüfe Rückgabe if ( sizeof($aGuildData) ) { echo ' ​
> *Gildeninformationen*
> 
> 
> ...


'; $col++; if( $col > 3 ) { echo ' '; $col = 0; } } echo ''; unset($aGuildData, $member, $memberItem); } ?>


----------



## kaepteniglo (9. Januar 2014)

Ich glaube hier


```
unset($aGuild, $[size=2]decodeMember[/size][size=2], $aRawData, $http_response_header, $charResponse, $response);[/size]
```

hat sich ein Fehler eingeschlichen. Versuche mal:

```
unset($aGuild, $decodeMember, $aRawData, $http_response_header, $charResponse, $response);
```


----------



## ZAM (9. Januar 2014)

Sorry, passiert. Hätte ich Lust und vor allem Zeit, hätte ich dir die ganzen Inline-Sachen rausgeschmissen, die Tabellen und die direkten echos, das ganze etwas mehr aufgeräumt, Variablen neu benannt und an der Performance geschraubt.  So war es nur schnell kopiert und die Anpassungen aus dem Kopf ohne Tests runtergerotzt.



> [font="arial, verdana, tahoma, sans-serif"]Kann es sein, das ich noch eine Datei nun erstellen muss bei mir?[/font][font="arial, verdana, tahoma, sans-serif"]


[/font]
[font="arial, verdana, tahoma, sans-serif"]Möglich - ist abhängig von den Server- bzw. Verzeichnisrechten.  Die braucht auf jeden Fall Schreib-Rechte.[/font]


----------



## Sorgonas (9. Januar 2014)

Vielen Dank auch für deine Mühe, 
ja hab gesehen das einige Bezeichnungen geändert sind und ich diese wieder richtig benennen muss.
Hoffe das es dann funktioniert.
Aber schon mal vielen Dank wie gesagt für eure Mühe und hilfe. 
*Ihr seid einfach spitze

*Hab nun noch mal hier nachgesehen und nur den korrigierten Fehler hier korrigiert, da ich gesehen habe, das ja neue verknüpfungen 
erstellt wurde (was man vermutlich anders nennt).

Diesen Fehler hier bekomme ich nun noch angezeigt:


> 3600) { // Auslesen der Gildendaten. $requestURL = 'http://eu.battle.net/api/wow/guild/'.$sRawEncodedRealm.'/'.$sRawEncodedGuild.'?fields='.$guildfields; $response = @file_get_contents($requestURL, true); if (strpos($http_response_header[0], '200')) { $http_response_header = null; $aRawData = json_decode($response, true); $aGuildData = $aRawData; unset($aGuildData['members']); foreach ($aRawData['members'] as $memberItem ) { $sCharName = $memberItem['character']['name']; $charResponse = @file_get_contents( 'http://eu.battle.net/api/wow/character/'.$sRawEncodedRealm.'/'.urlencode(html_entity_decode($sCharName, ENT_COMPAT, 'UTF-8')).'?fields='.$sMemberFields , true ); // Prüfe Rückgabe if (strpos($http_response_header[0], '200')) { $decodeMember = json_decode($charResponse, true); $aGuildData['members'][] = json_decode($charResponse, true); } } file_put_contents($cache_file, json_encode($aGuildData)); unset($aGuild, $decodeMember, $aRawData, $http_response_header, $charResponse, $response); } } else { $aGuildData = json_decode(file_get_contents($cache_file), true); } // Prüfe Rückgabe if ( sizeof($aGuildData) ) { echo ' ​
> *Gildeninformationen*
> 
> 
> ...



*:-( was mache ich nur falsch :-(*


----------



## spectrumizer (9. Januar 2014)

Wie heisst die Datei? index.html? Falls ja, benenne sie mal nach index.php um und stelle sicher, dass dann auch keine index.html mehr auf dem Server in dem gleichen Verzeichnis existiert.

Sieht so aus, als ob du eine index.html verwendest UND dein Provider kein PHP-Parsing in .html-Dateien unterstützt.


----------



## Sorgonas (9. Januar 2014)

spectrumizer schrieb:


> Wie heisst die Datei? index.html? Falls ja, benenne sie mal nach index.php um und stelle sicher, dass dann auch keine index.html mehr auf dem Server in dem gleichen Verzeichnis existiert.
> 
> Sieht so aus, als ob du eine index.html verwendest UND dein Provider kein PHP-Parsing in .html-Dateien unterstützt.



Die datei heisst "mitglieder.php" und so wie ich die ganz oben ja habe, funktioniert diese, erst mit der änderung geht es nicht.
D.h. da muss irgendwo in diesem code nen fehler drin sein, gehe ich mal davon aus.


----------



## spectrumizer (9. Januar 2014)

Gib doch mal den Link zu der Seite.

PS: Was ich grad sehe: Es fehlt ein korrekter HTML-Header in dem Dokument.

Das Ganze müsste eigentlich so aussehen:

```
<!DOCTYPE html>
<head>
	<meta charset="ISO-8859-1" />
	<meta name="description" content="" />
	<meta name="author" content="" />
	<meta name="keywords" content="" />
	<link href="mitglieder.css" type="text/css" rel="stylesheet" />
	<title>Mitglieder</title>
</head>
<body>
<?php
...
?>
</body>
```


----------



## Sorgonas (9. Januar 2014)

[attachment=13470:mitglieder.php][attachment=13469:mitglieder.css] 





spectrumizer schrieb:


> Gib doch mal den Link zu der Seite.
> 
> PS: Was ich grad sehe: Es fehlt ein korrekter HTML-Header in dem Dokument.
> 
> ...



Der Link lautet http://www.sorgonas.de/mitglieder

Aber auch mit dem anfang davor geht es mit dem code nicht. ich füge dir hier mal meine beide dateien ein, dann kannst dir diese besser
ansehen evtl.


----------



## spectrumizer (9. Januar 2014)

Mit http://www.sorgonas.de/mitglieder gehts nicht, ja. Aber wenn ich http://www.sorgonas.de/mitglieder.php aufrufe (mit .php dran), gehts.


----------



## Sorgonas (9. Januar 2014)

spectrumizer schrieb:


> Mit http://www.sorgonas.de/mitglieder gehts nicht, ja. Aber wenn ich http://www.sorgonas.de/mitglieder.php aufrufe (mit .php dran), gehts.



Ja sorry, hatte das php vergessen dahinter zu schreiben ;-)


----------



## spectrumizer (9. Januar 2014)

Also ist jetzt alles schick? Bis auf die vier nebeneinander.


----------



## ZAM (9. Januar 2014)

Das ist auf jeden Fall nicht mein Code ^^


----------



## Sorgonas (9. Januar 2014)

spectrumizer schrieb:


> Also ist jetzt alles schick? Bis auf die vier nebeneinander.



Ja richtig, das ist das einzige, was irgendwie nicht so will wie ich das möchte ^^
ja und das mit dem zwischenspeichern hab ich noch nit drin, weil ich da auch nicht weiß wie ich das nun so machen soll


----------



## Sorgonas (9. Januar 2014)

ZAM schrieb:


> Das ist auf jeden Fall nicht mein Code ^^



Das ist richtig  weil den hab ich ja leider nicht ans laufen bekommen, wegen den Fehlermeldungen,
somit hab ich einfach meinen noch etwas bearbeitet, wie gesagt bekomme ich nur leider das mit den 
4 nebeneinander immer noch nicht hin, und weiß auch nicht wie ich das mit dem catchen mit meinen daten
nun hin bekommen soll


----------



## ZAM (9. Januar 2014)

In dem Code ist aber kein Fehler drin, bis auf einen Logikfehler, wenn man die Cache-Datei manuell anlegen muss. ^^ Ich habe den Code oben noch mal angepasst, entsprechend dem aus der hier angehängten Datei.

Kopiere den Quellcode aus dem Forum hier keines falls in irgendeinen WYSIWYG-Editor, dann übernimmst du nämlich beispielsweise die Farb-BBCode-Definitonen aus der Foren-Darstellung hier mit und das knallt natürlich beim Aufruf des Scripts.

Wie oben geschrieben musst du bei deinem Server die Cache-Datei "_cache.sth_" ggfs. manuell im Verzeichnis anlegen, in dem auch die _mitglieder.php_ liegt und der Datei Schreibrechte geben (_0666 _sollte reichen).

Ich verspreche dir, wenn du das Script ohne Caching betreibst, wird der API-Server deinen Server irgendwann wegen zu vielen Anfragen blockieren und dann bekommst du gar keine Daten mehr. Aber abgesehen davon, ist der Aufruf dadurch auch verdammt langsam. ^^

Wenn du vom Hoster aus die Möglichkeit hast, baust du dir im Idealfall aber einen Cronjob, der nur den oberen Teil mit dem Abfragen einmal die Stunde von der API übernimmt, also das Holen der Daten und wegschreiben in die Cache-Datei. In _mitglieder.php_ holst du du dir dann nur noch die Daten aus der Cache-Datei und alles flutscht. ^^


[attachment=13477:mitglieder.php]


----------



## Sorgonas (10. Januar 2014)

ZAM schrieb:


> In dem Code ist aber kein Fehler drin, bis auf einen Logikfehler, wenn man die Cache-Datei manuell anlegen muss. ^^ Ich habe den Code oben noch mal angepasst, entsprechend dem aus der hier angehängten Datei.
> 
> Kopiere den Quellcode aus dem Forum hier keines falls in irgendeinen WYSIWYG-Editor, dann übernimmst du nämlich beispielsweise die Farb-BBCode-Definitonen aus der Foren-Darstellung hier mit und das knallt natürlich beim Aufruf des Scripts.
> 
> ...



Wow, du bist einfach nur der hammer, genial.
hab nur noch den border in der unteren Tabelle auf 1 gesetzt und die width 205px gegeben und es ist genau so wollte ich es haben wollte, stimmt auf dem server geht es so wie du die datei gegeben hast, habe es voher immer offline erst hier auf dem Rechner mit Webocton ausprobiert und dort eingestellt, was nun mit deiner hier angebotenen Datei auch funktioniert ^^. Habe gerade hoch geladen und die datei erstellt und auch die Schreibrechte gegeben, und siehe da, es funktioniert Perfekt. Weis nun nur nicht wie ich oben in der Gildeninfo die ausgelesenen daten statt schwarz in Grün oder weiss ändern kann.

*VIELEN VIELEN DANK AN DICH.*

Danke auch an dich 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        

spectrumizer, für deine Unterstützung. Hatte anfangs nicht mit so genialer hilfe gerechnet, und siehe da, nun geht alles wie man es möchte.

Hammer genial.


----------



## ZAM (11. Januar 2014)

Die Mitglieder-Liste der ersten Abfrage enthält ja bereits das Datum, wann Blizzard die Daten des jeweiligen Charakters zuletzt in der API aktualisiert hat. Hier könnte man die Cache-Abfrage bspw. noch "beschleunigen" indem man sich die Erfolgspunkte des jeweiligen Chars nur holt, wenn sich das Datum geändert hat seit der letzten Abfrage.


----------



## Sorgonas (5. Februar 2014)

Kann mir jemand helfen einen Cron-Job zu erstellen, der Täglich ab 03:00 Uhr die daten einmal abruft, und sonst nur auf
die gespeicherten Dateien vom Cron-Job zugreift?

<html>
<head>
	<meta charset="ISO-8859-1" />
	<meta name="description" content="" />
	<meta name="author" content="" />
	<meta name="keywords" content="" />

</head>
<body>
<?php
// Konfiguration
$sGuildName = 'Familia de Lux';
$sRealmName = 'Lothar';
$sGuildFields= 'members'; // Möglich sind: achievements, members
$iMaxEntries = 4; // Anzahl der maximalen Einträge pro Zeile
$sMemberFields = 'talents';
$sCacheFile = 'cache.sth';
$iCacheTimeout = 3600; // Cache-Timeout in Sekunden
$sAPIURL = 'http://eu.battle.net/api/wow/';
$aGuildData = array();

$aClassNames = array('Krieger', 'Paladin', 'J&auml;ger', 'Schurke', 'Priester', 'Todesritter', 'Schamane', 'Magier', 'Hexenmeister', 'M&ouml;nch', 'Druide');
$aClassRaces = array('Mensch', 'Orc', 'Zwerg', 'Nachtelf', 'Untoter', 'Taure', 'Gnom', 'Troll', 'Goblin', 'Blutelf', 'Draenei', '', '', '', '', '', '', '', '', '', '', 'Worg', '', '', 'Pandare');
$aClassColors = array('#ffffff','#C69B6D', '#F48CBA','#AAD372','#FFF468','#F0EBE0','#C41E3B','#2359FF','#68CCEF','#9382C9','#00FFBA','#FF7C0A');
$aClassText = array('#FFFFFF');
$sRawEncodedRealm = rawurlencode($sRealmName);
$sRawEncodedGuild = rawurlencode($sGuildName);
$sResponse = null;
$sOutput = '';

if( !is_file($sCacheFile) || (time() - filemtime($sCacheFile)) > $iCacheTimeout || filesize($sCacheFile) == 0 ) {

	// Auslesen der Gildendaten.
	$sRequestURL = $sAPIURL . 'guild/'.$sRawEncodedRealm.'/'.$sRawEncodedGuild.'?fields='.$sGuildFields;
	$sResponse = @file_get_contents($sRequestURL, true);
	if (strpos($http_response_header[0], '200')) {

 	$http_response_header = null;
 	$aRawData = json_decode($sResponse, true);
 	$aGuildData = $aRawData;
 	unset($aGuildData['members']);

 	foreach ($aRawData['members'] as $aMemberItem )
 	{
 	$sCharName = $aMemberItem['character']['name'];
 	$sCharResponse = @file_get_contents(
 	$sAPIURL . 'character/'.$sRawEncodedRealm.'/'.urlencode(html_entity_decode($sCharName, ENT_COMPAT, 'UTF-8')).'?fields='.$sMemberFields
 	, true
 	);

 	// Prüfe Rückgabe
 	if (strpos($http_response_header[0], '200')) {

 	$aDecodeMember = json_decode($sCharResponse, true);
 	$aGuildData['members'][] = json_decode($sCharResponse, true);
 	}
 	}

 	file_put_contents($sCacheFile, json_encode($aGuildData));
 	unset($aGuild, $decodeMember, $aRawData, $http_response_header, $sCharResponse, $sResponse);
	}
} else {
	$aGuildData = json_decode(file_get_contents($sCacheFile), true);
}

// Prüfe Rückgabe
if ( sizeof($aGuildData) ) {

	$sOutput .= '<p align="center"><table border="1"><tr>';
	$sOutput .= '<td><h2><font color="#990000">Gildeninformationen</font></h2></td>';
	$sOutput .= "<td><p align='center'><img src='css/images/logo.png' width='50' height='50' /></p></td>";
	$sOutput .= '<tr><td><b><font color="#33FF00">Gildenname:</b></td><td style="color: #33FF00;"> '.$aGuildData['name'].'</font><br /></td></tr>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Realm:</b></td><td style="color: #33FF00;"> '.$aGuildData['realm'].'</font><br /></td>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Gildenstufe:</b></td><td style="color: #33FF00;"> '.$aGuildData['level'].'</font><br /></td>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Mitgliederanzahl:</b></td><td style="color: #33FF00;"> '.count($aGuildData['members']).'</font><br /></td>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Gildenerfolgspunkte:</b></td><td style="color: #33FF00;"> '.$aGuildData['achievementPoints'].'</font><br /></td>';
	$sOutput .= '</tr></table></p>';

	$sOutput .= '<div>';
	$iColumn = 0;

	foreach ($aGuildData['members'] as $aMemberItem ) {

		$sOutput .= '<div style="float:left">';
		$sOutput .= '<p align="center"><table border="1" width="205px" style=\'background-color:'.$aClassColors[$aMemberItem['class']].'\'><tr><tr><td colspan="2" align="center"><h3>'.htmlentities($aMemberItem['name'], ENT_COMPAT, 'UTF-8').'</h3></td></tr>';
		$sOutput .= '<tr><td><b>Klasse:</b></td><td> ';
		$sOutput .= '<font>'.$aClassNames[$aMemberItem['class'] - 1].'</font></td></tr>';
		$sOutput .= '<tr><td><b>Level:</b></td><td> '.$aMemberItem['level'].'</td></tr>';
		$sOutput .= '<tr><td><b>Volk:</b></td><td> ';
		$sOutput .= '<font>'.$aClassRaces[$aMemberItem['race'] - 1].'</font></td></tr>';
		$sOutput .= '<tr><td><b>Erfolgspunkte:</b></td><td> '.$aMemberItem['achievementPoints'].'</td></tr>';
		$sOutput .= '</ br></tr></table></p>';
		$sOutput .= '</div>';

 	$iColumn++;
 	if( $iColumn > $iMaxEntries-1 ) {
 	$sOutput .= '<div style="clear:both"></div>';
 	$iColumn = 0;
 	}
	}
	$sOutput .= '</div>';
}
echo $sOutput;
unset($aGuildData, $aMemberItem, $aMemberItem, $sOutput);
?>
</body>
</html>


----------



## Veshrae (6. Februar 2014)

cronjobs kannst du bei deinem hoster erstellen.
dieser ruft dann 1x täglich ein php file auf, welches dann die function() aufruft, welches dir die daten dann her holt.

ps: bitte nutze pastie.org für sourcecode.
pps: bitte nutze kein file_get_contents mehr.
ppps: bitte nutze keine veralteten charsets mehr.


----------



## Sorgonas (6. Februar 2014)

Veshrae schrieb:


> cronjobs kannst du bei deinem hoster erstellen.
> dieser ruft dann 1x täglich ein php file auf, welches dann die function() aufruft, welches dir die daten dann her holt.
> 
> ps: bitte nutze pastie.org für sourcecode.
> ...



Hallo Veshrae,

Das mit dem Cronjob hoster hab ich heute dank einem Mitarbeier von meinem Hoster erstellen können und einer php-Seite
zuweisen können welches einmal pro Tag abruft.

Nun weis ich leider immer noch nicht, welche daten ich nun aus meinem Code nehmen darf (muss) und diesen abändern,
damit er meine Datein aus der Cronjob-php hier einfügt.

Ja das mit dem pastie.org werde ich nun ab jetzt nutzen.

Diesen Code hat mir Zam geholfen, das er so funktioniert, wie ich es anders machen könnte, weiss ich leider nicht, da ich
mit php in den Anfangs-schuhen stecke.


----------



## Sorgonas (7. Februar 2014)

Sorgonas schrieb:


> Hallo Veshrae,
> 
> Das mit dem Cronjob hoster hab ich heute dank einem Mitarbeier von meinem Hoster erstellen können und einer php-Seite
> zuweisen können welches einmal pro Tag abruft.
> ...



Das mit der Seite pastie.org klappt irgendwie nicht, der kopiert immer dennoch nur den Code nicht mit der Nummerierung, desahlb 
schreibe ich es hier noch mal so rein.
Habe es nun so gelöst:

Cronjob-php:

```
<?php
// Konfiguration
$sGuildName = 'Familia de Lux';
$sRealmName = 'Lothar';
$sGuildFields= 'members'; // Möglich sind: achievements, members
$iMaxEntries = 3; // Anzahl der maximalen Einträge pro Zeile
$sMemberFields = 'talents';
$sCacheFile = 'cache.sth';
$iCacheTimeout = 3600; // Cache-Timeout in Sekunden
$sAPIURL = 'http://eu.battle.net/api/wow/';
$aGuildData = array();

$sRawEncodedRealm = rawurlencode($sRealmName);
$sRawEncodedGuild = rawurlencode($sGuildName);
$sResponse = null;

if( !is_file($sCacheFile) || (time() - filemtime($sCacheFile)) > $iCacheTimeout || filesize($sCacheFile) == 0 ) {

	// Auslesen der Gildendaten.
	$sRequestURL = $sAPIURL . 'guild/'.$sRawEncodedRealm.'/'.$sRawEncodedGuild.'?fields='.$sGuildFields;
	$sResponse = @file_get_contents($sRequestURL, true);
	if (strpos($http_response_header[0], '200')) {

 	$http_response_header = null;
 	$aRawData = json_decode($sResponse, true);
 	$aGuildData = $aRawData;
 	unset($aGuildData['members']);

 	foreach ($aRawData['members'] as $aMemberItem )
 	{
 	$sCharName = $aMemberItem['character']['name'];
 	$sCharResponse = @file_get_contents(
 	$sAPIURL . 'character/'.$sRawEncodedRealm.'/'.urlencode(html_entity_decode($sCharName, ENT_COMPAT, 'UTF-8')).'?fields='.$sMemberFields
 	, true
 	);

 	// Prüfe Rückgabe
 	if (strpos($http_response_header[0], '200')) {

 	$aDecodeMember = json_decode($sCharResponse, true);
 	$aGuildData['members'][] = json_decode($sCharResponse, true);
 	}
 	}

 	file_put_contents($sCacheFile, json_encode($aGuildData));
 	unset($aGuild, $decodeMember, $aRawData, $http_response_header, $sCharResponse, $sResponse);
	}
}
?>
```

Anzeige-php:

```
<html>
<head>
	<meta charset="ISO-8859-1" />
	<meta name="description" content="" />
	<meta name="author" content="" />
	<meta name="keywords" content="" />

</head>
<body>
<?php
// Konfiguration
$iMaxEntries = 3; // Anzahl der maximalen Einträge pro Zeile
$sCacheFile = 'cache.sth';
$aGuildData = array();

$aClassNames = array('Krieger', 'Paladin', 'J&auml;ger', 'Schurke', 'Priester', 'Todesritter', 'Schamane', 'Magier', 'Hexenmeister', 'M&ouml;nch', 'Druide');
$aClassRaces = array('Mensch', 'Orc', 'Zwerg', 'Nachtelf', 'Untoter', 'Taure', 'Gnom', 'Troll', 'Goblin', 'Blutelf', 'Draenei', '', '', '', '', '', '', '', '', '', '', 'Worg', '', '', 'Pandare');
$aClassColors = array('#ffffff','#C69B6D', '#F48CBA','#AAD372','#FFF468','#F0EBE0','#C41E3B','#2359FF','#68CCEF','#9382C9','#00FFBA','#FF7C0A');
$aClassText = array('#FFFFFF');
$sOutput = '';

if (file_exists($sCacheFile))
	$aGuildData = json_decode(file_get_contents($sCacheFile), true);


// Prüfe Rückgabe
if ( sizeof($aGuildData) ) {

	$sOutput .= '<p align="center"><table border="1"><tr>';
	$sOutput .= '<td><h2><font color="#990000">Gildeninformationen</font></h2></td>';
	$sOutput .= "<td><p align='center'><img src='css/images/logo.png' width='50' height='50' /></p></td>";
	$sOutput .= '<tr><td><b><font color="#33FF00">Gildenname:</b></td><td style="color: #33FF00;"> '.$aGuildData['name'].'</font><br /></td></tr>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Realm:</b></td><td style="color: #33FF00;"> '.$aGuildData['realm'].'</font><br /></td>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Gildenstufe:</b></td><td style="color: #33FF00;"> '.$aGuildData['level'].'</font><br /></td>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Mitgliederanzahl:</b></td><td style="color: #33FF00;"> '.count($aGuildData['members']).'</font><br /></td>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Gildenerfolgspunkte:</b></td><td style="color: #33FF00;"> '.$aGuildData['achievementPoints'].'</font><br /></td>';
	$sOutput .= '</tr></table></p>';

	$sOutput .= '<div>';
	$iColumn = 0;

	foreach ($aGuildData['members'] as $aMemberItem ) {

 	$sOutput .= '<div style="float:left">';
 	$sOutput .= '<p align="center"><table border="1" width="205px" style=\'background-color:'.$aClassColors[$aMemberItem['class']].'\'><tr><tr><td colspan="2" align="center"><h3>'.htmlentities($aMemberItem['name'], ENT_COMPAT, 'UTF-8').'</h3></td></tr>';
 	$sOutput .= '<tr><td><b>Klasse:</b></td><td> ';
 	$sOutput .= '<font>'.$aClassNames[$aMemberItem['class'] - 1].'</font></td></tr>';
 	$sOutput .= '<tr><td><b>Level:</b></td><td> '.$aMemberItem['level'].'</td></tr>';
 	$sOutput .= '<tr><td><b>Volk:</b></td><td> ';
 	$sOutput .= '<font>'.$aClassRaces[$aMemberItem['race'] - 1].'</font></td></tr>';
 	$sOutput .= '<tr><td><b>Erfolgspunkte:</b></td><td> '.$aMemberItem['achievementPoints'].'</td></tr>';
 	$sOutput .= '</ br></tr></table></p>';
 	$sOutput .= '</div>';

 	$iColumn++;
 	if( $iColumn > $iMaxEntries-1 ) {
 	$sOutput .= '<div style="clear:both"></div>';
 	$iColumn = 0;
 	}
	}
	$sOutput .= '</div>';
}
echo $sOutput;
unset($aGuildData, $aMemberItem, $aMemberItem, $sOutput);
?>
</body>
</html>
```

Denke mal das dies so richtig.


----------



## ZAM (7. Februar 2014)

file_exists() stammt aber nicht aus meinem Code  Ich nutze ausnahmslos is_file() aus Optimierungsgründen.


----------



## Sorgonas (7. Februar 2014)

ZAM schrieb:


> file_exists() stammt aber nicht aus meinem Code  Ich nutze ausnahmslos is_file() aus Optimierungsgründen.



ja hab gesehen das dies der gemacht hatte der mir bei dem cronjob geholfen hatte  

Kann mir evtl. noch jemand helfen, da ich gerne die Zeit und datum anzeigen lassen würde, wann der cronjob die daten aktualisiert hat.
bekomme das irgendwie nicht hin, das so hinein zu schreiben das er die zeit schreibt und dann bei der mitgliederliste dann anzeigt.
hab in die konfig im cronjob 
	
	



```
[color=#000088][size=2]$datum[/size][color=#174C5F][size=2] [/size][color=#339933][size=2]=[/size][color=#174C5F][size=2] [/size][color=#990000][size=2]date[/size][color=#009900][size=2]([/size][color=#0000FF][size=2]"d.m.Y"[/size][color=#339933][size=2],[/size][color=#000088][size=2]$timestamp[/size][color=#009900][size=2])[/size][color=#339933][size=2]; [/size][color=#000088][size=2]$uhrzeit[/size][color=#174C5F][size=2] [/size][color=#339933][size=2]=[/size][color=#174C5F][size=2] [/size][color=#990000][size=2]date[/size][color=#009900][size=2]([/size][color=#0000FF][size=2]"H:i"[/size][color=#339933][size=2],[/size][color=#000088][size=2]$timestamp[/size][color=#009900][size=2])[/size][color=#339933][size=2]; [/size]
```
eingefügt, und 
	
	



```
[color=#4E7F00][size=2]echo[/size][color=#174C5F][size=2] [/size][color=#000088][size=2]$datum[/size][color=#339933][size=2],[/size][color=#0000FF][size=2]" - "[/size][color=#339933][size=2],[/size][color=#000088][size=2]$uhrzeit[/size][color=#339933][size=2],[/size][color=#0000FF][size=2]" Uhr"[/size][color=#339933][size=2]; [/size][size=2]
```
 in die mitgliederliste. geht nicht, dann wurde mir gesagt das er ja schon eine[/size]
zeit speichert und solle die doch nehmen, 
	
	



```
[/size] $sOutput .= '<tr><td colspan="2" style="background-color: #FF0000;" align="center">Letzte Aktualisierung: '.$lastModified = date('d.m.Y H:i:s', $aGuildData['lastModified'] / 1000).' Uhr</td></tr>';[size=2]
```
funktioniert zwar die zeit anzuzeigen, jedoch nicht der cronjob neu geladen wurde sondern denke mal wenn daten von wow geändert wurden.

wie kann ich also nun die zeit richtig anzeigen lassen die ich haben möchte?


----------



## ZAM (7. Februar 2014)

```
$lastModified = date('d.m.Y H:i:s', $aGuildData['lastModified'] / 1000)
```


Was soll denn der Quatsch mitten im String? ^^ Das ist eine Variablenzuweisung, da wirst du nicht viel zu sehen bekommen, außerdem sollte das an der Stelle einen Syntax-Fehler schmeißen.
Und kopiere die Code-Sachen bitte vorher ins Notepad, wenn du sie hier raus kopierst. Die Zwischenablage kopiert die FARBCODE-Definitonen des Forums mit. Das haben wir dir aber weiter oben schon gesagt ^^


----------



## Sorgonas (7. Februar 2014)

ZAM schrieb:


> ```
> $lastModified = date('d.m.Y H:i:s', $aGuildData['lastModified'] / 1000)
> ```
> 
> ...



bekomme da keine Fehlermeldung sondern nen Datum und ne Uhrzeit angezeigt.
ich kopiere die code´s ja nicht hier raus, sondern aus meinem webocton.

nur leider weis ich nun noch immer nicht, wie ich das hin bekommen kann


----------



## Sorgonas (8. Februar 2014)

Sorgonas schrieb:


> bekomme da keine Fehlermeldung sondern nen Datum und ne Uhrzeit angezeigt.
> ich kopiere die code´s ja nicht hier raus, sondern aus meinem webocton.
> 
> nur leider weis ich nun noch immer nicht, wie ich das hin bekommen kann



na hab es nun hin bekommen.


----------



## Veshrae (10. Februar 2014)

```
<?php
	header('Content-Type: text/html; charset=utf-8');
	// guild configuration
	$realm 		= 'Die Silberne Hand';
	$guild 		= 'Drachensilber';
	$fields 	= 'members';
	$ranks		= array(0,1,3); 		// only use this guild ranks
	$hidenames	= array('Badmax');		// filter those usernames

	// get data via curl
	$api 		= 'http://eu.battle.net/api/wow/guild/';
	$url 		= $api.strtolower(preg_replace('/\s+/','-',$realm)).'/'.strtolower(preg_replace('/\s+/','-',$guild)).'?fields='.$fields;
	$ch 		= curl_init();
	curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
	curl_setopt($ch,CURLOPT_URL,$url);
	$data		= json_decode(curl_exec($ch),true);

	// output data
	$classes	= array('Krieger', 'Paladin', 'Jäger', 'Schurke', 'Priester', 'Todesritter', 'Schamane', 'Magier', 'Hexenmeister', 'Mönch', 'Druide');
	$races		= array('Mensch', 'Orc', 'Zwerg', 'Nachtelf', 'Untoter', 'Taure', 'Gnom', 'Troll', 'Goblin', 'Blutelf', 'Draenei', '', '', '', '', '', '', '', '', '', '', 'Worg', '', '', 'Pandare');
	$characters = [];

	// fill member data
	foreach($data['members'] as $member) {
		if(in_array($member['rank'],$ranks,true) && !in_array($member['character']['name'],$hidenames)) {
			$char 								= $member['character'];
			$class 								= $classes[$char['class']-1];
			$characters[$class][$char['name']] 	= $char;
		}
	}

	// generate output
	$output	= '';
	foreach($characters as $class => $chars) {
		if($class!='0') {
			$output .= '<div class="box '.strtolower($class).'">';
			$output .= '<h3>'.$class.'</h3>';
			$output .= '<ul class="charlist">';
			$output .= '<li>';
			foreach($chars as $char) {
				$output .= '<ul class="char">';
				$output .= '<li class="name">'.$char['name'].'</li>';
				$output .= '<li class="achievementpoints">'.$char['achievementPoints'].'</li>';
				$output .= '</ul>';
			}
			$output .= '</li>';
			$output .= '</ul>';
			$output .= '</div>';
		}
	}

	// start output in external file
	$file = 'cache.txt';
	file_put_contents($file,$output);
?>
```


mal eben kurz gemacht :/


----------



## Sorgonas (11. Februar 2014)

Veshrae schrieb:


> ```
> <?php
> header('Content-Type: text/html; charset=utf-8');
> // guild configuration
> ...



na wenn amn sich mit ner programmiersprache auch lang genug auseinander setzt ist es klar das es kein problem dann ist.

jedoch gibt dein code hier nen *Parse error*: syntax error, unexpected in zeile 22.


----------



## ZAM (11. Februar 2014)

Sorgonas schrieb:


> jedoch gibt dein code hier nen *Parse error*: syntax error, unexpected in zeile 22.



Weil deine PHP-Version auf dem Server "alt" ist.

Ersetze 
$characters = [];

durch
$characters = array();


----------



## Veshrae (12. Februar 2014)

Danke ZAM (:


----------



## Sorgonas (12. Februar 2014)

ZAM schrieb:


> Weil deine PHP-Version auf dem Server "alt" ist.
> 
> Ersetze
> $characters = [];
> ...



Mhhh, php 5.3 ist also alt? Was ist denn dann aktuell?


----------



## spectrumizer (12. Februar 2014)

ZAM schrieb:


> Weil deine PHP-Version auf dem Server "alt" ist.
> 
> Ersetze
> $characters = [];
> ...


Also leere Arrays per [] zu initialisieren, kenne ich nur von JavaScript / jQuery. In PHP setzt man leere Arrays AFAIK immer mit array() auf.


----------



## ZAM (12. Februar 2014)

spectrumizer schrieb:


> Also leere Arrays per [] zu initialisieren, kenne ich nur von Javascript / jQuery. In PHP setzt man leere Arrays AFAIK immer mit array() auf.



Geht seit 5.4 auch mit []
Syntaktisch hat sich Einges getan. Du kannst jetzt auch aus Funktionen und methoden Array-Results direkt ausgeben, ohne dass du sie erst in eine Variable casten musst, also bspw echo function()[0]


----------



## Sorgonas (17. Februar 2014)

ich möchte dich ja nicht kritisieren, da ich selbst ja noch am anfang bin mit der Programierung,
aber so schnell wie du den Code geschrieben hast, hast einige Fehler wohl übersehen. Hier ist
der nächste:

*Warning*: Invalid argument supplied for foreach() on line *25*


----------



## Veshrae (17. Februar 2014)

Deine PHP Version ist veraltet...
Hier klappt alles 1:1.

das script siehst du hier:
http://roaarrr.com/wow/members.php

(habe am schluss nur ein "echo $output" hinzugefügt.)


Welche PHP Version unterstützt dein Webserver? Dementsprechend würde ich das noch kurz anpassen für dich.


----------



## Sorgonas (17. Februar 2014)

Veshrae schrieb:


> Deine PHP Version ist veraltet...
> Hier klappt alles 1:1.
> 
> das script siehst du hier:
> ...



ah ok, ja bei dir geht es, stimmt.
wie oben beschrieben habe ich php 5.3 auf dem server.
aber hab bei mir nun ja schon einige änderungen drin, wie zb. bilder der Klasse und die div's als linkk zu den char gemacht.


----------



## Veshrae (17. Februar 2014)

ich habe nun auf 5.3 umgestellt, die einzige zeile die nicht funktioniert, ist jene, die ZAM bereits "flickte".
kannst du deinen source code nochmals uppen?


----------



## Sorgonas (18. Februar 2014)

Veshrae schrieb:


> ich habe nun auf 5.3 umgestellt, die einzige zeile die nicht funktioniert, ist jene, die ZAM bereits "flickte".
> kannst du deinen source code nochmals uppen?



ich gebe dir hier beide meiner dateien, vieleicht fällt dir bei der anderen ja auch noch was auf, wie gesagt
ich bin in der php sprache gerade am anfang und froh manche sachen auf meine bedürfnisse abzuändern ;-)

So habe den code nun extra erst in den editor kopiert und von dort heraus kopiert und hier hinein, hoffe das 
es nun so richtig hier drin ist der Code

[attachment=13546:abfrage.php]

```
<?php
// Konfiguration
$sGuildName = 'Familia de Lux';
$sRealmName = 'Lothar';
$sGuildFields= 'members'; // Möglich sind: achievements, members
$iMaxEntries = 3; // Anzahl der maximalen Einträge pro Zeile
$sMemberFields = 'talents';
$sCacheFile = 'cache.sth';
$iCacheTimeout = 1; // Cache-Timeout in Sekunden
$sAPIURL = 'http://eu.battle.net/api/wow/';
$aGuildData = array();

$sRawEncodedRealm = rawurlencode($sRealmName);
$sRawEncodedGuild = rawurlencode($sGuildName);
$sResponse = null;

if( !is_file($sCacheFile) || (time() - filemtime($sCacheFile)) > $iCacheTimeout || filesize($sCacheFile) == 0 ) {

	// Auslesen der Gildendaten.
	$sRequestURL = $sAPIURL . 'guild/'.$sRawEncodedRealm.'/'.$sRawEncodedGuild.'?fields='.$sGuildFields;
	$sResponse = @file_get_contents($sRequestURL, true);
	if (strpos($http_response_header[0], '200')) {

 	$http_response_header = null;
 	$aRawData = json_decode($sResponse, true);
 	$aGuildData = $aRawData;
 	unset($aGuildData['members']);

 	foreach ($aRawData['members'] as $aMemberItem )
 	{
 	$sCharName = $aMemberItem['character']['name'];
 	$sCharResponse = @file_get_contents(
 	$sAPIURL . 'character/'.$sRawEncodedRealm.'/'.urlencode(html_entity_decode($sCharName, ENT_COMPAT, 'UTF-8')).'?fields='.$sMemberFields
 	, true
 	);

 	// Prüfe Rückgabe
 	if (strpos($http_response_header[0], '200')) {

 	$aDecodeMember = json_decode($sCharResponse, true);
 	$aGuildData['members'][] = json_decode($sCharResponse, true);
 	}
 	}

 	file_put_contents($sCacheFile, json_encode($aGuildData));
 	unset($aGuild, $decodeMember, $aRawData, $http_response_header, $sCharResponse, $sResponse);
	}
}
?>
```

[attachment=13547:mitglieder.php]

```
<html>
<head>
	<meta charset="ISO-8859-1" />
	<meta name="description" content="" />
	<meta name="author" content="" />
	<meta name="keywords" content="" />

</head>
<body>
<?php
// Konfiguration
$iMaxEntries = 3; // Anzahl der maximalen Einträge pro Zeile
$sCacheFile = 'cache.sth';
$aGuildData = array();
$zeit = filemtime ($sCacheFile);

$aClassNames = array('<img src="warrior.jpg" />', '<img src="paladin.jpg" />', '<img src="hunter.jpg" />', '<img src="rogue.jpg" />', '<img src="priest.jpg" />', '<img src="deathknight.jpg" />', '<img src="shaman.jpg" />', '<img src="mage.jpg" />', '<img src="warlock.jpg" />', '<img src="monk.jpg" />', '<img src="druid.jpg" />');
$aClassRaces = array('Mensch', 'Orc', 'Zwerg', 'Nachtelf', 'Untoter', 'Taure', 'Gnom', 'Troll', 'Goblin', 'Blutelf', 'Draenei', '', '', '', '', '', '', '', '', '', '', 'Worg', '', '', 'Pandare');
$aClassColors = array('#ffffff','#C69B6D', '#F48CBA','#AAD372','#FFF468','#F0EBE0','#C41E3B','#2359FF','#68CCEF','#9382C9','#00FFBA','#FF7C0A');
$aClassText = array('#FFFFFF');
$sOutput = '';

if (file_exists($sCacheFile))
	$aGuildData = json_decode(file_get_contents($sCacheFile), true);

// Prüfe Rückgabe
if ( sizeof($aGuildData) ) {

	$sOutput .= '<p align="center"><table border="1">';
	$sOutput .= '<tr><td><h2><font color="#990000">Gildeninformationen</font></h2></td>';
	$sOutput .= "<td><p align='center'><img src='logo.png' width='50' height='50' /></p></td></tr>";
	$sOutput .= '<tr><td><b><font color="#33FF00">Gildenname:</b></td><td style="color: #33FF00;" align="center"> '.$aGuildData['name'].'</font><br /></td></tr>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Realm:</b></td><td style="color: #33FF00;" align="center"> '.$aGuildData['realm'].'</font><br /></td></tr>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Gildenstufe:</b></td><td style="color: #33FF00;" align="center"> '.$aGuildData['level'].'</font><br /></td></tr>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Mitgliederanzahl:</b></td><td style="color: #33FF00;" align="center"> '.count($aGuildData['members']).'</font><br /></td></tr>';
	$sOutput .= '<tr><td><b><font color="#33FF00">Gildenerfolgspunkte:</b></td><td style="color: #33FF00;" align="center"> '.$aGuildData['achievementPoints'].'</font><br /></td></tr>';
	$sOutput .= '<tr><td colspan="2" style="background-color: #FF0000;" align="center">Letzte Aktualisierung: '. gmdate ( 'd M Y H:i:s', $zeit ).' Uhr</td></tr>';
	$sOutput .= '</table></p>';

	$sOutput .= '<div>';
	$iColumn = 0;

	foreach ($aGuildData['members'] as $aMemberItem ) {

 	$sOutput .= '<a href="http://eu.battle.net/wow/de/character/lothar/'.htmlentities($aMemberItem['name'], ENT_COMPAT, 'UTF-8').'/simple" target="_blank"><div style="float:left">';
 	$sOutput .= '<p align="center"><table border="1" width="205px" style=\'background-color:'.$aClassColors[$aMemberItem['class']].'\'>';
 	$sOutput .= '<tr><td align="center"><h3>'.htmlentities($aMemberItem['name'], ENT_COMPAT, 'UTF-8').'</h3></td><td align="center"> ';
 	$sOutput .= '<font>'.$aClassNames[$aMemberItem['class'] - 1].'</font></td></tr>';
 	$sOutput .= '<tr><td><b>Level:</b></td><td align="center"> '.$aMemberItem['level'].'</td></tr>';
 	$sOutput .= '<tr><td><b>Volk:</b></td><td align="center"> ';
 	$sOutput .= '<font>'.$aClassRaces[$aMemberItem['race'] - 1].'</font></td></tr>';
 	$sOutput .= '<tr><td><b>Erfolgspunkte:</b></td><td align="center"> '.$aMemberItem['achievementPoints'].'</td></tr>';
 	$sOutput .= '</ br></table></p>';
 	$sOutput .= '</div></a>';

 	$iColumn++;
 	if( $iColumn > $iMaxEntries-1 ) {
 	$sOutput .= '<div style="clear:both"></div>';
 	$iColumn = 0;
 	}
	}
	$sOutput .= '</div>';
}
echo $sOutput;
unset($aGuildData, $aMemberItem, $aMemberItem, $sOutput);
?>
</body>
</html>
```


----------



## Sorgonas (18. Februar 2014)

weis jemand auch, warum ich 2 personen weniger auf meiner Page angezeigt bekomme, als ich in der Gilde
wirklich habe? habe dies noch nicht herausgefunden leider

PS.: Hrhrhr, so was wie hier meine signatur währe als mitgliederliste ja genial, nur das bekommt man wohl nie
 	hin nicht wahr ;-)


----------



## ZAM (18. Februar 2014)

Sorgonas schrieb:


> PS.: Hrhrhr, so was wie hier meine signatur währe als mitgliederliste ja genial, nur das bekommt man wohl nie
> hin nicht wahr ;-)



Arbeite dich lieber erst mal weiter in die Grundlagen rein, bevor du dich mit den gd imagecreate-Funktionen beschäftigst. ^^


----------



## Sorgonas (18. Februar 2014)

ZAM schrieb:


> Arbeite dich lieber erst mal weiter in die Grundlagen rein, bevor du dich mit den gd imagecreate-Funktionen beschäftigst. ^^



na will ja kein creator, sondern das aussehen ;-) bin da auch was am basteln, nun stehe ich jedoch wieder vor dem problem
mit dcen ganzen infos die ich nicht habe, wie leben und mana anzeigen zu lassen tallent 1+2 und das aktive etc...


----------



## Sorgonas (19. Februar 2014)

Ich habe mal eine Tolle Frage mal wieder, 
und zwar rufe ich ja mit meiner Abfrage-php die Member-Talents ab und in der Mitglieder-liste auf,
kann man (und wenn ja wie) zusätzlich noch Mitglieder-stats dazu nehmen, da ich gerne weitere
Werte daraus mit anzeigen lassen würde.Am besten auch so das ich nicht den gesamten code 
umschreiben müsste 

ok, hab ich hin bekommen


----------



## Sorgonas (20. Februar 2014)

wie bekomme ich die Gegenstandsstufe der Rüssi von den Chars herkann mir da jemand helfen?

ok auch dies habe ich nun geschaft


----------

