2016-11-08 3 views
-1

zu bekommen Ich bin auf der Modellseite fest, wo ich eine Schleife schreiben muss, die einige bestimmte Werte von mysql auswählt. Die Tabelle sieht wie folgt aus:Schleife, um mysql Werte mit php codenigniter

0  2016-11-06 08:36:19 
 
7300 2016-11-06 08:43:11 
 
19200 2016-11-06 08:43:12 
 
35980 2016-11-06 08:43:17 
 
45600 2016-11-06 08:43:21 
 
45820 2016-11-06 08:43:27 
 
45840 2016-11-06 08:43:28 
 
45860 2016-11-06 08:43:29 
 
26940 2016-11-06 08:44:34 
 
19760 2016-11-06 08:44:36 
 
3440 2016-11-06 08:44:38 
 
0  2016-11-06 08:44:44 
 
1400 2016-11-06 08:46:00 
 
7120 2016-11-06 08:46:04 
 
11240 2016-11-06 08:46:06 
 
11220 2016-11-06 08:46:10 
 
11240 2016-11-06 08:46:11 
 
11220 2016-11-06 08:46:12 
 
3940 2016-11-06 08:46:51 
 
0  2016-11-06 08:46:56

Grundsätzlich ist dieser Einträge aus einem Gewichtungs Maschine erzeugt sind und in meiner Datenbank funktioniert wie folgt eingefügt:

Wenn etwas auf der Waage ist, die Einträge werden von 0 auf das tatsächliche Gewicht des Objekts auf der Gewichtsmaschine aktualisiert, aber bis sie das reale Gewicht erreichen, bekomme ich alle Werte hoch. Wenn der Unterschied auf 3-4 die Einträge weniger als 50kg ist, sind wir am realen Gewicht. Dann wird das Gewicht wieder auf 0 fallen und es wird der gleiche Zyklus beginnen, wenn etwas darauf ist. Aus dem obigen Beispiel sind dies die Einträge Ich bin interessiert an:

45840 2016-11-06 08:43:28 
 
11220 2016-11-06 08:46:10

Ich dachte jeden Eintrag mit dem folgenden zu vergleichen, und wenn die Differenz kleiner als 50 kg für 3 Einträge, holen Sie sich einen der Einträge und machen Sie so weiter für andere, aber ich weiß nicht, wie genau ich das in PHP machen kann.

$sql = "SELECT weight, added_date FROM balance_events WHERE added_date BETWEEN '".$from_date."' AND '".$to_date."'"; 
 
      $query = $this->db->query($sql); 
 
      $result = $query->result(); 
 
      for weight in result: 
 
      // TO DO the loop 
 
      return $result;

Wie mache ich meine for-Schleife, um die gewünschte Ausgabe zu erhalten? Gibt es auch eine Möglichkeit, den Zeitstempel auf dem added_date zu überprüfen, um die Zeit des Gewichtsereignisses (0 bis 0) auf mehr als 5 Minuten zu beschränken und diejenigen zu ignorieren, deren Dauer weniger als 5 Minuten beträgt?

Antwort

0

Durch Ihre Anfrage unter der Annahme richtig ist

$sql = "SELECT weight, added_date FROM balance_events WHERE added_date BETWEEN '".$from_date."' AND '".$to_date."'"; 
$query = $this->db->query($sql); 
$result = $query->result(); 

$max = 0; 

foreach($result as $one) 
{ 
    if($one > $max) 
    { 
     $max = $one; 
    } 
    else 
    { 
     continue; 
    } 
} 
return $max; 
+0

Diese erhalten nur 1 Wert, für jeden gewünschten Zeitraum ein, aber wie in dem Beispiel, das ich brauche/jedes Intervall von 0 bis 0 1 Wert zu erhalten, wenn ich mit meinem Beispiel versuchen, dies wird nur dann ausgegeben, 45860 2016-11 -06 08:43:29, ich denke, dass Sie jedes Mal zurücksetzen müssen, wenn Sie einen Wert erhalten und eine Art Liste erstellen. – Rommel

0

Hier ist die Abfrage, um die Werte zu erhalten, indem für Schleife und Zustand über 5 Minuten zu bekommen.

 $sql = "SELECT weight, added_date, MINUTE(added_date) As minute FROM balance_events WHERE added_date BETWEEN '".$from_date."' AND '".$to_date."'"; 
        $query = $this->db->query($sql); 
        foreach($query->result() as $row){ 
         if($row->minute > 5){ 
          echo $weight=$row->weight; 
          echo $added_date=$row->added_date; 
         } 
        } 
+0

Was soll ich von diesem zurückgeben? – Rommel

+0

Abfrage wird die Werte mit mehr als 5 Minuten Bedingung zurückgeben –