SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQL

MySQL Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQL diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11.04.2017, 19:28:46
flyer99 flyer99 ist offline
Anfänger
 
Registriert seit: Apr 2017
Alter: 38
Beiträge: 3
flyer99 befindet sich auf einem aufstrebenden Ast
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
  #2  
Alt 12.04.2017, 10:04:41
chorn chorn ist offline
Anfänger
 
Registriert seit: Apr 2016
Alter: 37
Beiträge: 138
chorn befindet sich auf einem aufstrebenden Ast
AW: MySQL-Abfrage flexibel gestalten

Ich verstehe nicht was du erreichen willst. Da steht was von "Reihe", wenn ich mir das Statement ansehe sieht das aber nach Spalten aus. Und alle unterschiedlichen Typen stehen in der gleichen Tabelle? Ich weiss garnicht was dann noch flexibel sein muss, du bekommst doch die Werte aus der DB geliefert wie du sie abgefragt hast, wie entscheidest du denn bisher wie das array nacher aussieht?
Mit Zitat antworten
  #3  
Alt 13.04.2017, 01:45:49
flyer99 flyer99 ist offline
Anfänger
 
Registriert seit: Apr 2017
Alter: 38
Beiträge: 3
flyer99 befindet sich auf einem aufstrebenden Ast
AW: MySQL-Abfrage flexibel gestalten

Hallo chorn,

Problem konnte ich heute Mittag lösen .... nichts desto trotz (vielleicht hilft es anderen) hier ein paar Infos:

Zitat:
Da steht was von "Reihe"
Das sind die Checkboxen welche übergeben werden und dann in $result1 geschrieben werden (MySQL-Spalten welche ausgelesen werden sollen).
PHP-Code:
$i=0
if(
count($_POST["reihe"])) 
   { 
   while(
$i<count($_POST["reihe"])) 
      { 
      
$result1=$result1 ', ' $_POST["reihe"][$i]; 
      
$i++; 
      } 
   } 
Wenn der Haken "Alles" ausgewählt wurde werden alle Spaltennamen übergeben
PHP-Code:
if (isset($_POST["alles"]) == "alles"): 
   { 
   
$result1 "datumzeit, aussentemp, speicherobentemp, speicherobentempsoll, kesseltemp, kesseltempsoll, brennerstatus, kollektortemp, speicheruntentemp, solarpumpestatus, nachladeunterdrueckungstatus, heizkreispumpestatus, speicherladepumpestatus, ansteuerungheizunt"
   } 
endif; 

Fürs Verständnis mal ein paar Bilder:

http://up.picr.de/28882564te.jpg

http://up.picr.de/28882565ci.jpg

Oder:

http://up.picr.de/28882598ff.jpg

http://up.picr.de/28882600ig.jpg


Mein Problem lag hier bzgl. der Flexibilität:
PHP-Code:
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"]);  
    } 

Dies habe ich nun wie folgt gelöst:
PHP-Code:
$i2=0;    
while(
$row mysqli_fetch_assoc($result)) 
    { 
    
$data[] = array(''strtotime($row["datumzeit"]));
    if (
in_array("aussentemp"$sammlung)):
       {
       
$data[$i2][] = $row["aussentemp"];
       }
    endif;
    if (
in_array("speicherobentemp"$sammlung)):
       {
       
$data[$i2][] = $row["speicherobentemp"];
       }
    endif;
    if (
in_array("speicherobentempsoll"$sammlung)):
       {
       
$data[$i2][] = $row["speicherobentempsoll"];
       }
    endif;
    if (
in_array("kesseltemp"$sammlung)):
       {
       
$data[$i2][] = $row["kesseltemp"];
       }
    endif;
    if (
in_array("kesseltempsoll"$sammlung)):
       {
       
$data[$i2][] = $row["kesseltempsoll"];
       }
    endif;
    if (
in_array("brennerstatus"$sammlung)):
       {
       
$data[$i2][] = $row["brennerstatus"];
       }
    endif;
    
    if (
in_array("kollektortemp"$sammlung)):
       {
       
$data[$i2][] = $row["kollektortemp"];
       }
    endif;
    if (
in_array("speicheruntentemp"$sammlung)):
       {
       
$data[$i2][] = $row["speicheruntentemp"];
       }
    endif;
    if (
in_array("solarpumpestatus"$sammlung)):
       {
       
$data[$i2][] = $row["solarpumpestatus"];
       }
    endif;
    if (
in_array("nachladeunterdrueckungstatus"$sammlung)):
       {
       
$data[$i2][] = $row["nachladeunterdrueckungstatus"];
       }
    endif;
    if (
in_array("heizkreispumpestatus"$sammlung)):
       {
       
$data[$i2][] = $row["heizkreispumpestatus"];
       }
    endif;
    if (
in_array("speicherladepumpestatus"$sammlung)):
       {
       
$data[$i2][] = $row["speicherladepumpestatus"];
       }
    endif;
    if (
in_array("ansteuerungheizunt"$sammlung)):
       {
       
$data[$i2][] = $row["ansteuerungheizunt"];
       }
    endif;
    if (isset(
$_POST["alles"]) == "alles"):
          {
          
$data[$i2][] = $row["aussentemp"];
       
$data[$i2][] = $row["speicherobentemp"];
       
$data[$i2][] = $row["speicherobentempsoll"];
       
$data[$i2][] = $row["kesseltemp"];
       
$data[$i2][] = $row["kesseltempsoll"];
       
$data[$i2][] = $row["brennerstatus"];
       
$data[$i2][] = $row["kollektortemp"];
       
$data[$i2][] = $row["speicheruntentemp"];
       
$data[$i2][] = $row["solarpumpestatus"];
       
$data[$i2][] = $row["nachladeunterdrueckungstatus"];
       
$data[$i2][] = $row["heizkreispumpestatus"];
       
$data[$i2][] = $row["speicherladepumpestatus"];
       
$data[$i2][] = $row["ansteuerungheizunt"]; 
          }
    endif;
    
$i2++;
    } 

Vielleicht nicht "schön", aber funktionell und ich habe es hinbekommen ...
Wenn jemand ne kürzere Version hat lasse ich mich gerne "belehren" ... :-)
Mit Zitat antworten
  #4  
Alt 13.04.2017, 09:25:22
chorn chorn ist offline
Anfänger
 
Registriert seit: Apr 2016
Alter: 37
Beiträge: 138
chorn befindet sich auf einem aufstrebenden Ast
AW: MySQL-Abfrage flexibel gestalten

Ergibt für mich immernoch keinen Sinn. Wenn du das Statement auf bestimmt Spalten (sehe keinen Zusammenhang zu Reihen) reduzierst, bekommst du auch nur die geliefert, also ist das mapping doch überflüssig.
Mit Zitat antworten
  #5  
Alt 14.04.2017, 00:07:17
flyer99 flyer99 ist offline
Anfänger
 
Registriert seit: Apr 2017
Alter: 38
Beiträge: 3
flyer99 befindet sich auf einem aufstrebenden Ast
AW: MySQL-Abfrage flexibel gestalten

Abend chorn,

Die Checkboxen mit welchen ich auswähle welche "Temperaturen, Statuszustände" angezeigt werden sollen haben als name -> reihe (vielleicht etwas unglücklich, es ist ja eigentlich eine Spalte in der Datenbank ...)

HTML-Code:
<input style="height: 20px; width: 20px; vertical-align: middle;" type="checkbox" name="reihe[]" value="aussentemp">Aussentemperatur
value ist der Name welcher auch so in der Datenbank steht.

Das Auslesen der nur ausgewählten Daten aus der Datenbank war auch nicht das Problem, sondern nachher das

PHP-Code:
while($row mysqli_fetch_assoc($result)) 
flexibel auszuwerten und das Daten-Array für phplot zu schreiben.

Was ich noch übersehen hatte war die falsche Zuordnung der Legendennamen (nur bei Auswahl alles !), es muss folgendes gelöscht werden:

PHP-Code:
if (isset($_POST["alles"]) == "alles"): 
          { 
          
$data[$i2][] = $row["aussentemp"]; 
       
$data[$i2][] = $row["speicherobentemp"]; 
       
$data[$i2][] = $row["speicherobentempsoll"]; 
       
$data[$i2][] = $row["kesseltemp"]; 
       
$data[$i2][] = $row["kesseltempsoll"]; 
       
$data[$i2][] = $row["brennerstatus"]; 
       
$data[$i2][] = $row["kollektortemp"]; 
       
$data[$i2][] = $row["speicheruntentemp"]; 
       
$data[$i2][] = $row["solarpumpestatus"]; 
       
$data[$i2][] = $row["nachladeunterdrueckungstatus"]; 
       
$data[$i2][] = $row["heizkreispumpestatus"]; 
       
$data[$i2][] = $row["speicherladepumpestatus"]; 
       
$data[$i2][] = $row["ansteuerungheizunt"];  
          } 
    endif; 
Ich hoffe ich konnte es einigermaßen verständlich erklären.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Brauche Hilfe Partygirl MySQL 10 01.03.2011 09:18:11
Ergebnisse aus MySQL Abfrage, obwohl Abfrage eigentlich leer mauritius MySQL 1 15.09.2010 16:16:30
MySQL Abfrage innerhalb einer Abfrage HariboGold MySQL 4 27.08.2008 18:00:28
Problem mit MySQL IF Abfrage und 0 bzw. NULL Wert flashsurface MySQL 2 15.06.2008 22:21:09
MySQL Abfrage mit PHP darstellen? Trivio MySQL 1 18.07.2007 21:05:13


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:10:34 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.


© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt