PHP-Schnittstelle

Crowley

Dungeon-Boss
Mitglied seit
14.08.2006
Beiträge
574
Reaktionspunkte
0
Kommentare
280
Buffs erhalten
10
Da XML mitunter etwas umständlich ist, wenn man seine Gildendaten einfach nur in einem PHP-Array will, habe ich zusätzlich zu unserer XML-Schnittstelle noch eine einfachere Schnittstelle in Form eines komprimierten serialisierten PHP-Arrays gebastelt.

hier ein Beispiel:
http://www.blasc.de/guild.php?g=2

Das ganze lässt sich folgendermaßen in PHP einbinden (vorausgesetzt, der Provider erlaubt, dass PHP HTTP-Zugriffe macht.)

Code:
<?php

$url = 'http://www.blasc.de/guild.php?g=2';

$file = file_get_contents($url);
if(!$file) die("Fehler beim Öffnen von $url");

$guild = unserialize(gzuncompress($file));
print_r($guild);

?>

Die Gildendaten finden sich dann im Array $guild und können mittels normaler PHP-Funktionen ausgegeben werden. Das Ganze ist erstmal eine Test-Version und kann sich jederzet ändern, aber ihr könnt ja schonmal versuchen die Daten in eure Gildenseiten zu integrieren.
 
Zuletzt bearbeitet von einem Moderator:
Crowley schrieb:
Da XML mitunter etwas umständlich ist, wenn man seine Gildendaten einfach nur in einem PHP-Array will, habe ich zusätzlich zu unserer XML-Schnittstelle noch eine einfachere Schnittstelle in Form eines komprimierten serialisierten PHP-Arrays gebastelt.

hier ein Beispiel:
http://black-legion.info/guild_php.php?ser...ld=BLACK_LEGION

Das ganze lässt sich folgendermaßen in PHP einbinden (vorausgesetzt, der Provider erlaubt, dass PHP HTTP-Zugriffe macht.)

Code:
<?php

$url = 'http://black-legion.info/guild_php.php?server=PVP_Server&guild=BLACK_LEGION';

$file = file_get_contents('http://black-legion.info/guild_php.php?server=PVP_Server&guild=BLACK_LEGION');
if(!$file) die("Fehler beim Öffnen von $url");

$guild = unserialize(gzuncompress($file));
print_r($guild);

?>

Die Gildendaten finden sich dann im Array $guild und können mittels normaler PHP-Funktionen ausgegeben werden. Das Ganze ist erstmal eine Test-Version und kann sich jederzet ändern, aber ihr könnt ja schonmal versuchen die Daten in eure Gildenseiten zu integrieren.
[post="77950"][/post]​


hmm habe das in in eine php seite geschrieben! dann kommt das

http://www.destruction-force.de/wow/daten.php
 
Gringol schrieb:
hmm habe das in in eine php seite geschrieben! dann kommt das

http://www.destruction-force.de/wow/daten.php
[post="77960"][/post]​
Prima, so soll es auch sein.
smile.gif

Mit print_r() wird einfach das komplette Array angezeigt. Wenn du dir den Quelltest ansiehst hannst du die Struktur Besser erkennen.

Eine Charakter-Liste kanst du ausgeben indem du statt print_r() z.B. folgendes machst:

Code:
print "<table>";
foreach($guild['character'] as $c) {
	print "<tr>";
	print "<td>".$c['name']."</td>";
	print "<td>".$c['level']."</td>";
	print "<td>".$c['race']."</td>";
	print "<td>".$c['class']."</td>";
	print "</tr>\n";
	
}
 
Gringol schrieb:
jo ging hab da mal eure daten auslesen lassen!

mehr kann man nicht anzeigen lassen!?

zb das profil von jedem mitglied oder?

http://www.destruction-force.de/wow/daten.php
[post="77963"][/post]​
Nein, das ist jetzt erstmal nur ne Grundfunktion zum Testen, inwiefern wir die noch erweiten haben wissen wir noch nicht genau.
 
hmm da muß ich mal ein bischen rumprobieren. hab gestern von vwar auf xbrite Members umgestellt. das geht doch daß dann bei jedem mitglied die passenden Daten angezeigt werden, oder? (wenn der Membername=Charname ist?)

/EDIT: gibts später noch mehr infos wie das was man hier sehen kann (items, attribute)?
 
