[PHP] Countdown bis zur Party

ryan_blackdrago

Captain
Registriert
Nov. 2006
Beiträge
4.014
Ich bräuchte etwas Unterstützung, bei der Programmierung vom Datum unter PHP.

================================================

FRAGE1)
Wenn ein Datum in der SQL-Datenbank drinnen steht, wird dies auch angezeigt. Ist die DB leer, wird logischerweise der 01.01.1970 angezeigt.
Wie sieht jetzt eine IF-Abfrage aus, wenn ich folgende Struktur haben möchte?

//Wenn das Datum kleiner/gleich 01.01.1970 ist, steht nichts in der DB = keine Partydaten
if ($startdatum <= '1970-01-01')
{
echo "Es ist in nächster Zeit keine Party geplant";
}
else //wenn ein Datum für eine Party in der Datenbank vorhanden ist
{
echo "Die nächste Party ist am $startdatum;
}

================================================

FRAGE2)
Außerdem möchte ich noch die verbleibenden Tage angezeigt bekommen. Ist die Zeile:
$newDate = mktime(0,0,0, $startdatum);
korrekt?

================================================

<!-- Meine Quellcode -->
<!-- Wann ist die nächste Party ? -->
<?php
$startdatum = date("d.m.Y",$_SESSION['party_info']['partybegin']);
echo "n&auml;chste LAN am: " ,$startdatum;
//hier kommt der Code zur FRAGE 1 hin)



//Wieviele Tage sind es denn noch bis zur nächsten Party ?
$newDate = mktime(0,0,0, $startdatum); //hier muß die Variable für Frage 2 richtig angegeben werden)

// aktuelle Zeit im Unixformat erzeugen
$actDate = time();
// Differenz berechnen (in Sekunden)
$diffDate = ($newDate-$actDate);

// Anzahl Tage = Sekunden /24/60/60
// floor() liefert nur den Anteil vor dem Komma
$days = floor($diffDate / 24 / 60 / 60 );

// den verbleibenden Rest berechnen = Stunden
$diffDate = $diffDate - ($days*24*60*60);

// Ab hier, nicht benötigter Code...
// den Stundenanteil herausrechnen
// $hours = floor($diffDate / 60 / 60);
// $diffDate = ($diffDate - ($hours*60*60));
// den Minutenanteil
// $minutes = floor($diffDate/60);
// $diffDate = $diffDate - ($minutes*60);
// die verbleibenden Sekunden
// $seconds = floor($diffDate);

// und das ganze dann Anzeigen:
echo " Noch: $days Tage bis zur Party";

?>
 
ryan_blackdrago schrieb:
Wenn ein Datum in der SQL-Datenbank drinnen steht, wird dies auch angezeigt. Ist die DB leer, wird logischerweise der 01.01.1970 angezeigt.
Wie sieht jetzt eine IF-Abfrage aus, wenn ich folgende Struktur haben möchte?

<= wird nicht funktionieren, denn der operator kann nicht auf strings angewandt werden. du musst also erst alles in eine zahlenform umrechnen, damit du vergleichen kannst (mktime()). alternativ könntest du auch mit dem sql befehl BETWEEN einen zeitraum festlegen, welcher dir die queries zurückgibt. wenn du nur php verwendest, wäre es allerdings komfortabler mit timestamps zu arbeiten (time()).

nebenbei solltest du den standardwert auf NULL setzen, anstatt den 1.1.1970 zu verwenden. dann weißt du auch dass es leer ist und auch keine missverständnisse auftreten.

ryan_blackdrago schrieb:
FRAGE2)
Außerdem möchte ich noch die verbleibenden Tage angezeigt bekommen. Ist die Zeile:
$newDate = mktime(0,0,0, $startdatum);
korrekt?

mktime()
int mktime ([ int $Stunde [, int $Minute [, int $Sekunde [, int $Monat [, int $Tag [, int $Jahr [, int $is_dst ]]]]]]] )

entscheide selbst ob es richtig ist. ;)
 
Zu Frage1) funktioniert... :D

$startdatum = 0;
$newDate = 0;
$startdatum = date("d.m.Y",$_SESSION['party_info']['partybegin']);

$newDate = date("d.m.Y", 1970-01-01);

if ($startdatum <= $newDate)
{
echo "Es ist derzeit keine Party geplant";
}
else
{
$startdatum = date("d.m.Y",$_SESSION['party_info']['partybegin']);
echo "Bringt Bier mit zur n&auml;chsten Party am " ,$startdatum;
}


Zu Frage2) probiere noch rum. Lösung folgt noch..
 
PHP:
<?php

$s = explode( '-', '1970-01-01' );
$time = mktime( 0, 0, 0, $s[1], $s[2], $s[0] );

?>

damit bekommst du den timestamp des eintrags, von welchem du noch die differenz mit dem aktuellem datum bildest. bin mir nur nicht mehr sicher wo der monat stand. aber das kannst du ja umdrehen.
 

Ähnliche Themen

Antworten
2
Aufrufe
3.878
J
Antworten
5
Aufrufe
1.080
C
Antworten
10
Aufrufe
2.363
Zurück
Oben