Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Probleme bei mehrdimensionalen Array

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Probleme bei mehrdimensionalen Array

    Hallo ich hab ein Problem mit einem Array
    Ich habe eine Datenbank mit Sensoren zu denen Temperaturen gespeichert werden.
    Wenn ich jetzt mir ein Sensor aussuche und mir dafür die Temperatur und das Datum hole ist das kein Problem. Das sieht dann bei mir wie folgt aus.
    PHP-Code:
    $result mysql_query ("SELECT temp, date FROM logentry WHERE monitor = '18726' AND date >= '$mindate' AND date <= '$maxdate' ORDER BY DATE");
    $num mysql_num_rows($result); 
    $empfang[0][0] = 'date';
    $empfang[0][1] = '18726';
    $i =1;
    while(
    $row mysql_fetch_array($result)) {
            
    $empfang[$i][0] = $row['date'];
            
    $empfang[$i][1] = (float)$row['temp'];
            
    $i $i+1
                    

    Probleme bekomme ich jetzt wenn ich in das gleiche Array noch die Temperaturen eines weiteren Sensors einfügen möchte. Hier ist mein Codeversuch aber der funktioniert nicht
    PHP-Code:
    $result mysql_query ("SELECT temp, date FROM logentry WHERE monitor = '18726' AND date >= '$mindate' AND date <= '$maxdate' ORDER BY DATE");
    $result2 mysql_query ("SELECT temp FROM logentry WHERE monitor = '18870' AND date >= '$mindate' AND date <= '$maxdate' ORDER BY DATE");
    $num mysql_num_rows($result); 
    $empfang[0][0] = 'date';
    $empfang[0][1] = '18726';
    $empfang[0][2] = '18870';
    $i =1;
    while(
    $row mysql_fetch_array($result)) {
            
    $empfang[$i][0] = $row['date'];
            
    $empfang[$i][1] = (float)$row['temp'];
            
    $empfang[$i][2] = (float)$row[$result2];
            
    $i $i+1
            
            

    Ist mir auch klar das er nicht funktioniert, aber ich habe keine weitere Idee wie es gehen könnte. Vielleicht kann mir da jemand helfen???

  • #2
    Code:
    while($row = mysql_fetch_array($result)) { 
            $empfang[$i][0] = $row['date']; 
            $empfang[$i][1] = (float)$row['temp']; 
            $empfang[$i][2] = (float)$row[$result2]; 
            $i = $i+1;
    mal abgesehen von dem gesamten Versuch..was sagt Dir das rote?

    Kommentar


    • #3
      Ja hab kapiert das es so nicht geht. Hab es jetzt versucht mit array_combine oder array_map aber leider geht es so auch nicht. Hab auch das Problem, dass es passieren kann, dass zu dem einen Sensor 10 Messwerte da sind und zu dem anderen nur 9.
      Beschäftige mich gerade mal paar Tage mit php und sql. Kenne mich da einfach noch nicht gut genug mit aus.
      Hab jetzt schon mal ein Array mit Datum und Temperatur und ein weiteres Array mit den anderen Temperaturen. Jetzt muss ich die nur noch zusammenbekommen

      Kommentar


      • #4
        Mir ist der Ansatz nicht ganz klar.. Was ist wenn Du Messwerte von 5 Sensoren brauchst.. Schreibst Du dann den ganzen Quellcode um?

        Und auch bezogen darauf:
        Zitat von Fab7846 Beitrag anzeigen
        ...dass es passieren kann, dass zu dem einen Sensor 10 Messwerte da sind und zu dem anderen nur 9.

        Vorschlag:
        Alle in einem Query rausholen, und mittels "Gruppenbruch" (siehe unten) darstellen.

        "SELECT temp, date FROM logentry WHERE (monitor = 18726 OR monitor = 18870) AND date >= '$mindate' AND date <= '$maxdate' ORDER BY monitor, date"
        - Gruppenbruch: http://www.php.de/wiki-php/index.php...rdverfahren%29
        - Das monitor = 18726 OR monitor = 18870 kannst dynamisch erstellen und/oder auch WHERE monitor IN (18726, 18870, 18123, 18590) machen
        - Die erste Bedingung im qwery würd ich dann sicherheitshalber Klammern
        - Übringes: Zahlen brauchst im query nicht mit Hochommas versehen ("...INT" Felder)

        Kommentar


        • #5
          Also im Moment ist es so, dass ich nur die Messwerte von 2 Sensoren brauche. Das Array nutze ich dann später um ein Diagramm zu erstellen.

          Das Problem ist, dass die Sensoren nicht alle zum gleichen Zeitpunkt messen.
          Und so wird das dann mit dem Diagramm schwierig. Da ich vielleicht um 12:00 Uhr einen Wert vom Sensor 1 habe und um 12:01 einen von Sensor 2.

          Deshalb wollte ich mir nur von einem Sensor das Datum holen und die Temperatur und von dem anderen Sensor nur die Temperatur und so das Array auffüllen.

          Somit ist die x-Achse das Datum und auf der y-Achse können die beiden Kurven für die Temperatur angezeigt werden.


          Von Gruppenbruch hab ich bis jetzt noch nichts gehört, werd es mir aber mal anschauen. Danke für den Tip erstmal.

          Kommentar


          • #6
            Man ich komm einfach nicht weiter. Das nervt mich gerade hier richtig. Ich möchte einfach am Ende ein Array haben das wie folgt aussieht:
            Array
            (
            [0] => Array
            (
            [0] => date
            [1] => 18726
            [2] => 18870
            )

            [1] => Array
            (
            [0] => 2012-01-24 00:01:00
            [1] => 7.15
            [2] => 21.18
            )

            [2] => Array
            (
            [0] => 2012-01-24 00:01:18
            [1] => 7.15
            [2] => 21.08
            )

            [3] => Array
            (
            [0] => 2012-01-24 00:01:49
            [1] => 7.16
            [2] => 20.90
            )

            [4] => Array
            (
            [0] => 2012-01-24 00:02:56
            [1] => 7.16
            [2] => 21.00
            )

            [5] => Array
            (
            [0] => 2012-01-24 00:03:01
            [1] => 7.8
            [2] => 21.1
            )

            Und wenn ein Sensor weniger Einträge hat, dann sollen Sie einfach mit den letztem Eintrag aufgefüllt werden. Die Formatierung ist leider so vorgegeben durch die "tollen" Google Chart Tools.

            Ich weiß einfach nicht mehr weiter. Bei diesem Gruppenbruch wird mir auch nicht klar wie mir das weiter helfen soll. Noch irgendwelche Tips?

            Kann ich in den $empfang[$i][1] = (float)$row['temp']; Teil nicht eine weitere Bedingung angeben oder so?
            Vielleicht so im Wortlaut: $empfang[$i][1] = (float)$row['temp' WO 'monitor'=18726]; oder ähnlich

            Kommentar


            • #7
              Ok hab es hinbekommen mit ganz vielen If Schleifen. Ist glaube nicht so wie ihr es machen würdet. Aber für mich reicht es und es funktioniert auch so. Daher trotzdem danke für die Tips.

              Kommentar

              Lädt...
              X