Werte an Hand aktueller Zeit anzeigen

Als Ergebnis dieses Schnippsels kommt "Boarding" heraus

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;

echo "<pre>";
while($row = mysql_fetch_array($qry))  {
    var_dump($row);
}
echo "</pre>";   {

    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>
Foto3
 
Naja das er daqs in Verbinung anzeigen soll in etwa wie auf dieser Seite
BSP HP

So ich habe die SQL Abfrage noch mal etwas gefummelt und einige kleine Ferhler gefunden!

Sie schaut nun wie folgt aus:

PHP:
 <?php 

$sql = "SELECT 
				(UNIX_TIMESTAMP( TIMESTAMP( CURDATE( ) , dep_time ) ) - UNIX_TIMESTAMP( ))
		AS 		zeitstempeldifferenz, flugnummer, flughafenid1, flughafenid2, dep_time
		FROM 
				`Flugplan`
		WHERE 
				`Flugplan`.`flughafenid1` = 'KATL'
		ORDER BY 
				dep_time ASC				
		LIMIT
				 0 , 30";

$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;

echo "<pre>";
while($row = mysql_fetch_array($qry))  {
    var_dump($row);

echo "</pre>";    


    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 "Test";
    }

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>

Es wird die Tabelle gefüllt, aber der Remark bleibt 0 und es werden weiterhing Flüge gezeigt die schon längst weg sein müssten!

Foto4

Gleichzeitig ergibt die SQL Abfrage in phpmyadmin folgendes Ergebnis:


Foto5
 
Zuletzt bearbeitet:
Dass du noch Flüge angezeigt bekommst, die schon lange weg sind, ist klar. Du kannst die WHERE-Bedingung ja nutzen, bspw. so:
PHP:
$sql = "SELECT 
                (UNIX_TIMESTAMP( TIMESTAMP( CURDATE( ) , dep_time ) ) - UNIX_TIMESTAMP( ))
        AS         zeitstempeldifferenz, flugnummer, flughafenid1, dep_time
        FROM 
                Flugplan
        WHERE 
                flughafenid1 = 'KATL' AND
                (UNIX_TIMESTAMP( TIMESTAMP( CURDATE( ) , dep_time ) ) - UNIX_TIMESTAMP( )) > -1800 AND
                (UNIX_TIMESTAMP( TIMESTAMP( CURDATE( ) , dep_time ) ) - UNIX_TIMESTAMP( )) < 7200
        ORDER BY 
                dep_time ASC                
        LIMIT
                 0 , 30";
Damit rufst du nur Flüge ab, die vor maximal einer halben Stunde abgeflogen sind und die maximal noch zwei Stunden bis zum Abflug haben.

Dann hast du $diff initialisiert mit dem Wert von $row['differnenz']. Diesen Index gibt es aber nicht mehr, da in der SQL-Anweisung aus differenz zeitstempeldifferenz geworden ist. Also muss die Zeile so aussehen:
PHP:
$diff = $row['zeitstempeldifferenz'];

Ich werde dir am Ende dieses Threads dann übrigens die Rechnung zukommen lassen ;)
 
Also jetzt füllt er die tabelle mit den Flügen den die zeitangabe zulässt, wenn ich ich die Tabelle aber aufüllen mit Flügen ergänze die später als 2 Std. stattfinden erweitere ich die Zeitspannerichtig?

Allerdings Gibt es noch 2 Kleinigkeiten

Wieso steht der Remark oben und statt den Remark die Sekunden in der Remarkszeile
Foto6

und wie kann ich denn jetzt noch zu den drei Staten noch drei JPG in den Status einfügen.


Wenn du in Berlin wohnst lade ich dich gerne auf ein paar Bier ein ;-)
 
Na dann änder doch deinen Code mal so ab, dass das var_dump und die echo's in den if-Abfragen verschwinden und du dafür deine Variable $diff fütterst.

Ganz ehrlich: Ich hab das Gefühl, dass du nur in all zu geringem Maße verstehst, was in deinem Code überhaupt vor sich geht. Ich mein, du hast mittlerweile einen kompletten Lösungsansatz hier stehen und weißt ihn nicht einzusetzen. Du solltest vielleicht mal mit was leichtem anfangen und dich dann steigern.
 
Also was diese komplexe gerüst angeht, stimmt da habe ich meine Probleme, große sogar.

Ich habe das vardump usw. entfernt und eigentlich das $diff eingesetzt in den print aber genau das ergibt das was, ich auf dem Foto zeige.

PHP:
   <?php 
 $colchange = 1;

while($row = mysql_fetch_array($qry))  {
$diff = $row['zeitstempeldifferenz'];  
    if($diff < 0)  
	{
        echo "Flight closed";
		echo "<img src=\"pictures/status_rot.gif\" width=\"40\" height=\"20\" />";
    }
    elseif($diff <= 300)  {
        echo "Last Call";
		echo "<img src=\"pictures/status_gelb.gif\" width=\"40\" height=\"20\" />";
	}	
		elseif($diff <= 1800)  {
        echo "Boarding";
		echo "<img src=\"pictures/status_gruen.gif\" width=\"40\" height=\"20\" />";
    }
    elseif($diff <= 7200)  {
        echo "Check-In open";
				echo "<img src=\"pictures/status_gruen.gif\" width=\"40\" height=\"20\" />";

    }
	
    else  {
        echo "How";
    }

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
    
?>
Beim einfügen des if und else in die print Spalte und versuchten anpassen gab es nur probleme u.a. in der Anzeige.
 
PHP:
   <?php 

while($row = mysql_fetch_array($qry))  {
    $diff = $row['zeitstempeldifferenz'];
    if($diff < 0)  {
        $status_pic = "<img src=\"pictures/status_rot.gif\" ".
                      "width=\"40\" height=\"20\" />";
        $remarks    = "Flight closed";
    }
    elseif($diff <= 300)  {
        $status_pic = "<img src=\"pictures/status_gelb.gif\" ".
                      "width=\"40\" height=\"20\" />";
        $remarks    = "Last call";
    }	
    elseif($diff <= 1800)  {
        $status_pic = "<img src=\"pictures/status_gruen.gif\" ".
                      "width=\"40\" height=\"20\" />";
        $remarks    = "Boarding";
    }
    elseif($diff <= 7200)  {
        $status_pic = "<img src=\"pictures/status_gruen.gif\" ".
                      "width=\"40\" height=\"20\" />";
        $remarks    = "Check-In open";
    }
    else  {
        $status_pic = "";
        $remarks    = "How";
    }

    print "    <tr bgcolor=\"$color\" align=\"center\">\n";
    print "        <td>".$status_pic."</td>\n";
    print "        <td>".$row['flugnummer']."</td>\n";
    print "        <td>".$row['dep_time']."</td>\n";
    print "        <td>".$row['flughafenid2']."</td>\n";
    print "        <td>".$remarks."</td>\n";
    print "    </tr>\n";
        
    }
    
?>

Darf ich fragen, wer dich mit dieser Aufgabe betraut hat?
 
Ergänzend noch ne letze Frage. Ist es möglich, das man auch schon die Flüge vom nächsten tag mit angezeigt bekommt? Momentan bleibt die tabelle leer wenn am heutigen tag keine weiteren Flüge mehr fliegen?
 
Zurück