Daten aus XML sortieren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
ausgeben
auslese
bande
beitritt
bekommen
berechnen
bringen
code
datum
eintritt
form
http
inhalt
point
punkt
schlauch
sortieren
url
versuchen
-
Hallo,
ich habe folgendes Problem:
Ich lese Daten aus 2 XML Dateien aus um eine Userübersicht zu erhalten. Nun würde ich gern die erhaltenen Daten noch umsortieren und stehe dabei auf dem Schlauch.
Hier mal mein Code:
foreach ($xml_gang->gang->member_list->member as $user_id)// Id des User aus Banden-XML ziehen um User in Bande zu finden { $xmlfile_user = "http://www.{$city_auswahl}.pennergame.de/dev/api/user.{$user_id->id}.xml";// ermittelte User-ID verwenden und Userdaten auslesen $xml_user = simplexml_load_file($xmlfile_user); $punkte = $xml_user->user[0]->points[0];// Userpunkte $bandebeitrit = $xml_user->user->gang[0]->joined[0];// Eintritt in Bande $username = $user_id->name; $punkte_gesamt += $punkte;// Berechnen Gesamtpunkte Bande // Daten Ausgeben Form= Name | Punkte | Beitritt echo " <tr> <td>$username</td> <td>$punkte</td> <td>$bandebeitrit</td> </tr> "; }
So werden mir die Daten unsortiert ausgegeben, halt so wie sie aus der XML kommen. Ich würde sie nun gern nach den Punkten sortieren (
). Ich vermute mal ich muss die Daten als erste in ein Array bekommen und dann per$punkte
in die richtige Reihenfolge bringen. Genau das bekomme ich aber nicht gebacken. Vielleicht kann mir ja jemand dabei helfen.sort
LG Marco
Beitrag zuletzt geändert: 27.4.2015 12:14:46 von aff3m1tw4ff3 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mach es doch in JavaScript. Der Vorteil: Besucher deiner Website können so sortieren wie sie wollen; Beispiel http://www.j-berkemeier.de/TableSort.html
-
aff3m1tw4ff3 schrieb:
Ich vermute mal ich muss die Daten als erste in ein Array bekommen und dann per
in die richtige Reihenfolge bringen.sort
Hallo Marco,
ja, da liegst Du richtig!
Alles was Dir fehlt, findest Du bei Google unter "php mehrdimensionales array".
Da kann ich dir z.B. folgenden Link empfehlen:
http://www.php-kurs.com/arrays-mehrdimensional.htm
Gruss Dunkeltuten
Beitrag zuletzt geändert: 27.4.2015 12:27:33 von dunkeltuten -
Hi,
danke natürlich als erstes, ich bin direkt ein Stück weiter.
@mein-wunschname:
Auf JS würde ich da gern verzichten, der User muss dort auch nichts nachsortieren. Es zählt dort nur die eine Sortierung nach Punkten. Alle anderen Sortierungen wären unbrauchbar.
@dunkeltuten:
Das habe ich mir gedacht, hatte auch schon Google bemüht, aber nichts Brauchbares gefunden. Nun habe ich folgendes.
In meine vorhandene foreach habe ich folgendes hinzugefügt:
$sortieren[] = array('Name' => "$username", 'Punkte' => "$punkte", 'Bande' => "$bandebeitrit");
Das läuft soweit auch schon mal, ich bekomme mein Array mit den richtigen Daten per
angezeigt.print_r ( $sortieren);
Nun versuche ich das Array zu sortieren.
Dazu habe ich außerhalb der bereits vorhanden foreach das folgende eingefügt:
foreach ($sortieren as $sortiert => $inhalt) { $name[$sortieren] = strtolower( $inhalt['Name'] ); $punkte[$sortieren] = strtolower( $inhalt['Punkte'] ); $bandebeitrit[$sortieren] = strtolower( $inhalt['Bande'] ); } array_multisort($punkte, SORT_DESC, $sortieren);
Lasse ich es mir nun ausgeben per
, erhalte ich allerdings das gleiche unsortierte Array wie vorher. Ich vermute mal stark, ich habe was falsch gemacht. Die Frage ist nun was?print_r ( $sortieren);
LG Marco
-
Hey,
versuche es doch mal mit JavaScript. Wenn das nicht klappt oder dir nicht gefällt findest du bestimmt im Internet eine andere Lösung.
Aber JavaScript sollte klappen. -
Thema JS bitte mal den ersten Beitrag von mir beachten, das ist nicht gewollt.
Ich hab jetzt noch ne Menge rumprobiertm, stehe aber weiter auf dem Schlauch.
Ich bekomme mein Array am Ende zwar ausgegeben, es bleibt aber weiter unsortiert.
foreach ($xml_gang->gang->member_list->member as $user_id)// Id des User aus Banden-XML ziehen um User in Bande zu finden { $xmlfile_user = "http://www.{$city_auswahl}.pennergame.de/dev/api/user.{$user_id->id}.xml";// ermittelte User-ID verwenden und Userdaten auslesen $xml_user = simplexml_load_file($xmlfile_user); $punkte = $xml_user->user[0]->points[0];// Userpunkte $bandebeitrit = $xml_user->user->gang[0]->joined[0];// Eintritt in Bande $username = $user_id->name; $punkte_gesamt += $punkte;// Berechnen Gesamtpunkte Bande $sortieren[] = array('Name' => "$username", 'Punkte' => "$punkte" ); // Daten Ausgeben Form= Name | Punkte | Beitritt echo " <tr> <td>$username</td> <td width=\"100px\">$punkte</td> <td>$bandebeitrit</td> </tr> "; } echo "</table>"; echo "<br>"; echo "<cite style=\"color:red\">Gesamt: $punkte_gesamt</cite>"; foreach ($sortieren as $key => $row) { $username[$key] = $row['Name']; $punkte[$key] = $row['Punkte']; } array_multisort($punkte, SORT_DESC, $sortieren);
Tante Edit:
Problem gefunden, da die Variablen den gleichen Namen hatten, wurde einfach das alte Array ausgegeben. Hab jetzt eine 2te foreach gesetzt und nun geht es.
foreach ($sortieren as $key => $row) { $username_sort[$key] = $row['Name']; $punkte_sort[$key] = $row['Punkte']; $beitritt_sort[$key] = $row['Beitritt']; } array_multisort($punkte_sort, SORT_DESC, $sortieren);
Beitrag zuletzt geändert: 27.4.2015 17:32:45 von aff3m1tw4ff3 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage