• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Daten aus mysql-db von Heute/Gestern in Array schreiben?

Oh Mann!!!!
PHP:
$data[]=$row;
$data ist ein Array, in das du noch ein Array packst. Also ist doch logischerweise in $data[0] ein Array drin!!! Ich frage mich sowieso, warum du die Array's in ein weiteres Array packst. Es reicht doch, wenn du die Außentemperatur da reinschreibst!

Programmieren hat auch zwischendurch was mit logischem Denken zu tun, wird Zeit, dass du damit anfängst.
Für so einen Grundlagenkram schon 41 Postings, das ist echt unglaublich.
 
Werbung:
Die Frage ist ja, warum Du das überhaupt in ein eigenes Array speichern möchtest. Der Sinn einer Schleife, in dem Fall die while-Schleife, ist doch, sich immer wiederholende Verarbeitungsschritte nur einmal schreiben zu müssen und dann x-mal abarbeiten zu lassen. Sinn der Übung ist doch, dass Du eine Auflistung der letzten Temperaturen anzeigen möchtest. Wenn das so ist, dann mach das doch direkt in der Schleife mit
PHP:
echo $row[0]."<br />\n";  // \n erzeugt im HTML-Quellcode einen Zeilenumbruch
Du musst also nicht das Ergebnis der sql-Abfrage in einem eigenen Array speichern.
 
Damit das Elend mal ein Ende hat:
PHP:
  <?php
   error_reportin(E_ALL);
   ini_set("display_errors", true);
   
   include_once("/var/www/web86/files/mysql.php");
   
   $con = mysql_connect($databasehost,$databaseusername,$databasepassword) 
     or die("Connection to database-server failed");
     
   mysql_select_db($databasename) 
      or die("$databasename not found");
      
   $query = "SELECT 
                `Aussentemperatur` 
              FROM 
                `meteohub_1` 
              WHERE 
                `Datum` <= current_date() 
              ORDER BY 
                  `Datum` DESC";
                  
   $result = mysql_query($query)
     or die ("MySQL-Fehler: " . mysql_error());
     
   $data = array();
   
   while($row = mysql_fetch_row($result))
     $data = $row['Aussentemperatur'];
     
   print_r($data);
?>
 
Werbung:
Der Grund das ich das probiert habe, das ich die Daten an ein Grafik-Script weitergebe (highcharts). Funktionen eigentlich auch.

Ich frage einfach mal, auch wenns totaler Blödsinn ist. Wie müsste der Code aussehen, damit ich mit $data[0], $data[1], usw außerhalb der while-schleife eine Ausgabe bekomme?
 
Ich glaub', ich steh' im Wald und alle Rehlein sagen du zu mir.

Ich bin raus.
 
Werbung:
ich nochmal, dann ist schluß :???:

der hintergrund warum ich nach der while nochmal an die einzelnen werte ran wollte, die zu filtern, wenn zuviel daten
in dem array drin sind

zb

PHP:
for($count = 5; $count < $zahl; $count++) {   $ausgabe = $ausgabe . ", ". data[$count]; }

für die Übgabe zu Highcharts brauche ich die Daten in diesem Format
7.0, 7.2, 7.4,.......

Es kann sein, das sehr viele Daten (je nach Tageszeit) in dem Array drin sind, da alle 10 Minuten
ein Wert geschrieben wird. Das wird dann in dem Graphen sehr unübersichtlich, da jeder Wert einen dicken Punkt darstellt.

Das sollte dann per if-for geschehen, zb

