kostenloser Webspace werbefrei: lima-city


Daten aus XML sortieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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 (
    $punkte
    ). Ich vermute mal ich muss die Daten als erste in ein Array bekommen und dann per
    sort
    in die richtige Reihenfolge bringen. Genau das bekomme ich aber nicht gebacken. Vielleicht kann mir ja jemand dabei helfen.


    LG Marco


    Beitrag zuletzt geändert: 27.4.2015 12:14:46 von aff3m1tw4ff3
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. mein-wunschname

    mein-wunschname hat kostenlosen Webspace.

    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
  4. aff3m1tw4ff3 schrieb:
    Ich vermute mal ich muss die Daten als erste in ein Array bekommen und dann per
    sort
    in die richtige Reihenfolge bringen.

    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
    :spammer:

    Gruss Dunkeltuten

    Beitrag zuletzt geändert: 27.4.2015 12:27:33 von dunkeltuten
  5. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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
    print_r ( $sortieren);
    angezeigt.

    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
    print_r ( $sortieren);
    , erhalte ich allerdings das gleiche unsortierte Array wie vorher. Ich vermute mal stark, ich habe was falsch gemacht. Die Frage ist nun was?

    LG Marco
  6. vveltephotographie

    vveltephotographie hat kostenlosen Webspace.

    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.
  7. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!