php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.02.2005, 13:31  
Gast
 
Beiträge: n/a
Standard Fragen zur Date Funktion

So also ich habe ein tabelle die Datum heißt. diese soll über php automatisch mit dem datum für einen beliebigen (den der nutzer eingeben kann) monat die anzahl der tage einfügen soll und auch in der richtigen reihenfolge (also wenn der 1. des monats auf einen mittwoch fällt dann soll das auch so in die tabelle eingetragen werden! usw.)

außerdem soll ausgelesen werden welcher tag im jahr ein beleibiges datum ist (z.b. welcher tag ist der 12.04.2005).

und dann nochwas. gibt es eine möglichkeit über eine funktion zu ermitteln ob ein bestimmter tag ein feiertag ist oder nicht?

so ich hoffe mal das ich mich richtig ausgedrückt habe! Bin für eure hilfe sehr dankbar!!

MfG Tequila
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.02.2005, 13:45  
Erfahrener Benutzer
 
Registriert seit: 04.07.2003
Beiträge: 359
PHP-Kenntnisse:
Fortgeschritten
Sirke befindet sich auf einem aufstrebenden Ast
Standard

Hi,

ich würde es mit:
PHP-Code:
<?php
for( $i 1$i <= date("t",mktime(0,0,0,$Monat,1,date("Y"))); $i++)
{
  
mysql_query("INSERT INTO tabelle ...(Was auch immer da rein soll)") OR die('FEHLER');
}
?>
wobei dann $i der Monat ist.


Wenn du für die 2. farge mit Tag den Wochentag meinst, dann geht das mit:
PHP-Code:
<?php
$Wochentag 
date("w",mktime(0,0,0,$Monat,$Tag,$Jahr);
?>
wobei im Wochentag eine Zahl zwischen 0 und 6 steht.


Und aus deine 3. Farge gibt es glaube ich keine Antwort, da in jedem Land und für jede Religion die Feiertage anders sind und du einer Funktion schlecht die religion und das Lang bzw. sogar das Bundeslang übergeben kannst


Für alles weitere schau mal unter http://www.php.net nach.

MfG Sirke
Sirke ist offline  
Alt 26.02.2005, 10:19  
Gast
 
Beiträge: n/a
Standard

hm... wie gesagt ich bin anfänger! also sorry für die saumäßig dumme frage aber ich verstehe die syntax leider nicht richtig!

also

Zitat:
Hi,

ich würde es mit:
PHP:

<?php
for( $i = 1; $i <= date("t",mktime(0,0,0,$Monat,1,date("Y"))); $i++)
{
mysql_query("INSERT INTO tabelle ...(Was auch immer da rein soll)") OR die('FEHLER');
}
?>



wobei dann $i der Monat ist.
Wie kann da $i für den monat stehen?? tut mir leid aber ich seh da gerade nicht durch. naja habe auch schon früh angefangen zu arbeiten!

ich will in die tabelle folgene daten eintragen: Tag Monat Jahr und dann noch ne Datums id die dem tag im jahr entspricht (1-366).

und a weiß ich nicht wie das mit der funktion da oben gehen soll!
tut mir leid für die dumme frage!! aber danke für eure hilfe!
 
Alt 26.02.2005, 14:02  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

Ich lasse mir die Feiertage (die ich brauche) so anzeigen:

PHP-Code:
<?php
function is_feiertag $timestamp )  {
    
    
$m date'm'$timestamp );
    
$d date'd'$timestamp );
    
    
$return = array();
    
    if ( !
date'w',  $timestamp ) )    $return[] = 'Sonntag';
    if ( 
$m $d == '0101')        $return[] = 'Neujahr';
    elseif ( 
$m $d == '0501')    $return[] = 'Maifeiertag';
    elseif ( 
$m $d == '1003')    $return[] = 'Tag der Deutschen Einheit';
    elseif ( 
$m $d == '1031')    $return[] = 'Reformationstag';
    elseif ( 
$m $d == '1225')    $return[] = 'Weihnachten';
    elseif ( 
$m $d == '1226')    $return[] = '2. Weihnachtsfeiertag';
    
    if ( 
$m $d == date'md'$ostern easter_date$y date'Y'$timestamp ) ) ) )
                            
$return[] = 'Ostern';
    elseif ( 
$m $d == date'md'strtotime'-2 DAY'$ostern ) ) )
                            
$return[] = 'Karfreitag';
    elseif ( 
$m $d == date'md'strtotime'+1 DAY'$ostern ) ) )
                            
$return[] = 'Ostermontag';
    elseif ( 
$m $d == date'md'strtotime'+39 DAY'$ostern ) ) )
                            
$return[] = 'Himmelfahrt';
    elseif ( 
$m $d == date'md'strtotime'+49 DAY'$ostern ) ) )
                            
$return[] = 'Pfingsten';
    elseif ( 
$m $d == date'md'strtotime'+50 DAY'$ostern ) ) )
                            
$return[] = 'Pfingstmontag';
    elseif ( 
$m $d == date'md'strtotime'+60 DAY'$ostern ) ) )
                            
