Auslesen des aktuellen Wochentags aus der Tabelle

Malchor

Erfahrenes Mitglied
Hallo Leute,
ich möchte gerne Daten auslesen, die dem aktuellen Tag entsprechen.

Ich habe das soweit auch hinbekommen aber er ließt aus der Tabelle nur dann Werte aus wenn die Spalte den entsprechenden Tag nur einzeln drinnen stehen hat.

Sprich
Days = 3 -> funktioniert
Days = 12345 -> funktioniert nicht

Ich möchte aber auch das der aktuellen Tag auch aus dem letzten gezeigten ausgelesen wird.

Wie kann ich das denn anstellen?

Mein Quellcode:
PHP:
<?php
$heute = getdate();
$datum = date("w");

function calculate_spheric_distance($lat1, $lat2, $lon1, $lon2)
{
    $faktor = 3.141592535 / 180; //umrechnungsfaktor nach bogenmass
 
    $radius = 6370; //mittlerer Erdradius
 
    $a_lat = $lat1 * $faktor; // breite
    $a_lon = $lon1 * $faktor; //länge
 
    $b_lat = $lat2 * $faktor; //breite
    $b_lon = $lon2 * $faktor; //länge
 
    $distance =  round(acos(sin($b_lat)*sin($a_lat)+cos($b_lat)*cos($a_lat)*cos($b_lon - $a_lon)) * $radius /1.852, 2);
 
    return $distance;
}
 
// Parameter aus Link holen
$flugnummer = isset($_GET['flugnummer']) ? mysql_real_escape_string($_GET['flugnummer']) : null;
$abfrage = "SELECT
                     `piloten`.`letzter_standort` , 
					 `piloten`.`aktueller_Flug` , 
                     `Flugplan`.`flughafenid1` , 
                     `Flugplan`.`dep_time` , 
                     `Flugplan`.`flughafenid2` , 
                     `Flugplan`.`arr_time` , 
                     `Flugplan`.`flugnummer`,
                     `Flugplan`.`days`,
                     `Flugplan`.`registrierung` ,
                     `Flugplan`.`flugzeug_id`,
                     `Flugplan`.`gebucht`, 
					 `Flughafen`.`flughafenid`,
                     `Flughafen`.`flughname`
            FROM 
                     piloten, 
                     Flugplan,
					 Flughafen
            WHERE   
                     (pilot_id = '" . mysql_real_escape_string($pilot_id) . "') 
			And
			         (`Flugplan`.`flughafenid2` = `Flughafen`.`flughafenid`)
            AND
                     (`Flugplan`.`comment` = '')
			AND
                     (`piloten`.`letzter_standort` = `Flugplan`.`flughafenid1`)
			AND
                     (`Flugplan`.`days` = '$datum')
					 
			ORDER BY 
					`Flugplan`.`flughafenid2`  ASC LIMIT 0 , 100;";
$ergebnis = mysql_query($abfrage) or die ("MySQL-Error: " . mysql_error());
?>
<table WIDTH="99%" border="0" align="center" "."cellpadding="1" cellspacing="1" bgcolor="#666666" class="tableLine">
    <tr>
        <th>Flugnummer</th>
        <th>Abflugzeit</th>
        <th>Zielflughafen</th>
        <th>Ankunftszeit</th>
        <th>Flugtage</th>
        <th>Stops</th>
        <th>Entfernung</th>
        <th>Flugzeug</th>
        <th>Info</th>
    </tr>
<?php 
 $colchange = 1;
    while ($dataset = mysql_fetch_array($ergebnis)){ // <--- Klammerfehler, hier gehört die klammer auf
      // Flughafen-ID's abholen
        $flughafenid1 = $dataset['flughafenid1'];
        $flughafenid2 = $dataset['flughafenid2'];
 
        // Geo-Koordinaten der Flughäfen besorgen
        $airport1Query = sprintf("SELECT lat,lon FROM Flughafen WHERE flughafenid = '%s'", $flughafenid1);
        $airport2Query = sprintf("SELECT lat,lon FROM Flughafen WHERE flughafenid = '%s'", $flughafenid2);
            
        $airport1Result = mysql_query($airport1Query) or die( mysql_error() );
        $airport2Result = mysql_query($airport2Query) or die( mysql_error() );
            
        $airport1Data   = mysql_fetch_assoc($airport1Result);
        $airport2Data   = mysql_fetch_assoc($airport2Result);
            
        $lat1 = $airport1Data['lat'];
        $lat2 = $airport2Data['lat'];
        $lon1 = $airport1Data['lon'];
        $lon2 = $airport2Data['lon'];
        // Fertig: Geo-Koordinaten der Flughäfen besorgen
        
        // Entfernung berechnen
        $entfernung = calculate_spheric_distance($lat1, $lat2, $lon1, $lon2);
        
        
        // modulo ob gerade oder ungerade
        if ($colchange % 2) {
            $color = "#B6B6B6";
        } else {
            $color = "#999";
        }


		if ($dataset['aktueller_Flug'] != ''){
    {
        print "<tr bgcolor=\"#999999\" align=\"center\">";
        print "<td></td><td></td><td></td><td>You allready booked a flight</td><td></td><td></td><td></td><td></td></tr>";
       

    }
    print "</td></tr>\n";
				
	}else{	
    if($dataset['gebucht'] == 'B'){
        $gebucht = '*fully booked*';
	}
	elseif($dataset['gebucht'] == 'C'){
        $gebucht = '*Flight canceled*';
		
		}else{
        $gebucht="<a href='FPS_buchung_flug.php?flugnummer={$dataset['flugnummer']}'>{$dataset['flugnummer']}</a>&nbsp";
    }
    print "    <tr bgcolor=\"$color\">\n";
    print "        <td>{$gebucht}</td>\n";
    print "        <td>{$dataset['dep_time']}</td>\n";
    print "        <td>{$dataset['flughname']}&nbsp;</td>\n";
    print "        <td>{$dataset['arr_time']}&nbsp;</td>\n";
    print "        <td>{$dataset['days']}&nbsp;</td>\n";
    print "        <td>{$dataset['via']}&nbsp;</td>\n";
	 print "        <td>$entfernung nm</td>\n";
    print "        <td>{$dataset['flugzeug_id']}&nbsp;"."</td>\n";
    print "        <td><a href='FPS_buchung_fluginfo.php?flugnummer={$dataset['flugnummer']}'>Info</a>&nbsp</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>
 
Also wenn du nur herausfinden willst ob der aktuelle Tag im String "12345" enthalten ist, kannst du es am einfachsten vermutlich so lösen:

PHP:
<?php

$datum = date("w");

$tage = "12345";

echo strpos($tage, $datum);

?>
 
Wo ist denn da das Problem?
haust du in die $tage Variable deine werte rein, ob errechnet oder aus der datenbank ist ziemlich egal.
Muss ja nicht zwangsläufig 12345 sein ^^

oder willst du wissen welche Tag in bspw. 35 Tagen st? ob es Donnerstag oder n Freitag ist?
würde da so gehen:
PHP:
$tag = date("w", strtotime('+35days'));
 
Zuletzt bearbeitet:
Der Plan ist, das in einem Flugplan immer nur die Tage zum buchen angeboten werden, welche tatsächlich auch nur an dem Tag sprich zum bsp stattfinden. Das soll eigentlich ganz einfach an Hand des Wochentags passieren, aber da bin ich halt gescheitert!
 
Die Funktion date("w") liefert dir als Ergebnis ja immer den Tag der Woche (0 = Sonntag, 1 = Montag usw.) aber das weißt du ja selber.

So wie ich dich verstehe gibst du jetzt an das hier $datum = "1" nur der Montag oder $datum = "123" die Tage Montag, Dienstag und Mittwoch gemeint sind.

Im obigen Beispiel wird einfach geprüft ob der Rückgabewert von date("w") in dem String enthalten ist, egal wie viele Stellen er hat.

So lange es keine zweistelligen Zahlen im String gibt, klappt es so.
 
Naja also wenn ich das richtig verstanden habe, habe ich das doch eigenlich so aber er wirft immer nur den DB Satz aus wo der Tag einzeln drinnen steht und nicht wo mehrere Tage in einem DB Satz sind.

Hier mal ein Auszug aus der Tabelle "Flugplan":

Flug A: Days 012345
Flug B: Days 356
Flug C: Days 15
Flug D: Days 5

Er soll nun auch auslesen wenn Freitag ist das auch FLUG A+B+C durchgeführt werden und nicht nur Flug D.

Das passiert halt derzeit nicht
 
Zuletzt bearbeitet:
versuch es mal so:
PHP:
$abfrage = "SELECT
                     `piloten`.`letzter_standort` , 
                     `piloten`.`aktueller_Flug` , 
                     `Flugplan`.`flughafenid1` , 
                     `Flugplan`.`dep_time` , 
                     `Flugplan`.`flughafenid2` , 
                     `Flugplan`.`arr_time` , 
                     `Flugplan`.`flugnummer`,
                     `Flugplan`.`days`,
                     `Flugplan`.`registrierung` ,
                     `Flugplan`.`flugzeug_id`,
                     `Flugplan`.`gebucht`, 
                     `Flughafen`.`flughafenid`,
                     `Flughafen`.`flughname`
            FROM 
                     piloten, 
                     Flugplan,
                     Flughafen
            WHERE   
                     (pilot_id = '" . mysql_real_escape_string($pilot_id) . "') 
            And
                     (`Flugplan`.`flughafenid2` = `Flughafen`.`flughafenid`)
            AND
                     (`Flugplan`.`comment` = '')
            AND
                     (`piloten`.`letzter_standort` = `Flugplan`.`flughafenid1`)
            AND
                     (`Flugplan`.`days` LIKE '%$datum%')//<---diese Zeile habe ich mal geädert
                     
            ORDER BY 
                    `Flugplan`.`flughafenid2`  ASC LIMIT 0 , 100;";
 
Zurück