| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

20-05-2011, 14:20
|
|
Baracuda-man
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 21
|
|
Tage zwischen zwei Timestamps im Format dd.mm.jjjj ausgeben
Hallo Leute,
brauche mal wieder eure Hilfe.
Wie ich zwei Timestamps vergleiche und die Differenz in Stunden/Tage/Sekunden ausgebe weiß ich und wird auch überall erklärt.
Jetzt benötige ich allerdings eine Funktion die mir die "ganzen Tage" anzeigt, welche zwischenzwei Timestamps liegen.
In der Datenbak habe ich das Startdatum und das Enddatum als Timestamp gespeichert:
Startdatum: 19.05.2011 in der Datenbak als: 1305799200
Enddatum: 21.05.2011 in der Datenbank als: 1305972000
Nun möchte ich durch eine While Schleife z.B. folgendes ausgeben:
19.05.2011
20.05.2011
21.05.2011
Damit ich im nächsten Schritt zu den einzelnen Tagen weitere Daten hinzufügen kann. Was dann aber nicht das Problem ist.
Dazu gibt es eine weitere Tabelle in denen die "Tage mit Daten" nochmals eingefügt werden.
Jetzt muss ich nur eine Funktion finden um alle kompletten Tage auszugeben. Habe schon die Idee gehabt die Timestamps in Tage umzurechnen und dann solange " durch einen Tag" zu teilen bis das erste Ergebnis unterschritten wird...
Bin mir aber nicht sicher wie ich das ganze jetzt umsetzen soll.
Hoffe ihr könnt mir helfen.
Mit freundlichen Grüßen
Dennis
|

20-05-2011, 14:25
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
Simple Schleife, und darin auf den Start-Timestamp jeweils einen Tag draufaddieren* - so lange, bis der Ziel-Tag erreicht wird.
* bspw. per strtotime oder DateTime::add
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

20-05-2011, 14:29
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
das Thema hatten wir doch letztens erst
h3ll hatte da etwas geschrieben, was dir weiterhelfen sollte.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

20-05-2011, 14:46
|
|
Baracuda-man
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 21
|
|
Habe den angegebenen Code:
PHP-Code:
while ($rows=mysql_fetch_array($q)) {
$startdatum = date("d.m.Y",$rows[startdatum]);
$enddatum = date("d.m.Y",$rows[enddatum]);
echo "<tr><td>$startdatum bis $enddatum</td><td>";
echo $rows['titel'];
echo "</td><td>";
echo $rows['beschreibung'];
echo '</td><td>';
for ($date = clone $startdatum; $date <= $enddatum;) {
echo $date->format('d.m.Y') . '<br />';
}
}
Jetzt folgendermaßen verändert. Leider möchte er das nicht ausgeben und gibt mir folgenden Fehler aus:
Parse error: syntax error, unexpected T_VARIABLE, expecting ';' in /homepages/14/d331953917/htdocs/login/turnier/edit.php on line 69
In Line 69 steht wie ihr warscheinlich schon vermutet der neue Code:
PHP-Code:
$date_from = new DateTime("2010-08-22");
$date_to = new DateTime("2011-07-22");
for ($date = clone $date_from; $date <= $date_to; $date->modify('next wednesday')) {
echo $date->format('Y-m-d') . '<br />';
}
Leider habe ich nicht ganz verstanden was die Angabe:
PHP-Code:
$date->modify('next wednesday')
bedeutet. Vielleicht habe ich da jetzt einen Denkfehler... Liegt das vielleicht an der while Schleife?
Vielen Dank schonmal für eure bisherigen Antworten.
Geändert von AmicaNoctis (20-05-2011 um 14:59 Uhr)
Grund: Fehlposting gejoint
|

20-05-2011, 14:57
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Ein bisschen Handbuch lesen solltest du selber. Klar trifft das nicht exakt deinen Fall, aber "next wednesday" durch "+1 day" ersetzen, hätte man schaffen können! Auch kann man Beiträge bearbeiten, statt einfach alles nochmal reinzuklatschen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

20-05-2011, 15:00
|
|
Baracuda-man
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 21
|
|
Sorry hatte gar nicht gesehen das ich den Beitrag bearbeiten kann. Werde nächstes mal etwas genauer lesen ;-)
Ich glaube ich habe es jetzt geschafft. Sollte noch ein Fehler auftauchen werde ich diesen Beitrag editieren anstatt neu zu posten ;-)
Liebe Grüße und Danke
Dennis
Edit:
Ich bekomme das ganze nicht zum Laufen. Selbst die Original php Funktion aus dem anderem Post funktioniert nicht. Habe mir auch die Dokumentation zu datetime angeschaut... müsste ja eig. funktionieren...
Fatal error: Cannot instantiate non-existent class: datetime in /homepages/14/d331953917/htdocs/login/turnier/edit.php on line 78
PHP-Code:
<?php $datum_von = "2010-08-22"; $datum_bis = "2011-07-22"; for ($date = new DateTime($datum_von); $date <= $datum_bis; $date->modify('next wednesday')) { echo $date->format('Y-m-d')."<br>"; } ?>
Geändert von Baracuda-man (20-05-2011 um 15:15 Uhr)
|

20-05-2011, 15:38
|
|
Baracuda-man
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 21
|
|
Ein Edit für einen weiteren Fehler ist vielleicht nicht so gut deswegen Poste ich den neuen Fehler hier nochmals.
Ich bekomme das ganze nicht zum Laufen. Selbst die Original php Funktion aus dem anderem Post funktioniert nicht. Habe mir auch die Dokumentation zu datetime angeschaut... müsste ja eig. funktionieren...
Fatal error: Cannot instantiate non-existent class: datetime in /homepages/14/d331953917/htdocs/login/turnier/edit.php on line 78
PHP-Code:
<?php $datum_von = "2010-08-22"; $datum_bis = "2011-07-22"; for ($date = new DateTime($datum_von); $date <= $datum_bis; $date->modify('next wednesday')) { echo $date->format('Y-m-d')."<br>"; } ?>
|

20-05-2011, 15:40
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
Dann ist vermutlich deine PHP-Version älter als 5.3.0, da gibt's noch kein DateTime.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

20-05-2011, 15:42
|
|
Baracuda-man
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 21
|
|
Da hast du Recht ich habe noch 5.1 glaube ich... kann das aber nicht ändern. Wie kann ich dann das ganze Problem anders lösen? Habe echt leider keine Ahnung wie ich das ganze jetzt machen kann.
|

20-05-2011, 15:47
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
Siehe meine erste Antwort ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

20-05-2011, 16:09
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.326
|
|
Zitat:
Zitat von Baracuda-man
Da hast du Recht ich habe noch 5.1 glaube ich... kann das aber nicht ändern. Wie kann ich dann das ganze Problem anders lösen?
|
Anderen Hoster suchen oder den Hoster darauf aufmerksam machen, dass er Uraltsoftware verwendet, die ein Sicherheitsrisiko darstellt.
|

21-05-2011, 00:31
|
|
phpsven
Registrierter Benutzer
|
|
Registriert seit: Jan 2010
Beiträge: 32
|
|
hallo,
ich möchte jetzt auch nicht den Code hier rein schreiben, da es doch sehr einfach ist.
du fängst mit dem Startdatum an in einer for Schleife und gibtst als Bedingung an daß nicht über das Enddatum hinaus gehen soll.
ein Tag hat 24 Stunden mal 60 Minuten mal 60 Sekunden das addierst du zum Timestamp dazu und innerhalb der for Schleife holst du dann mit der Funktion date() dein Datum.
phpsven
|

21-05-2011, 08:54
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.326
|
|
Zitat:
Zitat von phpsven
ein Tag hat 24 Stunden mal 60 Minuten mal 60 Sekunden
|
Stimmt nicht. Es gibt auch Tage mit 23 oder 25 Stunden.
|

21-05-2011, 10:28
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Wenn es nur um das Datum geht (ohne Uhrzeit), rechnest du einfach immer mit 12:00Uhr, dann haut das schon hin.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

21-05-2011, 11:22
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.326
|
|
Zitat:
Zitat von AmicaNoctis
Wenn es nur um das Datum geht (ohne Uhrzeit), rechnest du einfach immer mit 12:00Uhr, dann haut das schon hin.
|
Ja, das wäre natürlich ein Workaround. Aber warum die Pfuschmethode, wenn man es auch (ohne Aufwand) sauber machen kann?
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|