CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
20.09.2016, 20:52:55
|
Anfänger
|
|
Registriert seit: Dec 2008
Ort: Geresried
Alter: 58
Beiträge: 32
|
|
Timestamp dynamisch generieren
Hallo Zusammen,
hänge momentan daran, den Timestamp dynamisch zu generieren.
Das erzeugt mir den Timestamp zum Montag in der 40. Woche des Jahres 2016 (ist der Tag der Deutschen Einheit, 3.10.2016):
PHP-Code:
$datumnachferienstamp = "time('2016-W40-1')";
Die Datum habe ich in einer MySQL Datenbank hinterlegt.
Wie etwa hier: 2016-10-03
Ich bekomme diese Daten dynamisch in Variablen hinein, so dass diese diesen Ihalt haben:
PHP-Code:
$jahrende = 2016; $monatende = 10; $tagende = 03;
Den Wochentag 1 habe ich aus dem Formular übernommen.
Nun ist mein Problem, daraus den String zu generieren, mittels welchem ich den obigen Timestamp erzeugen kann.
PHP-Code:
$wochennummerLetzterFerientag = date("W", mktime(0,0,0,$monatende,$tagende,$jahrende)); $timestamp14nachferien = strtotime($datumnachferienstring); $gesuchtdatum14 = date('d.m.Y', $timestamp14nachferien);
Funktioniert so nicht, denn ich muss, wie im obersten Beispiel gezeigt, in den String das große W mit reinpacken: 2016-W40-1. Sonst komme ich auf irgendein anderes Datum.
Habe versucht, so das W mit reinzupacken, und diese Variable dann zusammen mit den vorgenannten für Jahr und Tag einzusetzen:
PHP-Code:
$wochennummerLetzterFerientag14 = "W" . $wochennummerLetzterFerientag14; $timestamp14nachferien = strtotime($jahrende14-$wochennummerLetzterFerientag-$gesuchttag);
was allerdings nur eine Fehlermeldung gab.
Auch versuchte ich das W so mit reinzubekommen:
PHP-Code:
$datumnachferienstring = "time('$jahrende14-W$wochennummerLetzterFerientag-$gesuchttag')"
Ging auch nicht.
Wie mache ich es richtig?
Danke schon mal für eure Antworten
Ansap
|
21.09.2016, 07:50:28
|
Junior Member
|
|
Registriert seit: Apr 2016
Alter: 44
Beiträge: 171
|
|
AW: Timestamp dynamisch generieren
ich versteh nicht was überhaupt dein Ziel ist.
time() als Funktion in PHP akzeptiert keine Parameter, und da kommt auch nichts vernünftiges bei raus:
https://3v4l.org/KLEoi
Warum das in einem String steht erschliesst sich mir auch nicht.
und wenn du schon ein Datum wie "2016-10-03" in der DB hast, nimm UNIX_TIMESTAMP(date) oder äquivalent was deine DB an Funktionen bereitstellt. In PHP macht das dann strtotime() oder DateTime::fromFormat(). Das "W" benutzt du dann halt nacher bei der Ausgabe.
|
21.09.2016, 09:12:31
|
Member
|
|
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
|
|
AW: Timestamp dynamisch generieren
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
|
21.09.2016, 09:51:53
|
Anfänger
|
|
Registriert seit: Dec 2008
Ort: Geresried
Alter: 58
Beiträge: 32
|
|
AW: Timestamp dynamisch generieren
Zitat:
Zitat von chorn
ich versteh nicht was überhaupt dein Ziel ist.
|
Mein Ziel ist, anhand der Wochen- und Tagesnummer den richtigen Tag ausgegeben zu bekommen.
Zitat:
Zitat von chorn
time() als Funktion in PHP akzeptiert keine Parameter, und da kommt auch nichts vernünftiges bei raus:
|
Wenn ich das richtig verstanden habe, was es da heißt:
http://php.net/manual/de/function.time.php
dann kann ich damit mit dem Datum "Berechnungen" durchführen.
In meinem Formular werden anhand eines Ausgangsdatums/-Wochentages vier mögliche Termine angeboten. Auf diese komme ich am sichersten über diese Funktion.
Zitat:
Zitat von chorn
Warum das in einem String steht erschliesst sich mir auch nicht.
|
Die Datum in der Datenbank sind Ausschlussdatum, das heißt, zu diesen Zeiten, die da stehen, zwischen beginndatum und endedatum, soll kein Termin angeboten werden.
Der Benutzer des Formulares wählt einen Wochentag, an welchem ihm Termine angeboten werden sollen, und somit ist die Funktion, die mir wöchentlich, z.B. den Montag oder Dienstag usw. anbietet ideal. Dummerweise sind immer wieder mal Tage oder Wochen, wo kein Termin angeboten werden darf.
Hier kannst das vorläufige Formular ansehen: http://www.taekwondoschule.de/m/probe5-94.php. Wennst Montags wählst, kommt ein Feiertag mir rein.
Wenns da dann heißt: Kein Training, bitte anderen wählen. Das ist nicht wirklich sinnvoll, drum will und soll ich diese Feiertags-/Ferien-Termine ausschließen. Geht am einfachsten mit der Möglichkeit, einen bestimmten Wochentag in der x. Woche zu wählen.
Vielen Dank für euere Tipps und Anregungen
Geändert von ansap (21.09.2016 um 10:17:02 Uhr)
Grund: Nachtrag
|
21.09.2016, 15:37:26
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Timestamp dynamisch generieren
Vorschlag: - packe alle gesperrten Tage eines Jahres in die Datenbanktabelle (nicht mit Bereichen arbeiten) und schließe eine Datum in der Vergangenheit aus (date() <= heute)
- bastel Dir eine Funktion mit Übergabe eines Datums (bool CheckMyDate("2016-10-03")) und als Rückgabe "gesperrt"/"nicht gesperrt" (TRUE/FALSE)
- werte die Rückgabe aus und zeige entsprechend das Datum an oder nicht
PS:
Zitat:
<select tabindex='3' name='Datum' >
<option selected='selected' value='Montag, der 26.09.2016'>Montag, der 26.09.2016</option>
<option value='Kein Training, bitte anderen wählen'>Kein Training, bitte anderen wählen</option>
<option value='Donnerstag, der 01.01.1970'>Donnerstag, der 01.01.1970</option>
<option value='Montag, der 17.10.2016'>Montag, der 17.10.2016</option>
</select> Feiertage und Schulferien werden nicht als Termine angeboten!</p>
|
Der 2. und 3. Termin gefallen mir. Würden gemäß meines Vorschlags nicht mit angezeigt werden.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
21.09.2016, 18:27:08
|
Member
|
|
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
|
|
AW: Timestamp dynamisch generieren
Wenn ich dein Formular richtig deute, möchtest du einen bestimmten Tag ab einem Datum herausfinden, z.B. Montage ab dem 17.10.2016 und dann deinen Datenbank danach durchsuchen.
Dann könnte das hier helfen
PHP-Code:
<?php
function preview($var) { echo '<pre>'; print_r($var); echo '</pre>'; }
function get_week_days($from_date, $to_date, $weekday=0, $format='d.m.Y') { $w = date('w', $from_date);
if($w != $weekday) { if($weekday >= $w) { $next = $weekday - $w; }
else { $next = $weekday - $w + 7; }
$from_date = mktime( date('H', $from_date), date('i', $from_date), date('s', $from_date), date('n', $from_date), date('j', $from_date) + $next, date('Y', $from_date) ); }
$days = array(); for($i = $from_date; $i <= $to_date; $i += 86400*7) { if($format == 'unix') { $days[] = $i; }
else { $days[] = date($format,$i); } }
return $days; }
// Zeige alle Montage zwischen dem 1.9.2016 und 31.12.2016 Montag = 1 = date('w"....) $tage_datum = get_week_days(mktime(3,0,0, 9, 1, 2016), mktime(3,0,0, 12, 31, 2016), 1); preview($tage_datum);
// Zeige alle Donnerstage zwischen dem 1.10.2016 und 30.10.2016 Donnerstag = 4 = date('w"....) $tage_datum = get_week_days(mktime(3,0,0, 10, 1, 2016), mktime(3,0,0, 10, 30, 2016), 4); preview($tage_datum);
// Zeige alle Donnerstage zwischen dem 1.10.2016 und 30.10.2016 Donnerstag = 5 = date('w"....) als Unix timestamp $tage_datum = get_week_days(mktime(3,0,0, 10, 1, 2016), mktime(3,0,0, 10, 30, 2016), 4, 'unix'); preview($tage_datum);
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
|
28.09.2016, 17:17:36
|
Anfänger
|
|
Registriert seit: Dec 2008
Ort: Geresried
Alter: 58
Beiträge: 32
|
|
AW: Timestamp dynamisch generieren
Hallo,
zunächst mal vielen Dank für eure rege Mitwirkung.
So hab ichs jetzt zum Laufen gebracht:
PHP-Code:
$sql2 = "SELECT * FROM `Ferien` WHERE beginnDatum<='$naechstertag' AND endeDatum>='$naechstertag'";
$result2 = mysql_query($sql2);
$row2 = mysql_fetch_assoc($result2);
$row2_beginn = $row2[beginnDatum];
$row2_ende = $row2[endeDatum];
$row2teilen = explode("-", $row2_ende);
$jahrende = $row2teilen[0];
$monatende = $row2teilen[1];
$tagende = $row2teilen[2];
$wochennummerLetzterFerientag = date("W", mktime(0,0,0,$monatende,$tagende,$jahrende)); //Die Wochennummer ok
$timestringfertig = $jahrende . "-W" . $wochennummerLetzterFerientag . "-" . $wochentag;
print 'Das fertige Datum: ' . date("d.m.Y", '$timestringfertig');
Die verarbeiteten Daten entsprechen den Variablennamen.
Die Benennung der Variablen mag ungewöhnlich sein, doch, ich arbeite erst noch das PHP für dich, von der Claudia Unkelbach durch, und ...
@vt1816:
Zitat:
Vorschlag:
packe alle gesperrten Tage eines Jahres in die Datenbanktabelle (nicht mit Bereichen arbeiten) und schließe eine Datum in der Vergangenheit aus (date() <= heute)
bastel Dir eine Funktion mit Übergabe eines Datums (bool CheckMyDate("2016-10-03")) und als Rückgabe "gesperrt"/"nicht gesperrt" (TRUE/FALSE)
werte die Rückgabe aus und zeige entsprechend das Datum an oder nicht
|
Tut mir leid, aber hab ich so nicht, oder noch nicht verstanden, und somit auch nicht umsetzen können.
Kommt hoffentlich noch. :-)
Hab mir jetzt so:
PHP-Code:
$sql2 = "SELECT * FROM `Ferien` WHERE beginnDatum<='$naechstertag' AND endeDatum>='$naechstertag'";
$result2 = mysql_query($sql2);
$row2 = mysql_fetch_assoc($result2);
$row2_beginn = $row2[beginnDatum];
$row2_ende = $row2[endeDatum];
if($row2_beginn <= $naechstertag && $row2_ende >= $naechstertag)
{...}
meine Tage in der Datenbank gesucht, und verarbeitet.
Ist bestimmt ungewöhnlich und umständlich, trotzdem funktioniert es.
Schönen Abend noch,
Ansap
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:24:20 Uhr.
|