Mehrdimensionaler Array Sortieren

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

  • Mehrdimensionaler Array Sortieren

    Hallo

    Folgende Ausganslage:

    Ich möchte aus der Datenbank, aus einer Tabelle die Kreise und die dazugehörige Quartieren auslesen.

    SPALTENAME | WERT | BEZEICHNUNG
    -----------------------------------------------
    Kreis | 0 | 101
    Kreis | 0 | 102
    Kreis | 0 | 103
    Kreis | 1 | 104
    Kreis | 1 | 105
    Kreis | 1 | 106
    Kreis | 2 | 107
    Kreis | 2 | 108
    Kreis | 2 | 109
    Quartier | 101 | Hafensberg
    Quartier | 102 | Abental
    Quartier | 103 | xxx
    Quartier | 104 | xxxx
    Quartier | 105 | xx
    Quartier | 106 | xxxxx
    Quartier | 107 | xxxxx
    Quartier | 108 | xxxx
    Quartier | 109 | xxxxxx

    Function:

    PHP-Code:
    /*
        AUSGABE: RÜCKGABE ALLER QUARTIEREN ZU KREISEN - WIRD GECACHET
        BEISPIEL:
        */
        
    function GetAllQuartier(){
            global 
    $db;

            
    $sqlTBL $db->query("SELECT * FROM ff_webserverfart WHERE SPALTENNAME = 'Kreis_tbl' ORDER BY WERT ASC");
            while (
    $sqlTBL1 $db->fetch_array($sqlTBL)){
                
    $kreis_wert $sqlTBL1['WERT'];
                
    $kreis_bez $sqlTBL1['BEZEICHNUNG'];
                
    $sqlcommand "SELECT * FROM ff_webserverfart WHERE ";
                
    $sqlcommand .= "SPALTENNAME = 'Quartier' AND WERT = '$kreis_wert' ORDER BY BEZEICHNUNG ASC";
                
    $sqlRS $db->query($sqlcommand);
                while (
    $RS $db->fetch_array($sqlRS)){
                    
    $RS_CACHE[$kreis_bez][$RS['WERT']][$RS['BEZEICHNUNG']] .= $RS;

                }
            }
            

            return 
    $RS_CACHE;
        } 


    Aufruf:
    PHP-Code:
    foreach ($GetAllQuartier as $key => $value){
        
    $JS_Array .= "\n\tarray_quartiere[$key] = new Object();\n";
        foreach (
    $value as $key1 => $value1){
            foreach (
    $value1 as $temp_key2 => $temp_value2){
                
    $temp_var $temp_key2.",";
            }
            
    $temp_array = array($temp_var);
            
    natsort($temp_array);
            foreach (
    $temp_array as $key2 => $val2){
                
    $quartier_nummer $key;

                
    $JS_Array .= "\tarray_quartiere[$key][\"$key1\"] = \"$val2\";\n";
            }
        }



    Ergebnis - IST:

    array_quartiere[0] = new Object();
    array_quartiere[0]["101"] = "Hafnersberg,";
    array_quartiere[0]["102"] = "Breitfeld - Gr?ndenmoos,";
    array_quartiere[0]["103"] = "Winkeln Nord - Industrie,";

    array_quartiere[1] = new Object();
    array_quartiere[1]["201"] = "H?lzli - Jossr?ti,";
    array_quartiere[1]["202"] = "Rosenberg - Kreuzbleiche,";
    array_quartiere[1]["203"] = "Rieth?sli,";

    array_quartiere[2] = new Object();
    array_quartiere[2]["301"] = "Rotmonten,";
    array_quartiere[2]["302"] = "Langgass - Heiligkreuz,";

    Was ich jetzt will ist, dass die Namen der Quartiere sortiert ist.
    Irgendwie hab ich hier den Knoten.
    Habs auch versucht mit array_mulitsort() für den Mehrdimensionaler Array. Klappt irgendwie auch nicht.

    Wäre froh, wenn ich jemand hier kurz unterstützt. danke.
    Zuletzt geändert von chris010; 14.06.2006, 12:41.
    MFG CHRIS
    FlowFact AG

  • #2
    habe jetzt keine zeit, mir den code durchzulesen, zumal er falsch formatiert ist.

    trotzdem frage ich mich, warum es nicht möglich ist, die datensätze bei der sql-abfrage bereits sortieren zu lassen?

    Kommentar


    • #3
      habe jetzt keine zeit, mir den code durchzulesen, zumal er falsch formatiert ist.
      Was ist falsch formatiert?

      trotzdem frage ich mich, warum es nicht möglich ist, die datensätze bei der sql-abfrage bereits sortieren zu lassen?
      Folgendes:
      1. Ich rufe alle verfügbare Kreise mit dem dazugehörigen Werten (Wert zum Kreis und Quartier-Werten die zum Kreis angehören)

      2. Danach gibt er mir zu jedem Kreis die quartieren zurück (Es gibt z.B 3 Kreisen. Zu jedem Kreis hat es wiederum 3 Quartieren)

      Das Problem ist, die Quartieren und die Kreisen, sind in einer Tabelle (in Spalten, Wert und Bezeichnung unterteilt).

      Und nein. Ich kann dies nicht ändern, bzw. in zwei Tabellen teilen (wäre aber schön). Da die Vorgabe der CRM Hersteller so ist. Nun muss ich dazu eine lösung finden.
      MFG CHRIS
      FlowFact AG

      Kommentar


      • #4
        Original geschrieben von chris010
        Was ist falsch formatiert?
        http://www.php-resource.de/forum/sho...threadid=50454
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Ich weiss jetzt nicht, was jetzt in meinem Topic falsch ist, aber trotzdem danke für den Hinweis. Ist zur Kenntnis genommen.
          MFG CHRIS
          FlowFact AG

          Kommentar


          • #6
            brich den code um, damit man nicht scrollen muss.

            Kommentar


            • #7
              axo. naja. ich hab ein zimlich hohe auflösung. 1920x1200. Daher wusste ich nicht was ihr meint.
              MFG CHRIS
              FlowFact AG

              Kommentar


              • #8
                zum einen finde ich, dass $sqlcommand bereits richtig aufgebaut ist, sodass dein $RSirgendwas (was auch immer das sein mag) die datensätze richtig sortiert beinhalten sollte. ich würde an deiner stelle von dort aus anfangen zu debuggen - schau dir an (etwa mit pma), ob die "quartiere" nicht bereits sortiert geliefert werden.

                zum anderen ist das verschachteln von sql-anfragen nie sinnvoll gewesen. ich denke, die gewünschte relation "kreis-quartier" kriegst du mit einem join besser hin.

                Kommentar


                • #9
                  gewünschte relation "kreis-quartier" kriegst du mit einem join besser hin.
                  An dem JOIN hab ich auch gedacht, aber funzt ned, da es ja nur eine tabelle habe.

                  Sie mal wie die Ausgabe ist:

                  [0]["101"] = Hafnersberg
                  [0]["102"] = Breitfeld - Gr?ndenmoos
                  [0]["103"] = Winkeln Nord - Industrie

                  [WERT vom Kreis][N:N Kreis-Quartier] = Bezeichnung

                  Sortiert ist jetzt nach [N:N]. Was ich möchte ist, das es nach Bezeichnung sortiert wird. ***für so eine kleine Sache, so ein Aufwand. Ich hasse die Behörden (Wirtschaftsförderung) - Grrrr***
                  MFG CHRIS
                  FlowFact AG

                  Kommentar


                  • #10
                    An dem JOIN hab ich auch gedacht, aber funzt ned, da es ja nur eine tabelle habe.
                    das ist kein hindernis.

                    Sie mal wie die Ausgabe ist [...]
                    OffTopic:
                    ich??


                    du sollst mir nicht das ergebnis zeigen, dass du wasweißichwann bekommst, sondern das an der stelle, an der du die datensätze aus der db bekommst, noch besser natürlich durch pma abgefragt.

                    Kommentar


                    • #11
                      Original geschrieben von chris010
                      An dem JOIN hab ich auch gedacht, aber funzt ned, da es ja nur eine tabelle habe.
                      PHP-Code:
                      SELECT w1.*, w2.* 
                      FROM ff_webserverfahrt AS w1 
                      LEFT JOIN ff_webserverfahrt 
                      AS w2 
                      ON w1
                      .bezeichnung w2.wert 
                      WHERE w1
                      .spaltenname 'Kreis' 
                      AND w2.spaltenname 'Quartier' 
                      oder jedenfalls so ähnlich.

                      Gruß
                      ministry
                      ich glaube

                      Kommentar

                      Lädt...
                      X