Zuletzt bearbeitet von einem Moderator:
Funktioniert wunderbar ... habe es ohne großartige php Kenntnisse hinbekommen ... allerdings wäre es super hilfreich wenn ihr für sone handvoll Funktionen ein kleines Beispiel bringen könntet, z.B. wie lese ich Werte aus einem Array aus, bspw. bei [skills] bekomm ich als Wert nur "Array" zurück. Oder wie man so schöne Balken entsprechend der Skillwerte bastelt.
smile.gif


Danke!
 
Hehe, danke ... ich hatte jedoch gehofft mich nicht durch Manuals wühlen zu müssen
smile.gif
 
Avenger schrieb:
Hehe, danke ... ich hatte jedoch gehofft mich nicht durch Manuals wühlen zu müssen
smile.gif

[post="78220"][/post]​

ich denke mal das solltest du aber tun, du kannst nich einfach erwarten das dir alles in den schoß gelegt wird
wink.gif

das Programm is eh schon klasse, und bereitstellung von den daten ein sehr soziale sache, also nu hock dich ma hin und lern bissl was *g*
 
Wenn mann in PHP nicht mal ein Array durchlaufen kann und dessen Felder in einer Tabelle ausgeben, sollte man die Finger davon lassen. Das sind nun wirklich die grundlegendsten Funktionen.
 
Hier die genauen Arrayinhalte, das einzige was bissel anders ist, sind die Berufe, dabei hat das Array jeweils den Beruf als name.
Will man also unter php den Server ausgeben einfach :
Code:
echo $guild['server'];


server -> String
guild_name -> String
faction -> String
numchars -> int
character -> Array
____name -> String
____level -> int
____race -> String
____class -> String
____sex -> char
____guild_rank -> int (0 = gildenmeister, 1 = offizier, 2 = veteran, 3 = mitglied, 4 = initiand)
____guild_title -> String
____lastupdate -> sqldate
____skills -> Array
________Berufe -> Array
____________[{beruf}] -> Array
________________value -> int
________________max -> int
________Sekundäre Fertigkeiten -> Array
____________[{Fertigkeit}] -> Array
____________value -> int
____________max -> int
 
Zuletzt bearbeitet:
Xmasman schrieb:
Hier die genauen Arrayinhalte, das einzige was bissel anders ist, sind die Berufe, dabei hat das Array jeweils den Beruf als name.
Will man also unter php den Server ausgeben einfach :
Code:
echo $guild['server'];
server -> String
guild_name -> String
faction -> String
numchars -> int
character -> Array
____name -> String
____level -> int
____race -> String
____class -> String
____sex -> char
____guild_rank -> int (0 = gildenmeister, 1 = offizier, 2 = veteran, 3 = mitglied, 4 = initiand)
____guild_title -> String
____lastupdate -> sqldate
____skills -> Array
[post="78329"][/post]​

Also bis hierher komm ich noch klar, ich kann auslesen wieviel berufe der Char hat, aber nicht welche, kann mir jemand helfen? ausm manual werd ich nicht ganz schlau, da steht nich so viel über 3fach verschachtelt *g*


________Berufe -> Array
____________[{beruf}] -> Array
________________value -> int
________________max -> int
________Sekundäre Fertigkeiten -> Array
____________[{Fertigkeit}] -> Array
____________value -> int
____________max -> int

ich würd gerne die namen (= arrayname = {beruf}) >> berufe und fertigkeiten von jedem ausgeben lassen.

würd mich über hilfe freun

gruß manu
 
Code:
$character['skills']['Berufe'][{beruf}]; // Berufe
$character['skills']['Berufe'][{beruf}]['value']; // Aktueller Skill Beruf
$character['skills']['Berufe'][{beruf}]['max']; //Maximaler Skill Beruf

$character['skills']['Sekundäre Fähigkeiten'][{Fähigkeit}]; //Sekundäre Fähigkeiten
$character['skills']['Sekundäre Fähigkeiten'][{Fähigkeit}]['value']; // Aktueller Skill
$character['skills']['Sekundäre Fähigkeiten'][{Fähigkeit}]['max']; // Maximaler Skill

{beruf}/{fähigkeit} ist halt entsprechend abhängig... Musst eben ne allgemeine Funktion/... schreiben die das handelt
smile.gif


