SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.09.2016, 21:52:55
ansap ansap ist offline
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
Mit Zitat antworten
  #2  
Alt 21.09.2016, 08:50:28
chorn chorn ist offline
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.
Mit Zitat antworten
  #3  
Alt 21.09.2016, 10:12:31
sysop sysop ist offline
Member
 
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
AW: Timestamp dynamisch generieren

Grundlagen lernen:

http://us1.php.net/manual/de/function.time.php
http://us1.php.net/manual/de/function.date.php
http://us1.php.net/manual/de/class.datetime.php
http://us1.php.net/manual/de/function.strtotime.php
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
Mit Zitat antworten
  #4  
Alt 21.09.2016, 10:51:53
ansap ansap ist offline
Anfänger
 
Registriert seit: Dec 2008
Ort: Geresried
Alter: 58
Beiträge: 32
AW: Timestamp dynamisch generieren

Zitat:
Zitat von chorn Beitrag anzeigen
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 Beitrag anzeigen
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 Beitrag anzeigen
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 11:17:02 Uhr) Grund: Nachtrag
Mit Zitat antworten
  #5  
Alt 21.09.2016, 16:37:26
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
  #6  
Alt 21.09.2016, 19:27:08
sysop sysop ist offline
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 mktimedate('H'$from_date), date('i'$from_date), date('s'$from_date), date('n'$from_date), date('j'$from_date) + $nextdate('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,0912016), mktime(3,0,012312016), 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,01012016), mktime(3,0,010302016), 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,01012016), mktime(3,0,010302016), 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.
Mit Zitat antworten
  #7  
Alt 28.09.2016, 18:17:36
ansap ansap ist offline
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
Mit Zitat antworten
Antwort

Stichworte
date, date woche, datum dynamisch


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
arrays in einer klasse dynamisch generieren saidbuchari PHP für Fortgeschrittene und Experten 1 10.03.2014 18:28:41
TIMESTAMP + NOT NULL = DEFAULT Value CURRENT_TIMESTAMP ??? automatix MySQLi/PDO/(MySQL) 2 18.03.2010 12:31:41
Dynamisch Bilder generieren schnubbirz PHP für Fortgeschrittene und Experten 1 29.06.2006 18:33:36
Timestamp von kommenden Montagen und Freitagen generieren Wauzy PHP für Fortgeschrittene und Experten 2 27.08.2004 15:56:04
php und MySQL Timestamp crowl MySQLi/PDO/(MySQL) 3 08.07.2004 01:33:33


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:10:24 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt