DB & Multidimensionales Array

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

  • DB & Multidimensionales Array

    Mahlzeit!

    Ich wollte nur mal eben fragen ob mir jmd bei der erstellung eines Multidimensionalen Arrays helfen kann!?

    Das ganze sieht so aus: Eine DB liefert mir bis zu 3845 Rows mit verschiedensten Werten.

    Nun soll jede Row angefangen bei 0 eine Dimension im Array bekommen (Bsp: $foo[0][bar] = 'hello world'; )

    Ich bekomm das mit foreach() absolut nicht auf die Reihe...

    Danke schon mal vorab für Anregungen und Tritte weil ich zu feige war meine kläglich gescheiterten Lösungsansätze zu posten! *gg*
    WHILE (!$asleep) { $sheep++; }

  • #2
    erstellen ist einfach, mach mal so:

    PHP-Code:
    $output = array();
    while (
    $row=mysql_fetch_...) 
       
    $output[]=$row;
    print_r($output); 
    dann hast du dein Array.

    Kommentar


    • #3
      *loool*

      Ich muss zugeben dass ich schon ne Stunde daran rumwerke und die Lösung ist sooo einfach!?

      BIG THX!
      WHILE (!$asleep) { $sheep++; }

      Kommentar


      • #4
        Kann man nun aus dem Array eine bestimmte Zeile wie aus ner DB auswählen?

        Beispiel: "timestamp" ist denk ich ein Begriff....

        -> Suche im Array wo timestamp > 0815 && timestamp < 4711
        WHILE (!$asleep) { $sheep++; }

        Kommentar


        • #5
          in_array
          btw: das kann man auch vorher per sql filtern.

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Schon klar Kropff, aber so kann ich ja nur einen bestimmten Wert rausfiltern!
            Ich bräuchte das aber mit größer-gleich und kleiner-gleich.

            P.s.: Mit SQL vorfiltern will ich aus folgendem Grund nicht:
            Die DB aus der ich auslese sammelt in 2 Monaten 1,5mio. Datensätze und dem entsprechend dauert auch das Auslesen 5 sec.
            Wenn ich jeden Wert einzeln auslesen würde, wären das 3845 * 5 sec Wartezeit
            WHILE (!$asleep) { $sheep++; }

            Kommentar


            • #7
              nein auf keinen Fall!!

              du musst mit SQL rausfiltern das ist ERHEBLICH schneller als mit PHP!!!

              vllt machst du es ja auch nur falsch?
              Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
              - ...und solche Behauptungen in "falsches Resourcenmanagement"

              Kommentar


              • #8
                hm ... wie sieht die Struktur deiner Tabelle(n) aus, schon mal Index optimiert, wer will denn soviele Daten auf ein Mal bewerten?

                Kommentar


                • #9
                  Table sieht so aus....

                  id int(11) (auto incr) - PRIMARY
                  server_ip varchar(15) - INDEX
                  server_port int(6)
                  server_query int(9)
                  server_name varchar(50)
                  server_uptime int(11)
                  trf_ls_in int(11)
                  trf_ls_out int(11)
                  trf_ttl_b_in int(11)
                  trf_ttl_b_out int(11)
                  trf_ttl_p_in int(11)
                  trf_ttl_p_out int(11)
                  user_on int(4)
                  user_max int(4)
                  timestamp int(11)

                  Naja ich will eine graphische Auswertung bauen. Statistik hald...
                  WHILE (!$asleep) { $sheep++; }

                  Kommentar


                  • #10
                    vllt aufsplitten?

                    das scheint mir ja keine 3. Normalform zu sein

                    aber vllt wäre noch eine kleine Erklärung gut. Was sind die trf_* ??
                    Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                    - ...und solche Behauptungen in "falsches Resourcenmanagement"

                    Kommentar


                    • #11
                      Ok genauer:

                      300 Server senden ihre Daten per $_POST in eine DB. Diese ist allein schon durch das einspeichern ziehmlich ausgelastet (bis zu 35 gleichzeitige Einträge).
                      Die Tabelle sieht so aus:

                      id int(11), auto incr - PRIMARY
                      Id des Eintrags...
                      server_ip varchar(15) - INDEX
                      Ip eines Servers...
                      server_port int(6)
                      UDPport eines Servers...
                      server_query int(9)
                      Queryport eines Servers...
                      server_name varchar(50)
                      Name des Servers...
                      server_uptime int(11)
                      Laufzeit des Servers...
                      trf_ls_in int(11)
                      Eingehender Traffic in der letzten Sek.
                      trf_ls_out int(11)
                      Ausgehender Traffic in der letzten Sek.
                      trf_ttl_b_in int(11)
                      Empfangene BYTES total...
                      trf_ttl_b_out int(11)
                      Gesendete BYTES total...
                      trf_ttl_p_in int(11)
                      Empfangene Packets total...
                      trf_ttl_p_out int(11)
                      Gesendete Packets total...
                      user_on int(4)
                      Clients auf dem Server...
                      user_max int(4)
                      Freie Slots auf dem Server...
                      timestamp int(11)
                      Unix Zeit - Datum & Uhrzeit seit 1.1.1970
                      WHILE (!$asleep) { $sheep++; }

                      Kommentar


                      • #12
                        und wasfür Statistik willst du machen, geht's denn genauer, aus welchen Daten soll denn deine Wertetabelle bestehen/enthalten?

                        Kommentar


                        • #13
                          Eine graphische Statistik über alle Werte.

                          Ein kleines Bsp. (leider nur mit 2 Werten):


                          Edit:
                          Eine viell. etwas aussergewöhnliche Lösung wäre, die Datensätze in ne temp.DB einzuspielen und danach zu löschen. Was meint ihr!?
                          Zuletzt geändert von nichtsooft; 05.03.2007, 22:29.
                          WHILE (!$asleep) { $sheep++; }

                          Kommentar


                          • #14
                            ist es da nicht fast schneller/besser mit anderen Programmiersprachen zu arbeiten?

                            Zur änderung der DB(sind nur spontane Ideen, die von den "BigBosses" bestätigt werden sollten vor der Anwendung):
                            - Auslagern von Traffic in eine extra Tabelle, besonders Traffic/Packets Total solltest du dir anders überlegen! Ständige abspeicherung eines incrementierenden wertes ist Ress. verschwendung.
                            - Unter der annahme, dass die Serverdaten(ip,name,port,query) gleich bleiben:
                            2 Tabellen:

                            server
                            id
                            ip
                            port
                            query
                            name
                            uptime
                            usermax
                            uptime
                            trf_ttl_b_in int
                            trf_ttl_b_out int
                            trf_ttl_p_in int
                            trf_ttl_p_out int

                            natürlich nur 1 Eintrag pro server, der dann geupdated wird

                            traffic_now
                            id
                            server_id
                            trf_ls_in int
                            trf_ls_out int
                            useron
                            timestamp

                            useron ließe sich theoretisch auch in server schreiben, kommt drauf an ob du zuückverfolgen willst, wieviel User online waren oder nicht
                            Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                            - ...und solche Behauptungen in "falsches Resourcenmanagement"

                            Kommentar


                            • #15
                              Servername, Port, Query, IP, etc. bleiben nicht gleich.

                              Ne andere Programmiersprache kommt nicht in Frage, weil die Server die Daten nur per POST weiter geben und ich somit nicht anders arbeiten kann.
                              Somit ist es auch wiederum egal ob 1 oder 2 Tabellen.
                              WHILE (!$asleep) { $sheep++; }

                              Kommentar

                              Lädt...
                              X