Einzelnen Beitrag anzeigen
  #1  
Alt 11.04.2017, 19:28:46
flyer99 flyer99 ist offline
Anfänger
 
Registriert seit: Apr 2017
Alter: 44
Beiträge: 3
MySQL-Abfrage flexibel gestalten

Abend allerseits,

Ich hänge nun seit ca. 2 Tagen an einem Abfrageproblem und wende mich nun an euch ...

Hintergrundinfos:
Ich habe eine Datenbank welche mit Temperaturwerten gefüllt wird. Das darstellen als Diagramm dieser Werte machte ich bis dato mit Voreingestellten Datenreihen, sprich beim Drücken von Button1 kommen die Solarwerte, beim Drücken von Button2 die Kesselwerte usw.
Nun möchte ich das flexibel gestalten. Ich kann über Checkboxen auswählen welche Datenreihe ich sehen möchte. Das klappt auch (ich hole nur die Werte aus der Datenbank die ich angewählt habe) jedoch bei dem Punkt bei dem ich das Array befüllen muss welches für die Chartanzeige ist hänge ich ....

Hier bilde ich mir flexibel die Anweisung für das mysqli_query:
PHP-Code:
$result1="datumzeit";
$i=0;
if(
count($_POST["reihe"]))
   {
   while(
$i<count($_POST["reihe"]))
      {
      
//echo $_POST["reihe"][$i];
      //echo "<br>";
      
$result1=$result1 ', ' $_POST["reihe"][$i];
      
$i++;
      }
   } 

if (isset(
$_POST["alles"]) == "alles"):
   {
   
$result1 "datumzeit, aussentemp, speicherobentemp, speicherobentempsoll, kesseltemp, kesseltempsoll, brennerstatus, kollektortemp, speicheruntentemp, solarpumpestatus, nachladeunterdrueckungstatus, heizkreispumpestatus, speicherladepumpestatus, ansteuerungheizunt";
   }
endif; 

Und dann mein Problem bei der while-Schleife, wie gestalte ich das befüllen flexibel ???
PHP-Code:
require_once 'phplot-6.2.0/phplot.php'

$db mysqli_connect("RaspberryHeizung""pi""senf""vitola") or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");

if (isset(
$_POST["typ1"]) == "datum"):
   {
   
$result mysqli_query($db"SELECT $result1 FROM werte WHERE DATE(datumzeit) BETWEEN '".$_POST['datum1']."' AND '".$_POST['datum1']."'");
   }
endif;

if (isset(
$_POST["typ2"]) == "zeitfenster"):
   {
   
$result mysqli_query($db"SELECT $result1 FROM werte WHERE DATE(datumzeit) > DATE_SUB(DATE(NOW()), INTERVAL ".$_POST['tage']." DAY);");
   }
endif;

$anzahlds $result->num_rows;

while(
$row mysqli_fetch_assoc($result)) // Wird für jede Reihe wiederholt (Anzahl Datensätze)
    

    
$data[] = array(''strtotime($row["datumzeit"]), $row["aussentemp"], $row["speicherobentemp"], $row["speicherobentempsoll"], $row["kesseltemp"], $row["kesseltempsoll"], $row["brennerstatus"], $row["kollektortemp"], $row["speicheruntentemp"], $row["solarpumpestatus"], $row["nachladeunterdrueckungstatus"], $row["heizkreispumpestatus"], $row["speicherladepumpestatus"], $row["ansteuerungheizunt"]); 
    } 
    
$result->close();
$db->close(); 
Ich hatte schon versucht mir eine Stringvariable zu bilden welche die Abfrage flexibel zusammenbaut, z.B.
PHP-Code:
$string='\'\',' 'strtotime($row["datumzeit"])';
$data[] = array($string); 
Zusammenbau war richtig, lies ich mir mit echo anzeigen ...

Ich komme einfach nicht weiter, vielleicht kann mir jemand einen Wink mit dem Zaunpfahl verpassen ...

Die Seite (Diagrammanzeige) funktioniert natürlich trotzdem wenn ich die Schleife so lasse, jedoch kommen dann zig Warnungen (logisch) was ich unschön finden.
Mit Zitat antworten