$return[] = 'Fronleichnam';
    elseif ( 
        
$m $d == 
        
date'md'strtotime$y '-12-24 -' 
            ( 
32 date'w'mktime0001224$y ) ) ) . ' DAY' ) ) 
    )
                            
$return[] = 'Buß- und Bettag';
    
    return 
implode' und '$return );
}
?>
tapferesschneiderlein ist offline  
Alt 26.02.2005, 15:33  
Gast
 
Beiträge: n/a
Standard

so mal gucken ob ich dein script richtig verstanden habe:

es zeitg den jeweiligen feiertag nur ann wenn das entsprechende datum erreicht ist oder??

aber ich ferstehe deine elsif schleifen nicht! was bewirkst du mit diesen schleifen?? ist das ne funktion von php die ausließt ob ostern ist oder nicht??
und was ist dei funktion $timestamp??
Danke euch!!

achja kann mir noch wer mit der ersten sache helfen?

mfg tequila
 
Alt 26.02.2005, 17:51  
Erfahrener Benutzer
 
Registriert seit: 04.07.2003
Beiträge: 359
PHP-Kenntnisse:
Fortgeschritten
Sirke befindet sich auf einem aufstrebenden Ast
Standard

Ich denke, dass du das so meinst, aber vllt irr ich mich ja wieder:

PHP-Code:
<?php
// Für den Tag im Monat:
$Tag date("d");
// Für den Monat:
$Tag date("m");
// Für das Jahr:
$Tag date("Y");

// Für den Tag im Jahr:
$TagImJahr 0;
// Die Tage der bereits vergangenen Monate
while( $i $Monat )
{
  
$TagImJahr += date("t",mktime(0,0,0,$i,1,$Jahr));
  
$i++;
}
// Der heutige Tag
$TagImJahr += $Tag;
?>
So?

MfG Sirke
Sirke ist offline  
Alt 26.02.2005, 22:53  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

> gibt es eine möglichkeit über eine funktion zu ermitteln ob
> ein bestimmter tag ein feiertag ist oder nicht?

Genau das macht die Funktion is_feiertag (s. o.).


Ich rate einfach mal, wie Du das mit dem Tabelle füllen meinst ...

PHP-Code:
<?php

// vom User:
$monat 2;
$jahr  2005;


$tabelle = array();
for (
$d 1$n date('t'mktime(000$monat1$jahr)); $d <= $n$d++) {
    
$tabelle[$d]['datum'] = $d '.' $monat '.' $jahr;
    
$tabelle[$d]['wochentag'] = date('l'$timestamp mktime(000$monat$d$jahr));
    
$tabelle[$d]['feiertag']  = is_feiertag($timestamp);
    
$tabelle[$d]['tag_im_jahr'] = date('z'$timestamp) + 1;
    
$tabelle[$d]['blablabla'] = 'blablabla';
}
?>
tapferesschneiderlein ist offline  
Alt 27.02.2005, 07:13  
Gast
 
Beiträge: n/a
Standard

@ Sirke: du hast dich schon beim ersten mal nicht geirrt!! aber wie gesagt ich habe die syntax einfach nicht verstanden (verstehe sie immer noch nicht )! mit dem 2.post haste mir schonmal wieder etwas helfen können!!
nur ein problem hätte ich noch:
Zitat:
// Die Tage der bereits vergangenen Monate
while( $i < $Monat )
{
$TagImJahr += date("t",mktime(0,0,0,$i,1,$Jahr));
$i++;
}
funktionirt das auch wenn ich das einfach umschreibe also $i > $Monat
wenn ich die tage der noch kommenden monater erfahren möchte??

@tapferesschneiderlein:
Zitat:
> gibt es eine möglichkeit über eine funktion zu ermitteln ob
> ein bestimmter tag ein feiertag ist oder nicht?

Genau das macht die Funktion is_feiertag (s. o.).


Ich rate einfach mal, wie Du das mit dem Tabelle füllen meinst ...

PHP:

<?php

// vom User:
$monat = 2;
$jahr = 2005;


