Ankündigung

Einklappen
Keine Ankündigung bisher.

Sortieren einer XML in PHP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sortieren einer XML in PHP

    Ich weiß, es klingt komisch kanns aber nicht anders erklären und hab schon gegoogled wie doof. Leider weiß ich nicht ob die xml auslese jetzt nen array oder sonst was ist jedenfalls werden die daten drin gespeichert.

    PHP-Code:
    <br /><h4>
    <div align="center" style="padding-top:4px"><?php

        ini_set
    ('user_agent'"Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8) Gecko/20051111 Firefox/1.5");

        
    $xmlfile "http://eu.wowarmory.com/guild-info.xml?r=Lothar&gn=Destiny+of+Ophidian";

        
    $url = @file_get_contents($xmlfile);
        
    $xml simplexml_load_string($url);

         foreach (
    $xml->guildInfo->guild->members->character as $membercount1) {
            if (
    $membercount1["rank"] == || $membercount1["rank"] == || $membercount1["rank"] == || $membercount1["rank"] == || $membercount1["rank"] == || $membercount1["rank"] == || $membercount1["rank"] == || $membercount1["rank"] == || $membercount1["rank"] == 9)
               {
                 
    $membercount $membercount+1;
            }
        }
        
        echo 
    "<br />";
        echo 
    "<table width='700' border='0'>";
        echo 
    "    <tr>";
        echo 
    "        <td width='200'>";
        echo 
    "            <strong>Charaktername</strong>";
        echo 
    "        </td>";
        echo 
    "        <td width='50'>";
        echo 
    "            <strong>Level</strong>";
        echo 
    "        </td>";
        echo 
    "        <td width='50'>";
        echo 
    "            <strong>Volk</strong>";
        echo 
    "        </td>";
        echo 
    "        <td width='100'>";
        echo 
    "            <strong>Klasse</strong>";
        echo 
    "        </td>";
        echo 
    "        <td width='100'>";
        echo 
    "            <strong>Rang</strong>";
        echo 
    "        </td>";
        echo 
    "        <td width='200'>";
        echo 
    "            <strong>$membercount Aktive Member</strong>";
        echo 
    "        </td>";
        echo 
    "    </tr>";
        echo 
    "    <tr>";
        echo 
    "        <td width='200'>&nbsp";
        echo 
    "        </td>";
        echo 
    "        <td width='50'>&nbsp";
        echo 
    "        </td>";
        echo 
    "        <td width='50'>&nbsp";
        echo 
    "        </td>";
        echo 
    "        <td width='100'>&nbsp";
        echo 
    "        </td>";
        echo 
    "        <td width='100'>&nbsp";
        echo 
    "        </td>";
        echo 
    "    </tr>";
        echo 
    "    <tr>";
        
         foreach (
    $xml->guildInfo->guild->members->character as $member) {
        
        if (
    $member["rank"] == || $member["rank"] == || $member["rank"] == || $member["rank"] == || $member["rank"] == || $member["rank"] == || $member["rank"] == || $member["rank"] == || $member["rank"] == 9)
        {
            echo 
    "        <td width='200'>";
                            echo 
    utf8_decode($member["name"]); echo "<br />";
            echo 
    "        </td>";
            
            echo 
    "        <td width='50'>";
                            echo 
    $member["level"]; echo "<br />";
            echo 
    "        </td>";
            
            echo 
    "        <td width='50'>";
            if (
    $member["genderId"] == 0)
            {
                if (
    $member["raceId"] == 2) {    $rasse "<img src='http://eu.wowarmory.com/_images/icons/race/2-0.gif' title='Ork' width='18' height='18'/>";    }
                if (
    $member["raceId"] == 5) {    $rasse "<img src='http://eu.wowarmory.com/_images/icons/race/5-0.gif' title='Untoter' width='18' height='18'/>";    }
                if (
    $member["raceId"] == 6) {    $rasse "<img src='http://eu.wowarmory.com/_images/icons/race/6-0.gif' title='Taure' width='18' height='18'/>";    }
                if (
    $member["raceId"] == 8) {    $rasse "<img src='http://eu.wowarmory.com/_images/icons/race/8-0.gif' title='Troll' width='18' height='18'/>";    }
                if (
    $member["raceId"] == 10) {    $rasse "<img src='http://eu.wowarmory.com/_images/icons/race/10-0.gif' title='Blutelf' width='18' height='18'/>";    }
            }
            if (
    $member["genderId"] == 1)
            {
                if (
    $member["raceId"] == 2) {    $rasse "<img src='http://eu.wowarmory.com/_images/icons/race/2-1.gif' title='Ork' width='18' height='18'/>";    }
                if (
    $member["raceId"] == 5) {    $rasse "<img src='http://eu.wowarmory.com/_images/icons/race/5-1.gif' title='Untote' width='18' height='18'/>";    }
                if (
    $member["raceId"] == 6) {    $rasse "<img src='http://eu.wowarmory.com/_images/icons/race/6-1.gif' title='Taure' width='18' height='18'/>";    }
                if (
    $member["raceId"] == 8) {    $rasse "<img src='http://eu.wowarmory.com/_images/icons/race/8-1.gif' title='Troll' width='18' height='18'/>";    }
                if (
    $member["raceId"] == 10) {    $rasse "<img src='http://eu.wowarmory.com/_images/icons/race/10-1.gif' title='Blutelf' width='18' height='18'/>";    }
            }
            echo 
    $rasse; echo "<br />";
            echo 
    "        </td>";
            echo 
    "        <td width='50'>";

                if (
    $member["classId"] == 1) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/1.gif' title='Jäger' width='18' height='18'/>";    }
                if (
    $member["classId"] == 2) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/2.gif' title='Jäger' width='18' height='18'/>";    }
                if (
    $member["classId"] == 3) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/3.gif' title='Jäger' width='18' height='18'/>";    }
                if (
    $member["classId"] == 4) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/4.gif' title='Jäger' width='18' height='18'/>";    }
                if (
    $member["classId"] == 5) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/5.gif' title='Jäger' width='18' height='18'/>";    }
                if (
    $member["classId"] == 6) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/6.gif' title='Jäger' width='18' height='18'/>";    }
                if (
    $member["classId"] == 7) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/7.gif' title='Jäger' width='18' height='18'/>";    }
                if (
    $member["classId"] == 8) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/8.gif' title='Jäger' width='18' height='18'/>";    }
                if (
    $member["classId"] == 9) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/9.gif' title='Jäger' width='18' height='18'/>";    }
                if (
    $member["classId"] == 10) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/10.gif' title='Jäger' width='18' height='18'/>";    }
                if (
    $member["classId"] == 11) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/11.gif' title='Jäger' width='18' height='18'/>";    }
                if (
    $member["classId"] == 12) {    $klasse "<img src='http://eu.wowarmory.com/_images/icons/class/12.gif' title='Jäger' width='18' height='18'/>";    }
                    
                            echo 
    $klasse; echo "<br />";
            echo 
    "        </td>";
              echo 
    "        <td width='100'>";

                if (
    $member["rank"] == 0) {    $rang "Ophidian";    }
                if (
    $member["rank"] == 1) {    $rang "Lord";    }
                if (
    $member["rank"] == 2) {    $rang "Kleriker";    }
                if (
    $member["rank"] == 3) {    $rang "Söldner";    }
                if (
    $member["rank"] == 4) {    $rang "Lehrling";    }
                if (
    $member["rank"] == 5) {    $rang "Silencer";    }
                if (
    $member["rank"] == 6) {    $rang "Twink";    }
                if (
    $member["rank"] == 7) {    $rang "Schlichter";    }
                if (
    $member["rank"] == 8) {    $rang "Raid Assi";    }
                if (
    $member["rank"] == 9) {    $rang "Group Assi";    }
                
                echo 
    $rang; echo "<br />";
                echo 
    "        </td>";
            }
            echo 
    "    </tr>";
        }
        echo 
    "</table>";
    ?>
    </div>
    Nun weiß ich garnicht wo ich sortieren soll. Hab schon versucht einfach sort($xml) aber bin etwas ratlos gerade.. soll ich einfach die xml datei in die datenbank eintragen lassen anstat sie mit echo auszugeben sie mit php aus sql wieder auslesen weil sql sort konnte ich mal >.> oh man sry

    Wär lieb wenn ihr mir auf die sprünge helfen würdet ^^

    LG
    Daniel

  • #2
    Was simplexml zurückgibt, ist ein Objekt. Das zu sortieren ist so ohne weiteres nicht möglich. Was genau willst du denn sortieren? Und vor allem wie?
    [url]www.php-maven.org[/url] PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
    Twitter @ [url]https://twitter.com/#!/mepeisen[/url] und Facebook @ [url]http://t.co/DZnKSUih[/url]

    Kommentar


    • #3
      http://www.ophidian.de/index.php?Inhalt=Member

      Die memberliuste per klick auf die tabs wird dann vermutlcih nicht möglich sein gell? ^^

      mir würde es schon reichen wenn es alphabetisch wäre

      Kommentar


      • #4
        Hab sowas auch vor kurzem gesucht und das hier gefunden:
        Sortieren mit JS

        Hoffe das hilft dir.

        Wie das beim sortieren nach Volk/Klasse läuft, da du dort Bilder hast, kann ich grad nicht sagen.

        Kommentar


        • #5
          Davon abgesehen könntest du das, was an infos aus dem xml kommt, temporär in ein anderes array zwischenspeichern, dann sortieren und dann erst das sortierte array ausgeben. Nicht elegant, da aber SimpleXML keine Sortiermöglichkeit hat sondern die Objekte so zurückgibt wie sie im XML der Reihe nach auftauchen, gehts nicht anders.
          [url]www.php-maven.org[/url] PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
          Twitter @ [url]https://twitter.com/#!/mepeisen[/url] und Facebook @ [url]http://t.co/DZnKSUih[/url]

          Kommentar


          • #6
            Machst DU die Ausgabe denn mit XSLT? Ich denke mal, nicht. Ergo könntest Du bequem dort ansetzen, wo Du ohnehin schon die Elemente durchläufst.
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #7
              Statt alle Kindelemente abzuwickeln xpath benutzen und dem xpath-query mitgeben wie du was und in welche Richtung sortieren willst. XPATH ( genauer XQUERY ) kann in der Form genauso sortieren wie es ein SQL-Query könnte.

              Das file_get_contents spar dir, öffne die url direkt per simplexml_load_file(), außerdem solltest generell per [man]CURL[/man] auf solche APIs zurückgreifen, damit du etwaige Header-Informationen über redirects / old / moved Statusse vor dem Auswerten des entnommenen Bodies auswerten kannst.

              Nebenbei:

              Das World of Warcraft Armory API der alten WoW-Armory Seiten ist und war nie sonderlich performant, ich weiß nicht inwieweit Blizzard Entertainment schon eine neue API veröffentlicht hat aber ich würde wenn diese nutzen da dort auch alle Referenz-Daten des aktuellen Addons korrekt veröffentlicht werden ( was beim alten Armory wohl nicht der fall sein wird / kann ).

              Repräsentiere dich im übrigen nicht als Standard-Browser an den Blizzard-APIs, da dort unter anderem Redirects geschaltet sind, die "Besucher" mit normalen Browsern auf die neuen Armory-Seiten umleiten sollen.

              alt: http://eu.wow-armory.com
              neu: http://eu.battle.net/wow/de/character

              Außerdem ( wenn der englischen Sprache mächtig ) da lesen gehen: http://us.battle.net/wow/en/forum/topic/969726977#8
              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

              Kommentar

              Lädt...
              X