php Laufzeit + Datum

So, hör endlich auf, alle Stunde dein Thema hochzupuschen. Lies mal die Regeln zum Forum durch.
Das nächste mal gibts eine Verwarnung.

Regeln fürs PHP Board - bitte komplett durchlesen!

Es gibt ein Bearbeiten-Knopf für den Fall,dass du noch was nachtragen willst.
Wenn mal grad niemand antwortet, dann akzeptiere dies.

Zum Thema selber habe ich nix mehr zu sagen. Die Lösung deines eigentlichen Problems habe ich hier schon gepostet (irgendwo auf Seite 1 zwischen den restlichen Chat-Einträgen). Somit habe ich nix mehr zum Thema hinzuzufügen ohne dass ich mich einfach wiederholen müsste.
 
PHP:
<?php
error_reporting(E_ALL);
echo dpGetText($dpLang, "BEZNOK08"),"<br>";
echo $Lizenz,"<br>";
echo $dpAmount,"<br>";
echo dpGetText($dpLang, "BEZ01"),"<b> $Laufzeit1 </b><br>";
echo dpGetText($dpLang, "BEZNOK09"),"<br>";
     $host="localhost";
     $username="david";
     $password="a";
     $dbname="JPEGChecker-Datenbank";
     $tbl_name="Lizenz";
     mysql_connect("$host","$username","$password");
     mysql_select_db($dbname);
date_default_timezone_set("Europe/Berlin");
setlocale(LC_TIME,"");
$datum=date("Y.m.d");
$LaufzeitAktiv = date("H:i:s");
echo $LaufzeitAktiv,"<br>";
//$LaufzeitEnde=date('H:i:s', mktime(0, 0, 0, date('i'), date('s') + $Laufzeit1, date('H')));
//echo $LaufzeitEnde,"<br>";

$sqlquery=("INSERT INTO $tbl_name (Seriennummer,Lizenz,Laufzeit,Datum,LaufzeitAktiv,LaufzeitEnde) VALUES ('$dpReference','$Lizenz','$Laufzeit1','$datum','$LaufzeitAktiv','$LaufzeitEnde')");
$sql=mysql_query($sqlquery) or die ("Fehler in Abfrage ".$sqlquery.":<br/>".mysql_errno()." - ".mysql_error());
mysql_close();
?>

Ausgaben:
12:18:40
00:00:00
erstma LaufzeitEnde ausgeklammert worden das aktuelle Datum in extra Spalte und Uhrzeit auch. Uhrzeit wird nun die Aktuelle eingetragen.
Nur bei der Rechnung tun sich noch Probleme auf (00:00:00-Ausgabe).
Hab mir auch überlegt ob es an date(H) liegt aber wenn ich daraus ein Time mache kommt eine ganz andere Zahl.
 
Bitte den Code auf das wesentliche kürzen

PHP:
$datum=date("Y.m.d");
$LaufzeitAktiv = date("H:i:s");

$sqlquery=("INSERT INTO $tbl_name (Seriennummer,Lizenz,Laufzeit,Datum,LaufzeitAktiv,LaufzeitEnde) VALUES ('$dpReference','$Lizenz','$Laufzeit1','$datum','$LaufzeitAktiv','$LaufzeitEnde')");

item: Ich sehe hier keine Rechnung
item: Du hast nun das Datum und die Zeit getrennt. Was sind das für Spaltentypen in der DB? Weil das Datum "Y.m.d" ist kein MySQL-Datumsformat
 
die Rechnung wurde // auskommentiert.
das Datum wird eingefügt und als Date hab ich es in phpmyadmin definiert. Das Uhrzeit-Feld hab ich nun mit Time definiert. Durch die Trennung ist es meiner Meinung nach leichter es einzufügen. Nur LaufzeitEnde kann ich nicht einfügen da er mit falschen Werten rechnet.
 
Ob es Sinn macht das Datum von der Uhrzeit zu trennen musst du wissen.

Aber was passiert wenn ich zum Datum 07.03.2011 und der Uhrzeit 20:00 jetzt 5 Stunden dazu zähle.

Bei dir gibt das dann immer noch das Datum 07.03.2011, lediglich die Uhrzeit wird auf 01:00 geändert, richtig wäre doch wohl aber "08.03.2011 - 01:00".

Mit meinem obigen Beispiel (und Timestamp als Feldformat) sollte es doch klappen.
 
Ich rate dir mal die doku zu mktime() anzuschauen. Denn irgendwie sehe ich den Sinn deiner Rechnung nicht.

Du erstellst da ein Timestamp mit der Minute als Monat, Sekunde+Laufzeit als Tag und die Stunde als Jahr.

Das Trennen von Datum und Uhrzeit ist abzuraten. Damit lässt sich ganz schlacht arbeiten (siehe tombes Erklärung)

Um einfach zu rechnen und alle 'Sekunden in Minuten wandeln'-Probleme zu umgehen solltest du hier mit timestamp arbeiten. In SQL ist das sehr einfach.

Hier ein Beispiel dazu, wie einfach es dann geht
PHP:
$start = time();
$laufzeitS = 67; //Sekunden

$sql = "INSERT INTO myTable(start, laufzeit, end)
		VALUES(
			FROM_UNIXTIME({$start}), 
			{$laufzeitS}), 
			DATE_ADD(FROM_UNIXTIME({$start}), INTERVAL {$laufzeitS} SECOND)
		);"
 
tombe ich habe versucht dein versuch auf meins anzupassen und zu integrieren erst ging es nicht wirklich nun Funktioniert es aber wenn ich bei LaufzeitEnde nun einfach $neue_zeit schreib dann trägt er trotzdem nichts ein.

edit:
formatierung von neue_zeit vergessen danke tombe hat geholfen.
 
Zuletzt bearbeitet:
Müsste ich das realisieren würde ich das ganz simple angehen.

$jetzt = time()
$ablaufdatum = mktime(8,12,0,3,8,2011);
if ($jetzt > $ablaufdatum) {echo "die Zeit ist um";} else {"Es ist noch Zeit";}

und dazu brauchts nichtmal Mysql ;-)

Liebe Grüße
 
Also ich schreibe mal wie ich denke das es ablaufen soll.

  • Du hast ein Datum und eine Uhrzeit, zum Beispiel 08.03.2011 um 8.41 Uhr.
  • Zu diesem Datum/Uhrzeit soll jetzt eine bestimmte Anzahl Stunden (z.B. 8 Stunden) als Laufzeit dazu gezählt werden.

PHP:
<?php

date_default_timezone_set("Europe/Berlin");
setlocale(LC_TIME,"");

// Laufzeit z.B. auf 8 Stunden festlegen
$Laufzeit = 8;
// und in Sekunden umrechnen
$Laufzeit_Sek = $Laufzeit * 3600;

$LaufzeitAktiv = date("Y-m-d H:i:s");
$LaufzeitEnde = date("Y-m-d H:i:s", strtotime($LaufzeitAktiv) + $Laufzeit_Sek);

$sqlquery = "INSERT INTO $tbl_name (Seriennummer, Lizenz, Laufzeit, LaufzeitAktiv, LaufzeitEnde) VALUES ('$dpReference', '$Lizenz', $Laufzeit, $LaufzeitAktiv, $LaufzeitEnde)";
echo $sqlquery;

?>

Das ergibt bei mir folgende Ausgabe:

SQL:
INSERT INTO (Seriennummer, Lizenz, Laufzeit, LaufzeitAktiv, LaufzeitEnde) VALUES ('', '', 8, 2011-03-08 08:41:45, 2011-03-08 16:41:45)
 

Neue Beiträge

Zurück