$tabelle = array();
for ($d = 1, $n = date('t', mktime(0, 0, 0, $monat, 1, $jahr)); $d <= $n; $d++) {
$tabelle[$d]['datum'] = $d . '.' . $monat . '.' . $jahr;
$tabelle[$d]['wochentag'] = date('l', $timestamp = mktime(0, 0, 0, $monat, $d, $jahr));
$tabelle[$d]['feiertag'] = is_feiertag($timestamp);
$tabelle[$d]['tag_im_jahr'] = date('z', $timestamp) + 1;
$tabelle[$d]['blablabla'] = 'blablabla';
}
?>
so im grundaufbau kann ich nur sagen genau getroffen!!
aber: ich verstehe einfach nicht was die for schleife macht! vor allem
date('t', mktime(0, 0, 0, $monat, 1, $jahr) ich komme einfach nicht damit klar wie diese funktion laufen soll da er mit "t" doch die tage des aktuellen monats ermittelt oder??
sorry das ich das einfach nicht schnalle und euch mit som ver.... sche... nerve! aber ich habe mich seit tagen an dieser stelle festgefressen und ein komplette blockade in meinem kopf das ich das zz einfach nicht schnalle.
achja und ist das so dass monat und jahr vom user eingegeben werden oder???
naja hoffe ich habe mich einigermaßen verständlich ausgedrückt!!

Danke für eure hilfe!!! MfG tequila
 
Alt 27.02.2005, 13:06  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

Ich zitiere Dich wieder:
> tabelle [...] diese soll [...] für einen beliebigen [...] monat die anzahl der tage einfügen

Und das macht die for-Schleife. Ich setze mal voraus, daß Du grundsätzlich weißt, wie die Syntax lautet (wenn nicht, bitte erstmal nachlesen).

PHP-Code:
<?php

// vom User:
$monat 2;
$jahr 2005;

// ein leeres Array anlegen
$tabelle = array();

for (
// jetzt kommt die Initialisierung:

// der erste Tag des Monats ist der 1.
$d 1

// die Anzahl der Tage ermittelst Du mit date('t')
$n date('t'

// als zweites Argument will date() (optional) 
// einen Unix-Timestamp des Datums, den Du 
// hier mit mktime() (bitte selber nachlesen)
// erhältst.
mktime(000$monat1$jahr)); 


// jetzt die Laufbedingung
$d <= $n

// ... und das Inkrement (die Tage werden von 1 bis n 
// (also date('t')) hochgezählt
$d++) {
    
    
// hier bilde ich ein deutsches Datum
    
$tabelle[$d]['datum'] = $d '.' $monat '.' $jahr;
    
    
// hier ermittle ich den Wochentag mit date('l') und 
    // dem *aktuellen* wieder mit mktime() gebildeten
    // Unix-Timestamp.
    // Du kannst auch date('w') nehmen und die deutschen
    // Wochentage in ein entspr. Array füllen oder Dein 
    // PHP auf de_DE oder sowas setzen ...
    
$tabelle[$d]['wochentag'] = date('l'$timestamp mktime(000$monat$d$jahr));
    
    
// hier kommt o. g. Funktion is_feiertag() zum Einsatz und
    // schreibt Dir den/die Feiertag(e) oder eben keinen rein
    
$tabelle[$d]['feiertag'] = is_feiertag($timestamp);
    
    
// date('z') ermittelt den Tag des Jahres (01.01. ist Tag 0)
    
$tabelle[$d]['tag_im_jahr'] = date('z'$timestamp) + 1;
    
    
// ... und das kannst Du ewig so weitertreiben bis der
    // Monat voll ist ...
    
$tabelle[$d]['blablabla'] = 'blablabla';
    
    
// Du könntest das deutsche Datum (oder jedes beliebige) 
    // auch so bauen:
    
$tabelle[$d]['datum2'] = date('d.m.Y'$timestamp);
}
?>
tapferesschneiderlein ist offline  
Alt 27.02.2005, 13:35  
Gast
 
Beiträge: n/a
Standard

ja klar den grundaufbau der for schleife kenne ich schon aus c++ aber ich konnte mit den befehlen mktime (schon nachgelesen und nach etwas rumprobieren endlich verstanden! ) und mein zz größtes problem ist dieses $timestamp! ich finde leider keine vernümpftige erklärung zu dieser funktion! -> jedenfals habe ich keine gefunden die ich verstehe
ich habe die formel schon so umgeschrieben das es ohne probleme funktioniert. habe meine feiertage ergänzt und alles so umgemodelt wie ich es brauche. aber ich will es auch verstehen! demnach wäre ich dankbar wenn mir jemand mal ne gute anleitung geben könnte (link).

@tapferesschneiderlein
ich habe es echt versucht aber ich verstehe nicht wie du mit deiner funktion ostern berechnen kannst!

if ( $m . $d == date( 'md', $ostern = easter_date( $y = date( 'Y', $timestamp ) ) ) )
$return[] = 'Ostern';

ist das ne funktion von php (also ich meine easter_date!)??

Ich danke für eure schnelle und nette hilfe! MfG Tequila
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
Renommee Funktion wirft Fragen... tomtaz Board-Support 11 02.07.2008 21:18
Komplexe Funktion: +Übersichtlichkeit, -Performance Jacks Rache PHP Tipps 2006 3 07.06.2006 14:22
fehler in beim übergabewert einer funktion? HTML, Usability und Barrierefreiheit 5 01.12.2005 22:33
Einfach Datepicker gesucht Cyberbob_at_tot PHP Tipps 2007 5 14.11.2005 09:10
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
probleme mit date funktion PHP Tipps 2005-2 8 02.08.2005 18:51
In einer Funktion auf eine Funktion der Klasse zugreifen phpbeginner PHP Tipps 2005-2 2 28.07.2005 00:30
Bug in der date Funktion? MortakArtos PHP Tipps 2005-2 5 20.07.2005 11:24
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
date() Funktion zeigt falsches Datum c001130 PHP Tipps 2005 11 11.04.2005 21:14
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] sql syntax error in funktion, kann aber nix finden :( PHP Tipps 2004 10 20.07.2004 19:19

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php is_feiertag, fragenkatalog beim date, buß- und bettag = date(\'d.m.y\', mktime easter_date

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:14 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.