Werte an Hand aktueller Zeit anzeigen

Also ich versuche gerade verständliche Tutorials zum Timestamp zu finden. Leider verstehe ich wirklich kaum etwas von dem, boolische Regel habe ich schon verstanden.

Aber das mit der Umrechnung bekomme ich nicht hin, weil ich es nicht verstehe!

PHP:
 <?php 
$aTimeZones = array(
					'America/New_York'=>'EDT', 
					); 
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
echo $datum;
$timestamp = mktime(H,i);
			
$abfrage = "SELECT
                     flughafenid1 , 
                     dep_time ,
                     flugnummer,
					 flughafenid2
                     
            FROM 
                     Flugplan
            WHERE   
                    flughafenid1 = 'KATL'
             ORDER BY 
 dep_time  ASC LIMIT 10;";
$ergebnis = mysql_query($abfrage) or die ("MySQL-Error: " . mysql_error());
$flughafenid1 = $row['flughafenid1']; 
$dep_time = $row['dep_time']; 	
$flugnummer = $row['flugnummer']; 
?>
  <table WIDTH="50%" border="0" "cellpadding="1" cellspacing="1" bgcolor="#666666" class="tableLine" align="center">
    <tr>
      <th>Status</th>
      <th>Flugnummer</th>
      <th>Abflugzeit</th>
      <th>Zielflughafen</th>
      <th>Remarks</th>

      </tr>
    <?php 
 $colchange = 1;
    while ($dataset = mysql_fetch_array($ergebnis)){ // <--- Klammerfehler, hier gehört die klammer auf

        
        // modulo ob gerade oder ungerade
        if ($colchange % 2) {
            $color = "#B6B6B6";
        } else {
            $color = "#999";
        }
		

        #{ // Klammerfehler, diese klammer gehört weg!
        /* du hast den Code an der falschen stelle eingefügt,
           deshalb kam der klammerfheler
         */ 

    print "    <tr bgcolor=\"$color\" align=\"center\">\n";
    print "        <td></td>\n";
    print "        <td>{$dataset['flugnummer']}</td>\n";
    print "        <td>{$dataset['dep_time']}</td>\n";
    print "        <td>{$dataset['flughafenid2']}&nbsp;</td>\n";
    print "        <td></td>\n";
    print "    </tr>\n";
        
        // ++ hinter der Variablen bewrikt das immer 1 dazugezählt wird. in einer schleife passiert das bei jedem durchgang.
        $colchange++;
    } // while ende
    
?>
  </table>

Die If Klauseln habe ich erstmal entfernt um ein problem nachdem anderen zu lösen!
 
Zuletzt bearbeitet:
Aber wenn du die "Umrechnung" nicht verstehst, ist das eher ein Algorithmus-Problem. Aus der Schule wissen wir ja alle, dass Zeit die unterschiedlichsten Einheiten haben kann und wie man zwischen ihnen umrechnet.
Wenn ein Unix-Timestamp nun die Anzahl der Sekunden vom 1.1.1970 bis genau jetzt ist, dann kannst du dir damit und dem Timestamp in der Datenbank ganz einfach die zeitliche Differenz in Sekunden ausrechnen und schauen, ob diese weniger/gleich 7200 (Anzahl der Sekunden für zwei Stunden), 1800 (Anzahl der Sekunden für eine halbe Stunde) oder -60 (eine Minute) ist. Das wären dann deine if-Bedingungen.

Mit time() holst du übrigens genau diesen aktuellen Timestamp und mit mktime() lässt du dir einen Timestamp zu einem Datum ausrechnen (falls du doch deine Zeiten in der DB behalten möchtest). strtotime() ist eventuell auch ganz nützlich.
 
Also ist meine Mktime Formatierung vollig schwachsinnig? Aber wie wende ich das dann auch meine Dep-Time Spalte an. ich stehe irgendwie mal wieder voll auf dem schlauch.

Ich werde aber mir jetzt mal strtotime anschauen
 
SQL:
SELECT (UNIX_TIMESTAMP(TIMESTAMP(CURDATE(), dep_time))-UNIX_TIMESTAMP()) AS differenz, ziel FROM `Flugplan` ORDER BY dep_time;
Damit holst du dir die Zeitdifferenzen der Abflüge zur aktuellen Zeit in Sekunden. Wenn ein Abflug also in der Vergangenheit liegt, dann ist differenz negativ.
Jetzt musst du das nur noch mit deinen anderen Feldern auffüllen und die if-Abfragen formulieren, bspw. so:
PHP:
$sql = "SELECT 
           (UNIX_TIMESTAMP(TIMESTAMP(CURDATE(), abflug))-UNIX_TIMESTAMP())
               AS zeitstempeldifferenz, 
           ziel 
        FROM `abfluege` 
        ORDER BY abflug";

$qry = mysql_query($sql);
while($row = mysql_fetch_array($qry))  {

    echo "<p><strong>".$row['ziel']."</strong><br />\n";
    
    $diff = intval($row['differenz']);
    if($diff < 0)  {
        echo "schon abgeflogen ...";
    }
    elseif($diff <= 1800)  {
        echo "Abflug innerhalb der n&auml;chsten halben Stunde ...";
    }
    elseif($diff <= 7200)  {
        echo "Abflug innerhalb der n&auml;chsten zwei Stunden ...";
    }
    else  {
        echo "noch genug Zeit zum Einchecken ...";
    }

    echo "</p><br clear=\"all\" /><hr />";

}
 
Zuletzt bearbeitet:
Also ich versuche das ganze anzupassen aber er sagt mir bei ech clear all immer einen Syntaxfehler,, wenn ich den Code aber anschaue sehe ich keinen weiteren!

PHP:
 <?php 
$aTimeZones = array(
					'America/New_York'=>'EDT', 
					); 
$sql = "SELECT 
           (UNIX_TIMESTAMP(TIMESTAMP(CURDATE(), dep_time))-UNIX_TIMESTAMP())
               AS zeitstempeldifferenz, flughafenid1, flughafenid2, dep_time,flugnummer
           
        FROM `Flugplan` 
        ORDER BY dep_time";

$qry = mysql_query($sql);
while($row = mysql_fetch_array($qry))  {

    echo "<p><strong>".$row['flughafenid2']."</strong><br />\n";
    
    $diff = intval($row['differenz']);
    if($diff < 0)  {
        echo "schon abgeflogen ...";
    }
    elseif($diff <= 1800)  {
        echo "Abflug innerhalb der n&auml;chsten halben Stunde ...";
    }
    elseif($diff <= 7200)  {
        echo "Abflug innerhalb der n&auml;chsten zwei Stunden ...";
    }
    else  {
        echo "noch genug Zeit zum Einchecken ...";
    }

    echo "<p><br clear="all" /><br/>\n";

} 
?>
 
Ja, sorry. Da müssen die Anführungszeichen noch escaped werden.
PHP:
echo "<p><br clear=\"all\" /><br/>\n";
 
Ich habe das jetzt eigentlich soweit angepasst, aber die Tabelle bleibt leer und nachdem ich das Where eingefügt habe schreibt er nicht mal mehr Werte außerhalb der Tabelle mite den Echos die du programmiert hast!

PHP:
 <?php 
$aTimeZones = array(
					'America/New_York'=>'EDT', 
					); 
$sql = "SELECT 
           (UNIX_TIMESTAMP(TIMESTAMP(CURDATE(), dep_time))-UNIX_TIMESTAMP())
               AS zeitstempeldifferenz, flughafenid1, flughafenid2, dep_time,flugnummer
           
        FROM `Flugplan` 
		Where flughafenid1 = 'KATL';
        ORDER BY dep_time";

$qry = mysql_query($sql);
while($row = mysql_fetch_array($qry))  {

    echo "<p><strong>".$row['flughafenid2']."</strong><br />\n";
    
    $diff = intval($row['differenz']);
    if($diff < 0)  {
        echo "schon abgeflogen ...";
    }
    elseif($diff <= 1800)  {
        echo "Abflug innerhalb der n&auml;chsten halben Stunde ...";
    }
    elseif($diff <= 7200)  {
        echo "Abflug innerhalb der n&auml;chsten zwei Stunden ...";
    }
    else  {
        echo "noch genug Zeit zum Einchecken ...";
    }

echo "<p><br clear=\"all\" /><br/>\n";  

} 
?>
  <table WIDTH="50%" border="0" "cellpadding="1" cellspacing="1" bgcolor="#666666" class="tableLine" align="center">
    <tr>
      <th>Status</th>
      <th>Flugnummer</th>
      <th>Abflugzeit</th>
      <th>Zielflughafen</th>
      <th>Remarks</th>

      </tr>
    <?php 
 $colchange = 1;
    while ($dataset = mysql_fetch_array($ergebnis)){ // <--- Klammerfehler, hier gehört die klammer auf

        
        // modulo ob gerade oder ungerade
        if ($colchange % 2) {
            $color = "#B6B6B6";
        } else {
            $color = "#999";
        }
		

        #{ // Klammerfehler, diese klammer gehört weg!
        /* du hast den Code an der falschen stelle eingefügt,
           deshalb kam der klammerfheler
         */ 

    print "    <tr bgcolor=\"$color\" align=\"center\">\n";
    print "        <td></td>\n";
    print "        <td>{$dataset['flugnummer']}</td>\n";
    print "        <td>{$dataset['dep_time']}</td>\n";
    print "        <td>{$dataset['flughafenid2']}&nbsp;</td>\n";
    print "        <td>$diff</td>\n";
    print "    </tr>\n";
        
        // ++ hinter der Variablen bewrikt das immer 1 dazugezählt wird. in einer schleife passiert das bei jedem durchgang.
        $colchange++;
    } // while ende
    
?>


Mit Where flughafenid1

Biild1

Ohne Where Flughafenid1


Bild2
 
Zuletzt bearbeitet:
Jetzt denk nochmal kurz drüber nach, wo du die von mir erzeugte SQL-Abfrage einsetzt ... zumindest schon mal nicht in deiner zweiten Schleife. Da brauchst dich nicht wundern, wenn nichts ausgegeben wird!
PHP:
$ergebnis = mysql_query($sql);  // die SQL-Abfrage von oben wird NOCHMALS verwendet
while ($dataset = mysql_fetch_array($ergebnis)){
// deine Ausgaben
....
}
 
Okay da hast du natürlich Recht und darauf hätte man auch selber kommen können, allerdings bleibt die tabelle mit der Where flughafenid1= KATL ebenfalls leer wie im Foto1. Ohne diese Where bringt er die Texte und füllt die Tabelle mit Werten aber ohne texte und oprientiert sich auch nicht an aktuelelr zeit sondern zeigt alle Abflugzeiten wie sortiert auch in der DB sind, sprich keine aktuelle Anzeige
PHP:
 <?php 
$aTimeZones = array(
					'America/New_York'=>'EDT', 
					); 
$sql = "SELECT 
           (UNIX_TIMESTAMP(TIMESTAMP(CURDATE(), dep_time))-UNIX_TIMESTAMP())
               AS zeitstempeldifferenz, flughafenid1, flughafenid2, dep_time,flugnummer
        Where flughafenid1 = 'KATL'   
        FROM `Flugplan` 
        ORDER BY dep_time Limit 10";

$qry = mysql_query($sql);
?>
  <table WIDTH="50%" border="0" "cellpadding="1" cellspacing="1" bgcolor="#666666" class="tableLine" align="center">
    <tr>
      <th>Status</th>
      <th>Flugnummer</th>
      <th>Abflugzeit</th>
      <th>Zielflughafen</th>
      <th>Remarks</th>

      </tr>
    <?php 
 $colchange = 1;

while($row = mysql_fetch_array($qry))  {

    echo "<p><strong>".$row['flughafenid2']."</strong><br />\n";
    
    $diff = intval($row['differenz']);
    if($diff < 0)  {
        echo "Flight closed";
    }
    elseif($diff <= 1800)  {
        echo "Boarding";
    }
    elseif($diff <= 7200)  {
        echo "Check-In open";
    }
    else  {
        echo "";
    }

echo "<p><br clear=\"all\" /><br/>\n";  


        
        // modulo ob gerade oder ungerade
        if ($colchange % 2) {
            $color = "#B6B6B6";
        } else {
            $color = "#999";
        }
		

        #{ // Klammerfehler, diese klammer gehört weg!
        /* du hast den Code an der falschen stelle eingefügt,
           deshalb kam der klammerfheler
         */ 

    print "    <tr bgcolor=\"$color\" align=\"center\">\n";
    print "        <td></td>\n";
    print "        <td>".$row['flugnummer']."</td>\n";
    print "        <td>".$row['dep_time']."</td>\n";
    print "        <td>".$row['flughafenid2']."</td>\n";
    print "        <td>$diff</td>\n";
    print "    </tr>\n";
        
        // ++ hinter der Variablen bewrikt das immer 1 dazugezählt wird. in einer schleife passiert das bei jedem durchgang.
        $colchange++;
    } // while ende
    
?>
  </table>
 
Zuletzt bearbeitet:
Dann solltest du mal nachschauen, ob dein WHERE-Filter nicht verkehrt ist. Vielleicht lässt du dir auch mal das komplette Ergebnis-Array mit print_r() ausgeben:
PHP:
$sql = "..."; // wie oben halt ...
$qry = mysql_query($sql);
echo "<pre>";
while($row = mysql_fetch_array($qry))  {
    var_dump($row);
}
echo "</pre>";
Dann solltest du erkennen können, was tatsächlich im Feld flughafenid1 steht.
var_dump() zeigt dir u.a. den Variablentyp an. Vielleicht hängt's auch daran.
Und vielleicht postest du mal die Ausgabe dieses Schnippsels hier, damit wir auch was sehen.

PS: Das PRE-Tag dient der besseren Lesbarkeit/Formatierung.
 
Zurück