PHP:
if count($array) < 100
{
for($count = 5; $count < $zahl; $count++) {   $ausgabe = $ausgabe . ", ". data[$count]; }
vermutlich von der syntax auch nicht richtig, aber egal. wollte nur nochmal
sagen, warum alles.
 
Ok, jetzt habe ich zumindest die Hintergründe verstanden. Du willst nicht jeden Datensatz verarbeiten, sonden nur z.B. jeden sechsten, um pro Stunde einen Wert zu haben. Da könnte Dir eventuell das hier weiterhelfen PHP: mysql_data_seek - Manual Dann kannst Du Dir auch ersparen das in ein Array zu schreiben.
 
Werbung:
Ok, jetzt habe ich zumindest die Hintergründe verstanden. Du willst nicht jeden Datensatz verarbeiten, sonden nur z.B. jeden sechsten, um pro Stunde einen Wert zu haben. Da könnte Dir eventuell das hier weiterhelfen PHP: mysql_data_seek - Manual Dann kannst Du Dir auch ersparen das in ein Array zu schreiben.

Oder aber auch gleich das Sql Statement Eingränzen, sofern Index deine AutoIncrement Spalte ist, wie ich annehme:

Code:
WHERE MOD(Index, 6) = 0
 
danke. das ganze soll aber abhängig sein, wieviel werte in den gelesen werden.
wenn ich mir die daten von heute zb ausgeben will und erst 20 Werte geschrieben
würden, dann muss ja nicht gefiltert werden, dann können auch alle rein.
wenn ich aber um 23.00Uhr wir die werte anzeigen lassen, dann holt er mir
fast 150 Werte aus der mysql tabelle, da würde mir dann zb jeder 8te reichen.
noch schlimmer wird es, wenn ich die daten der letzen 7 tage anzeigen lassen will...



und nebenbei habe ich mit den funktionen rumgespielt um evtl schneller in php
reinzukommen, wenn ich erstmal ein buch lesen muss bevor ich das
erste mal <?php schreiben kann, habe ich 90% wieder vergessen.

ich probiere (zum spielen) mal den code von bdt600 aus, evtl bekomme ich
ja hin, mir nur einzelne Werte ausgeben zu lassen mit $data[0], $data[1] usw
nicht weils anderes besser geht, sondern umzu verstehen, wie es gehen würde.

so, muss nun lesen, da ich auch leider noch die Zeiten die zu jedem Temperatur-Wert
gehören brauche.

Gruss
 
Werbung:
gucke ich mir gleich an. aber das was ich wollte, habe ich nun (glaube ich zumindest)
1000 dank

PHP:
$con = mysql_connect($databasehost,$databaseusername,$databasepassword) or
      die(mysql_error());mysql_select_db($databasename) or die(mysql_error());
// Sollte Dir alle Datensätze von heute und gestern liefern
$result = mysql_query("SELECT Aussentemperatur,Datum FROM meteohub_1 WHERE Datum >= current_date()-2 ORDER BY Datum DESC");
if (!$result) {
    echo 'Konnte Abfrage nicht ausführen: ' . mysql_error();
    exit;
}
// ---------------------------------------------------------------

$temp = array();
$zeit = array();   
   while($row = mysql_fetch_row($result))
   {
       $temp[] = $row[0];
       $zeit[] = $row[1];
    } 
mysql_close($con);

echo $temp[0];
echo $zeit[0];
echo $temp[1];
echo $zeit[1];
 
Ich verstehe das echt nicht. Da schreibt man dir einen Quellcode, der ordentlich formtiert und gut lesbar ist. Auch die Backticks bei der SQL-Anweisung habe ich eingebaut. Und du klatscht wieder alles in eine Zeile und zerdrischt die Formatierung. :(

Und wenn Tabellenspalten den Namen Aussentemperatur und Datum haben, dann würde ich die Array's bestimmt nicht $temp und $zeit nennen. Aber anscheinend bevorzugst du lieber eine Chaos-Programmierung.
 
Werbung:
habe nochmal ein Frage. inzwischen bin ich von Highcharts auf jqplot umgestiegen. für zeitangaben der x-achse
müssen die zeiten in hochkommas o. anführungszeichen stehen.
dafür nutze ich ne schleife. das klappt alles, aber: bei dem letzen wert fehlen immer
die hochkommas, egal wieviele werte ich auslesen. bei den ersten 100 ist zb alles
ok, bei dem letzen 101 nicht.

ich kann mir das nicht erklären :?

PHP:
$temperatur = array();
$datetime = array();
$count=0;   
   while($row = mysql_fetch_row($result))
   {
       $temperatur[] = $row[0];
       $datetime[] = $row[1];       
       if($count == 0)
       {
            $ausgabe_temperatur = "[" . $datetime[$count] . "," . $temperatur[$count] . "]" . ",";

        }
        else
        {
            $ausgabe_temperatur = "['" . $datetime[$count] . "'," . $temperatur[$count] . ']' . "," . $ausgabe_temperatur;
        }
        
    $count++;
    } 
mysql_close($con);


Hier mal eine Ausgabe:
['2013-06-06 17:40:03', 22.3],['2013-06-06 17:50:04', 22.1],['2013-06-06 18:00:03', 22.0],['2013-06-06 18:10:03', 21.9],[2013-06-06 18:20:03, 21.7],
 
Werbung:
mich würde nochwas intessieren, und zwar zu dem current_date()

übersetzt heisst das für mich "aktuelles datum".

Demnach würde
PHP:
SELECT ... WHERE Datum > current_date()
für mich bedeuten, wähle alles an wo Datum grösser ist als das aktuelle Datum, also morgen, übermorgen usw

PHP:
SELECT ... WHERE Datum = current_date()
müsste dann heute sein und
PHP:
SELECT ... WHERE Datum > current_date()-1
demnach gestern.

Ist es aber anscheinend nicht.
PHP:
SELECT ... WHERE Datum = current_date()
funktioniert überhaupt nicht, wenn ich die Daten von Heute haben will, die bekomme ich nur mit
PHP:
SELECT ... WHERE Datum > current_date()

Kann mir das mal einer erklären? Liegt das evtl am Format der Spalte (2013-05-30 22:59:01) (Typ datetime)?
 
Zurück
Oben