Tage-Abfrage

puschelchen

Erfahrenes Mitglied
Guten Morgen,
Ich hab ein kleinen Denkfehler gerade, hoffe ihr könnt mir helfen.
Ich möchte das ab Sonntag Lizenzen frei gibt.
Bis jetzt hab ich folgenden Code:
PHP:
$zeit_alt = strtotime($zeit);
$plus = $plus * 3600;
$neue_zeit = $zeit_alt + $plus;
$LaufzeitEnde= date("Y-m-d H:i:s");
$LaufzeitEnde=date("Y-m-d H:i:s", $neue_zeit);
$weekdays = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
$wochentag = $weekdays[date("w")];
if ($wochentag=="Sonntag"){

}
else {
$sqlquery=("INSERT INTO $tbl_name (Seriennummer,Lizenz,Laufzeit,LaufzeitAktiv,LaufzeitEnde) VALUES ('$dpReference','$Lizenz','$Laufzeit1','$LaufzeitAktiv','$LaufzeitEnde')");
also wenn ich Samstag um 22 Uhr die Lizenz kaufe dann soll diese Erst Montags enden. versteht ihr wie ich es mein?
Hoffe ihr könntet mir helfen.

LG
Puschelchen
 
versteht ihr wie ich es mein?
Leider nein.

Versteh ich das richtig? Du verteils Lizenzen für einen Tag. Aber der Sonntag ist gratis?
Wenn also jemand am Mittwoch um 20 uhr eine Lizenz kauuft, dann ist die gültig bis Donnerstag um 20 Uhr. Vom Samstag ist sie aber bis Montag gültig.

PHP:
$freeDays = array(0, 1);    //Beispiel mit Sonntag und Montag gratis
$start = mktime(22,0,0,3, 19, 2011);
$end = strtotime("+1 day", $start); 
while(in_array(date('w', $end), $freeDays)){
    $end = strtotime("+1 day", $end); 
}    

echo date("m.d.y G:i:s", $end);
 
danke für das Beispiel.
allerdings gibts nen hacken, ich hab bestimmte Laufzeiten definiert.
sprich $Laufzeit1 ist ne Stundenzahl. Ich müsste also Laufzeit+24h rechnen und dann Datum +Zeit.
PHP:
$ltime= $Laufzeit1+"24";
nun muss ich nur noch aktuelles Datum rechnen
habs nun so gemacht:
PHP:
if ($wochentag=="Sonntag"){
$ltime= $Laufzeit1+"24";
$LaufzeitEnd= date("Y-m-d H:i:s");
$LaufzeitEnd=date("Y-m-d H:i:s", $ltime);
echo $LaufzeitEnd;
ausgabe:
1970-01-01 01:00:29
:/
 
Zuletzt bearbeitet:
Dann ersetz einfach die Rechung
PHP:
$duration = 24;
$end = strtotime("+{$duration} hour", $start); 
while(in_array(date('w', $end), $freeDays)){
    $end = strtotime("+{$duration} hour", $end); 
}
 
weil das $start eben nid selbst eingegeben wird sondern immer aktuell ist.
PHP:
$LAktiv=  date("Y-m-d");
$start = $LAktiv;
$duration = 24;
$end = strtotime("+{$duration} hour", $start);
while(in_array(date('w', $end), $freeDays)){
    $end = strtotime("+{$duration} hour", $end);
}
Fehlermeldung:
Notice: A non well formed numeric value encountered in /srv/www/htdocs/epay/dpBezahlungOK2.php on line 201
Zeile:
PHP:
$end = strtotime("+{$duration} hour", $start);
 
Zuletzt bearbeitet:
dein $LAktiv ist ein String und kein Timestamp. Nachher rechnen wir aber dauernd mit Timestamps

PHP:
$LAktiv = time();

Wenn du die Zeit abschneiden willst, kannst du das mit dieser Funktioen machen
PHP:
/**
 * kürzt den timestamp auf das Datum
 * @param timestamp
 * @return timestamp
 */
function truncDate($date){
    return mktime(0, 0, 0, date('m', $date), date('d', $date), date('Y', $date));
}
 
hm ok ich bekomm nun zwar ein ergebnis, aber bei ltime wird Stunden+Laufzeit verwendet denn Laufzeit hat viele verschiedene Stunden.
Sprich es würde nix bringen nur 24h draufzurechnen wenn ich aber 5 stunden noch dazu brauch oder 19 oder oder...
Also muss ich erst 24+Laufzeit berechnen und dann das Ergebnis +Aktuelles Datum.
Trotzdem Danke für die Funktion :)
 
Zurück