PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   PHP for $i und MySQL Abfrage (http://www.selfphp.de/forum/showthread.php?t=25115)

wha 25.11.2013 21:18:06

PHP for $i und MySQL Abfrage
 
Hallo zusammen,
beisse mir gerade die Zähne aus.
- Aufgabe: MySQL: Maximalwert eines Tages soll mit weiteren Werten in ein Array ausgegeben werden.
Das ganze soll in einer For-Schleife für fortlaufende Tage wiederholt werden.

- Problem: Wenn ich einen Tag in der Zeitauswahl fix vorgebe funktioniert das. Wenn ich aber die Tagesauswahl mit "mktime(0,0,0,1,1+$i,2013)" hochzähle ändert sich zwar der Start (und Endzeitunkt), aber die Daten kommen immer vom 1. Tag.

- Frage: Wie bekomm ich die Abfrage in der Schleife so hin, dass die Daten jedes Tages ausgegeben werden?

Anbei das Script. Hoffe, dass jemand Lust u Zeit hat mal drüber zu schauen und mir einen Tipp zu geben.

PHP-Code:

<?
//------------------------------------------------------------------------------
// MySQL DB-Daten:
$MySQLConn=mysql_connect($MySQLIP.$MySQLPort, $MySQLAdmin, $MySQLAdminPW);
$db = $IPS_DB;
$SQLTable = $TBL_Wetter_Sonnenlauf_Std;

//------------------------------------------------------------------------------
// MySQL Verbindung prüfen
if (!$MySQLConn)
    {IPS_LogMessage('FillTable', 'error= '. mysql_error());}
     $db_selected = mysql_select_db($db, $MySQLConn);
if (!$db_selected)
    {IPS_LogMessage('FillTable', 'opendb= '. mysql_error());}

//------------------------------------------------------------------------------
//Abfrage und Ausgabe für X Tage
for ($i = 0; $i <=2; $i++)
{
    //echo 1+$i ."\n";
    //Zeitraum festlegen
    $CfgDaten['StartTime'] = mktime(0,0,0,1,1+$i,2013);
    $CfgDaten['EndTime'] = mktime(23,59,59,1,1+$i,2013);

    $SQLStart = "'".date("Y-m-d H:i:s",$CfgDaten["StartTime"])."'";
    $SQLEnd = "'".date("Y-m-d H:i:s",$CfgDaten["EndTime"])."'";
   echo $SQLStart." ".$SQLEnd."\n";
  
        //in der Abfrage soll der höchste Wert von Elevation im Zeitraum ausgewählt werden und die entsprechenden Werte von DatumZeit und Azimut
        $sql_Ergebnis = mysql_query("SELECT Elevation, DateX, Azimut
                                                FROM " . $SQLTable . " " .
                                                "WHERE DateX >= ".$SQLStart." AND DateX <= ".$SQLEnd.
                                                " ORDER BY Elevation desc LIMIT 1".
                                                ";")
                                                OR die("'".$sql_Ergebnis."':".mysql_error());

            while($data = mysql_fetch_array($sql_Ergebnis, MYSQL_ASSOC))
            {
                $Ergebnis[]    = array("ElevMax"=>$data['Elevation'], "DateX"=>$data['DateX'], "AzimElevMax"=>$data['Azimut']);
                Print_r("Var i = ".$i."\n");
              print_r($Ergebnis[0]);
            }
            $sql_Ergebnis = "";
}

//------------------------------------------------------------------------------
//MySQL Verbindung beenden
mysql_close($MySQLConn);

?>

Und hier die Ausgabe;
PHP-Code:

'2013-01-01 00:00:00' '2013-01-01 23:59:59'
Var 0
Array
(
    [
ElevMax] => 20.1278
    
[DateX] => 2013-01-01 11:00:00
    
[AzimElevMax] => 172.625
)
'2013-01-02 00:00:00' '2013-01-02 23:59:59'
Var 1
Array
(
    [
ElevMax] => 20.1278
    
[DateX] => 2013-01-01 11:00:00
    
[AzimElevMax] => 172.625
)
'2013-01-03 00:00:00' '2013-01-03 23:59:59'
Var 2
Array
(
    [
ElevMax] => 20.1278
    
[DateX] => 2013-01-01 11:00:00
    
[AzimElevMax] => 172.625


Danke für Eure Hilfe im Voraus,

Grüsse, Wolfgang

DokuLeseHemmung 25.11.2013 22:57:17

AW: PHP for $i und MySQL Abfrage
 
Zitat:

dass die Daten jedes Tages
PHP-Code:

function add_days($tag,$days)
{
  return 
date('Y-m-d',strtotime("$tag  +$days DAYS"));
}

$start '2009-10-17';
$ende  '2012-10-17';

for(
$i=$start;$i<$ende;$i=add_days($i,1))
{
  echo 
$i '<br>';



wha 27.11.2013 21:27:55

AW: PHP for $i und MySQL Abfrage
 
Hallo DokuLeseHemmung,

danke für Deine Hilfe.

Leider geht die Antwort am Thema vorbei. Hab mich wohl nicht richtig augedrückt.

Oder ich hab die Antwort nicht verstanden.

Die Anzahl der Wiederholungen ist nicht das Thema. Hab das nur mal einfach gehalten, mit wenigen Durchläufen, damit ich mir die Ausgabe nicht zumülle.

Die Frage ist wie im Problem beschieben, wie ich die Max-Daten eines jeden Tages bekomme. Ich bekomme, wie in der Ausgabe zu sehen, immer nur die Werte des ersten Ergebnisses für alle weiteren Ergebnisse.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:34:16 Uhr.

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