php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 12-12-2006, 15:53
m-werk
 Registrierter Benutzer
Links : Onlinestatus : m-werk ist offline
Registriert seit: Jan 2006
Beiträge: 168
m-werk ist zur Zeit noch ein unbeschriebenes Blatt
Standard Werktage über mehrere Monate berechnen!

Hallo, mit folgendem Code kann ich für jedes einzellne Monat die tatsächliche Arbeitszeit berechnen.

Ich möchte aber über das Monat hinaus das berechnen, sprich, ich möchte wissen, wieviele Werktage es vom z.B. 1.1.2006 bis 31.12.2006 sind.

Leider weiss ich nicht, wass ich da an diesem Code ändern muss, so dass auch das Enddatum hineinkommt.

PHP-Code:
$Jahr=2006;
$Monat=1;
$Tag=1;
$MonatEnde=12;
$TagEnde=31;
$JahrEnde=2006;

function 
ArbeitstageErmitteln($Jahr$Monat$JahrEnde$MonatEnde$TagEnde)

  for(
$i=1$i<=date("t"mktime(000$Monat$Tag$Jahr)); $i++)
    {
    if(
date("w"mktime(000$Monat$i$Jahr))!=&& date("w"mktime(000$Monat$i$Jahr))!=6)
      {
      
$Anzahl++;
      }
    }
  return 
$Anzahl;
}

echo 
ArbeitstageErmitteln($Jahr$Monat$JahrEnde$MonatEnde$TagEnde); 
Kann mir da jemand unterstützen?
Mit Zitat antworten
  #2 (permalink)  
Alt 12-12-2006, 16:13
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du musst deine Funktion in eine Schleife einbinden, die vom Start- bis zum End-Datum läuft
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #3 (permalink)  
Alt 12-12-2006, 16:14
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

dieses Script funktioniert aber doch wohl nicht, oder?

$Tag liegt nicht im scope der Funktion und ist ihr deshalb unbekannt.
Mit Zitat antworten
  #4 (permalink)  
Alt 12-12-2006, 16:31
m-werk
 Registrierter Benutzer
Links : Onlinestatus : m-werk ist offline
Registriert seit: Jan 2006
Beiträge: 168
m-werk ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
dieses Script funktioniert aber doch wohl nicht, oder?

$Tag liegt nicht im scope der Funktion und ist ihr deshalb unbekannt.
Sicherlich liegt $Tag drinn.


for($i=1; $i<=date("t", mktime(0, 0, 0, $Monat, $Tag, $Jahr)); $i++)

Zitat:
du musst deine Funktion in eine Schleife einbinden, die vom Start- bis zum End-Datum läuft
Und da steh ich jetzt an.

Bitte um hilfe!!
Mit Zitat antworten
  #5 (permalink)  
Alt 12-12-2006, 16:52
Maschenka
 Newbie
Links : Onlinestatus : Maschenka ist offline
Registriert seit: May 2004
Beiträge: 42
Maschenka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von m-werk
Sicherlich liegt $Tag drinn.


for($i=1; $i<=date("t", mktime(0, 0, 0, $Monat, $Tag, $Jahr)); $i++)
$Tag wird zwar innerhalb der Funktion verwendet, ihr aber nicht uebergeben, soll heissen, $Tag fehlt in dieser Zeile:
function ArbeitstageErmitteln($Jahr, $Monat, $JahrEnde, $MonatEnde, $TagEnde)
Mit Zitat antworten
  #6 (permalink)  
Alt 12-12-2006, 16:59
m-werk
 Registrierter Benutzer
Links : Onlinestatus : m-werk ist offline
Registriert seit: Jan 2006
Beiträge: 168
m-werk ist zur Zeit noch ein unbeschriebenes Blatt
Standard

OK, sorry, hab ich übersehen.

Leider weiss ich noch immer nicht, wie ich eine schleife vom Startdatum bis zum Enddatum über diese Funktion legen kann.
Mit Zitat antworten
  #7 (permalink)  
Alt 12-12-2006, 17:17
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von m-werk
Leider weiss ich noch immer nicht, wie ich eine schleife vom Startdatum bis zum Enddatum über diese Funktion legen kann.
Dann überleg' (weiter).

Immer nur mit "ich weiss nicht" und "ich kann nicht" zu kommen, ist doch wohl etwas wenig.

Also zeige bitte zumindest einen Ansatz. Wenn dieser noch Fehler enthält, kann man ihn ja ggf. gemeinsam verbessern.
Aber gar kein eigener Vorschlag ist mir zumindest zu wenig.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 13-12-2006, 08:34
m-werk
 Registrierter Benutzer
Links : Onlinestatus : m-werk ist offline
Registriert seit: Jan 2006
Beiträge: 168
m-werk ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich könnte mir dabe nur eines vorstellen.

Zuerst muss ich mal die Startzeit und Endzeit in ein Timestamp umwandeln.

So. Du hast geschrieben, dass ich diese Funktion in eine Schleife packen muss.


Hier mal mein Ansatz:

Vor der Funktion:

PHP-Code:
$d1 date('t'mktime(000$Monat+10$Jahr));

for(
$i1=1;$i1<=$d1;$i1++){
$itest=str_pad($i12'0'STR_PAD_LEFT);

$Monatsdurchlauf=$Jahr.$itest.$Tag;

function......
.....

Ich kann mir aber nicht vorstellen, das das funktionieren kann.

------------------
Tut es auch nicht.

Geändert von m-werk (13-12-2006 um 08:47 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 13-12-2006, 08:41
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

1. Startdatum als Timestamp
-- Schleifenstart --
2. Aufdröseln des ganzen in jahr, monat und tag
3. Aufruf deiner funktion
4. zu dem Timestamp 1 Tag dazu addieren
5. Wenn Timestamp jetzt >= Endedatum beende die Schleife, ansonsten weiter bei 2.
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #10 (permalink)  
Alt 13-12-2006, 09:24
m-werk
 Registrierter Benutzer
Links : Onlinestatus : m-werk ist offline
Registriert seit: Jan 2006
Beiträge: 168
m-werk ist zur Zeit noch ein unbeschriebenes Blatt
Standard

so hab ich jetzt mal angefangen:

PHP-Code:
$startdatum=mktime(0,0,0,$Monat,$Tag,$Jahr);
$enddatum=mktime(0,0,0,$MonatEnde,$TagEnde,$JahrEnde);

for(
$i1=$startdatum;$i1<=$enddatum;$i1++){
$test1=date("d.m.Y"$i1);
echo 
"$test1<br>";

Diese schleife kann ich aber so nicht verwenden, da der timestamp hier immer um 1 erhöht wird. das wird alleine für den 1.1.2006 unendlich.
Mit Zitat antworten
  #11 (permalink)  
Alt 13-12-2006, 09:28
Maschenka
 Newbie
Links : Onlinestatus : Maschenka ist offline
Registriert seit: May 2004
Beiträge: 42
Maschenka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von m-werk
Diese schleife kann ich aber so nicht verwenden, da der timestamp hier immer um 1 erhöht wird. das wird alleine für den 1.1.2006 unendlich.
Nicht unendlich, sondern so viele Male, wie der Tag Sekunden hat. Du könntest den Timestamp um so viel erhöhen, wie ein Tag Sekunden hat, um auf den jeweils nächsten Tag zu kommen. Allerdings gibts da dann wieder kleine Problem bezüglich Sommer-/Winterzeit, aber zum Üben hilft es vielleicht erstmal weiter.
Mit Zitat antworten
  #12 (permalink)  
Alt 13-12-2006, 09:28
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du kannst auch nicht einfach so zu einem Timestamp eine 1 addieren.
Ausserdem solltest du eine while-Schleife benutzen, da du ja gar nicht weisst, wie oft deine Schleife durchlaufen wird.

Such mal nach "datumsberechnung" oder "rechnen mit Datum".
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #13 (permalink)  
Alt 13-12-2006, 10:11
m-werk
 Registrierter Benutzer
Links : Onlinestatus : m-werk ist offline
Registriert seit: Jan 2006
Beiträge: 168
m-werk ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich schnalls einfach nicht. ich komm nicht dahinter. Es hilft nichts.

Ich habe ein while (true) vor der schleife gesetzt. Das mit den timestring hab ich noch nicht in meinem kopf. Ich versuch das ding schon seit 2 Tagen zum laufen zum bringen, aber hänge totall.
Mit Zitat antworten
  #14 (permalink)  
Alt 13-12-2006, 10:17
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zerlege ein Problem immer in Teilaufgaben, wenn du nicht weiter kommst - so lange, bis diese klein genug sind, dass du sie einzeln zu lösen vermagst.

Wo hängst du denn jetzt konkret?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #15 (permalink)  
Alt 13-12-2006, 10:17
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Ich habe ein while (true) vor der schleife gesetzt
und damit eine Endlosschleife produziert, wenn ich dich richtig verstehe.
Du sollst die for-Schleife durch eine while-Schleife ERSETZEN!
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

Newsmanager

Der Newsmanager ist ein Newssystem und Newsletter in einem. Mit WYSIWYG Editor und E-Mail import aus einer bestehenden MySql Datenbank sowie dynamische Kategorien / Themen Filter.

11.09.2019 Stephan_1972 | Kategorie: PHP/ News
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

11.09.2019 Stephan_1972 | Kategorie: PHP/ Webservice
ContentLion - Open Source CMS ansehen ContentLion - Open Source CMS

ContentLion ist ein in PHP geschriebenes CMS, bei dem man Seiten, Einstellungen usw. in Ordnern lagern kann

22.08.2019 stevieswebsite2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

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