Lg,
Nebel

Edit: Korrigiert und sekundäre Fähigkeitn dazugebastelt
wink.gif

Edit2: Ich sollte es heute bleiben lassen -.- Noch was verbessert...
 
Zuletzt bearbeitet:
kann man sich auch eigentlich von einem einzelnen Char die Daten anzeigen lassen?

Edit : Auch mit inventar usw?
 
Zuletzt bearbeitet von einem Moderator:
Nebelschleicher schrieb:
Code:
$character['skills']['Berufe'][{beruf}]; // Berufe
$character['skills']['Berufe'][{beruf}]['value']; // Aktueller Skill Beruf
$character['skills']['Berufe'][{beruf}]['max']; //Maximaler Skill Beruf

$character['skills']['Sekundäre Fähigkeiten'][{Fähigkeit}]; //Sekundäre Fähigkeiten
$character['skills']['Sekundäre Fähigkeiten'][{Fähigkeit}]['value']; // Aktueller Skill
$character['skills']['Sekundäre Fähigkeiten'][{Fähigkeit}]['max']; // Maximaler Skill

{beruf}/{fähigkeit} ist halt entsprechend abhängig... Musst eben ne allgemeine Funktion/... schreiben die das handelt
smile.gif


Lg,
Nebel

Edit: Korrigiert und sekundäre Fähigkeitn dazugebastelt
wink.gif

Edit2: Ich sollte es heute bleiben lassen -.- Noch was verbessert...
[post="78359"][/post]​

lol gerad um die erwähnte funktion gehts, kann man das nicht anders online stellen? mit ID's oda sow? ich probier ma weiter, trotsdem danke nebelschleicher
wink.gif
 
So hoffe das sprengt jetzt nicht den Artikel poste hier mal ne mögliche Ausgabe der Daten mit allem pipapo hin.
Wichtig sei hier erwähnt das alle Charaktere in einer Datenbank vorhanden sind, wobei da bis auf das Level Informationen enthalten sind die sich nicht mehr ändern (Name, Rasse, Klasse)

Code:
<?
// Anfang der Ausgabe
include ("inc_head_table.html"); 

// Hier Server eintragen auf dem gespielt wird (für Leerzeichen = %20)
$server = "DE%20Final%20Beta%203";
// Hier der Gildenname
$gildenname = "BlackEight";
// Die nächsten Zeilen sind wie im Forum erwähnt um das Array zu bekommen
$url = 'http://black-legion.info/guild_php.php?server='.$server.'&guild='.$gildenname;
$file = file_get_contents($url);
if(!$file) die("Fehler beim Öffnen von $url");
$guild = unserialize(gzuncompress($file));
//Hier Schreibe ich die chars schon mal in ein eigenes Array
$chars = $guild['character'];

//Wenn kein Charakter ausgewählt wurde ist die variable $charname nicht gesetzt und alle Chars werden ausgegeben
if(!isset($charname)) { 
	if(!isset($order)) $order = "level"; 
	else $order = $order.",level"; ?>
	<table width="100%" align="center" cellpadding="5" border="1" bordercolor="#999999" style="border-collapse:collapse;" bgcolor="#333333">
	<tr><th>Rank</th>
  <th><a href="index.php?unterseite=Ladder&order=charname">Name</a></th>
  <th><a href="index.php?unterseite=Ladder&order=server">Server</a></th>
  <th><a href="index.php?unterseite=Ladder&order=rasse">Rasse</a></th>
  <th><a href="index.php?unterseite=Ladder&order=klasse">Klasse</a></th>
  <th><a href="index.php?unterseite=Ladder&order=id_user">Spieler</a></th>
  <th width="30"><a href="index.php?unterseite=Ladder">Level</a></th></tr><? 
  //Die Charaktergrundewerte sind in der Datenbank hinterlegt im table b8_chars und die User dazu im table b8_user
  $query="SELECT * FROM b8_chars chars LEFT JOIN b8_user user ON chars.id_user = user.id ORDER BY $order DESC"; 
  //Funktion gibt alle Chars aus
  Charausgabe_Ladder($query, $guild); ?>
	</table><?
} else {
	//Hier nun wurde ein bestimmter Charakter ausgewählt und aus dem Array vom BLASC System wird die Position im Array rausgesucht
	$idBLASC = getBLASCid($chars,$charname); 
	//Nun folgt die Ausgabe aller Informationen ?>
	<table align="center" cellpadding="5" cellspacing="0" bgcolor="#222222" border="1" bordercolor="#FFFFFF">
  <tr><th colspan="6"><h2><? echo $charname ?></h2></th></tr>
  
  <tr><td>Geschlecht: </td><td bgcolor="#444444"><? echo $chars[$idBLASC]['sex'] ?></td>
 	 <td>Gildenstatus: </td><td bgcolor="#444444"><? echo $chars[$idBLASC]['guild_title'] ?></td>
 	 <td>Aktualsiert: </td><td bgcolor="#444444"><? echo $chars[$idBLASC]['lastupdate'] ?></td></tr>
  
  <tr><td>Level: </td><td bgcolor="#444444"><? echo $chars[$idBLASC]['level'] ?></td>
 	 <td>Rasse: </td><td bgcolor="#444444"><? echo $chars[$idBLASC]['race'] ?></td>
 	 <td>Klasse: </td><td bgcolor="#444444"><? echo $chars[$idBLASC]['class'] ?></td></tr>

  <tr><td colspan="6"><b>Berufe</b></td></tr><? 
  $berufe = getSkills($chars[$idBLASC]['skills'],"berufe"); 
  for($i=0; $i<count($berufe); $i++) { ?>
 	 <tr><td><? echo $berufe[$i]['name']; ?></td>
    <td colspan="2"><? echo $berufe[$i]['value']." / ".$berufe[$i]['max']; ?></td>
    <td colspan="3"> </td></tr><?
  } ?>
  
  <tr><td colspan="6"><b>Sekundäre Fertigkeiten</b></td></tr><? 
  $sekund = getSkills($chars[$idBLASC]['skills'],"sekundäre fertigkeiten"); 
  for($i=0; $i<count($sekund); $i++) { ?>
 	 <tr><td><? echo $sekund[$i]['name']; ?></td>
    <td colspan="2"><? echo $sekund[$i]['value']." / ".$sekund[$i]['max']; ?></td>
    <td colspan="3"> </td></tr><?
  } ?>
	</table><?
} 

include ("inc_foot_table.html"); 
// Ende der Ausgabe

//Funktion gibt entweder Berufe oder Fertigkeiten zurück
function getSkills($skills, $wahl) {
	if($wahl == "berufe") {
  $array = getSkillValues($skills['Berufe']);
	} else {
  $array = getSkillValues($skills['Sekundäre Fertigkeiten']);
	}
	return $array;
}

//Zu jeweils den Berufen oder Fertigkeiten werden Namen rausgesucht und mit den Werten zusammen im Array zurückgegeben
function getSkillValues($skills) {
	//Berufe
	if(isset($skills['Alchimie'])) 
  $name[] = "Alchimie";
	if(isset($skills['Bergbau'])) 
  $name[] = "Bergbau";
	if(isset($skills['Schmiedekunst'])) 
  $name[] = "Schmiedekunst";
	if(isset($skills['Kräuterkunde'])) 
  $name[] = "Kräuterkunde";
	if(isset($skills['Lederverarbeitung'])) 
  $name[] = "Lederverarbeitung";
	if(isset($skills['Kürschnerei'])) 
  $name[] = "Kürschnerei";
	if(isset($skills['Ingenieurskunst'])) 
  $name[] = "Ingenieurskunst";
	if(isset($skills['Verzauberkunst'])) 
  $name[] = "Verzauberkunst";
	
	// Sekundäre Fertigkeiten
	if(isset($skills['Kochkunst'])) 
  $name[] = "Kochkunst";
	if(isset($skills['Angeln'])) 
  $name[] = "Angeln";
	if(isset($skills['Erste Hilfe'])) 
  $name[] = "Erste Hilfe";
	if(isset($skills['Untoten-Reitkunst'])) 
  $name[] = "Untoten-Reitkunst";
	if(isset($skills['Kodoreiten'])) 
  $name[] = "Kodoreiten";
	if(isset($skills['Wolfreiten'])) 
  $name[] = "Wolfreiten";
	
	if(isset($name[0])) {
  $skill[0]['name'] = $name[0];
  $skill[0]['value'] = $skills[$name[0]]['value'];
  $skill[0]['max'] = $skills[$name[0]]['max'];
	}
	if(isset($name[1])) {
  $skill[1]['name'] = $name[1];
  $skill[1]['value'] = $skills[$name[1]]['value'];
  $skill[1]['max'] = $skills[$name[1]]['max'];
	}
	return $skill;
}

//BLASCid ist die Postition im Array $chars
function getBLASCid($chars,$charname) {
	for($i=0; $i<count($chars); $i++) {
  if($chars[$i]['name'] == $charname)
 	 $id = $i;
	}	
	return $id;
}

//Da nicht alle Chars von uns im System sind untersucht die Funktion ob ein Char enthalten ist
function charExistsInBLASC($chars,$charname) {
	for($i=0; $i<count($chars); $i++) {
  if($chars[$i]['name'] == $charname)
 	 $exists = true;
	}	
	return $exists;
}

//Die Chars die nicht im BLASC-System sind deren level wird von den Benutzern so gesetzt bei den anderen wird der BLASC Wert genommen
// falls dieser höher ist, denn dann ist dieser aktueller
function getBLASCLevel($chars, $charname, $level) {
	for($i=0; $i<count($chars); $i++) {
  if(($chars[$i]['name'] == $charname) && ($chars[$i]['level'] > $level))
 	 $level = $chars[$i]['level'];
	}	
	return $level;
}

//Funktion gibt anhand der Anfrage aus der DB alle Charaktere aus
function Charausgabe_Ladder($query, $guild) {
	$ergebnis = Querry_to_Array($query);  

	//Für jeden Charakter wird einmal die Schleife durchlaufen
	for($i=0; $i<count($ergebnis); $i++) {
  //Wenn die Chars zur Allianz gehören wird die Zeile gelb sonst rot 
  if(($ergebnis[$i]['rasse'] == "Elf") || ($ergebnis[$i]['rasse'] == "Mensch") ||($ergebnis[$i]['rasse'] == "Zwerg") || ($ergebnis[$i]['rasse'] == "Gnom"))
 	 $color = "yellow";
  else
 	 $color = "red"; ?>
  <tr><th width="5%"><font color="#FFFFFF"><? echo $i+1 ?></font></th>
    <th><font color="<? echo $color ?>"><? 
   	 //Falls ein BLASC eintrag existiert kann der Link für die Details angeklickt werden 
   	 if(charExistsInBLASC($guild['character'],$ergebnis[$i]['charname'])) { ?>
      <a href="index.php?unterseite=Ladder&charname=<? echo $ergebnis[$i]['charname']; ?>"><? echo $ergebnis[$i]['charname']; ?></a><? 
   	 } else { echo $ergebnis[$i]['charname']; } ?></font></th>
    <th><font color="<? echo $color ?>"><? echo $ergebnis[$i]['server'] ?></font></th>    
    <th><font color="<? echo $color ?>"><? echo $ergebnis[$i]['rasse'] ?></font></th>
    <th><font color="<? echo $color ?>"><? echo $ergebnis[$i]['klasse'] ?></font></th>   	 
    <th><font color="<? echo $color ?>"><? echo Id_to_User($ergebnis[$i]['id_user']) ?></font></th>
    <th><font color="<? echo $color ?>"><? echo getBLASCLevel($chars,$ergebnis[$i]['charname'], $ergebnis[$i]['level']); ?></font></th></tr><?
	}
	if (count($ergebnis) == '0') { ?>
  <tr><th colspan="5"> Keine Chars vorhanden </th></tr> <?	
	} 
} 

/*
Struktur des Arrays aus dem BLASC System

server -> String
guild_name -> String
faction -> String
numchars -> int 
character -> Array
	name -> String
	level -> int
	race -> String
	class -> String
	sex -> char
	guild_rank -> int (0 = gildenmeister, 1 = offizier, 2 = veteran, 3 = mitglied, 4 = initiand)
	guild_title -> String
	lastupdate -> sqldate
	skills -> Array
  Berufe -> Array
 	 [{beruf}] -> Array
    value -> int
    max -> int 
  Sekundäre Fertigkeiten -> Array
 	 [{Fertigkeit}] -> Array
    value -> int
    max -> int 
	
*/
?>
 
Zurück