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, 16: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
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 12-12-2006, 17: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, 17: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, 17: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, 17: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, 17: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, 18: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, 09: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 09:47 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 13-12-2006, 09: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, 10: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, 10: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, 10: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, 11: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, 11: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, 11: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

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

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


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

21.10.2020 Berni | Kategorie: PHP/ Anzeigenmarkt
Sendeplan Script inkl. Wunsch- und Grußbox + Kick-System + Bewerbungssystem

Das professionelle Sendeplan PHP Script inkl. Wunsch- und Grußbox + Kick-System für dein Webradio. Der übersichtliche Sendeplan bietet deinen Moderatoren und Zuhörern die perfekte Übersicht der aktuellen Shows! Du kannst nicht nur Sendungen eintragen, s

20.10.2020 drcomputer | Kategorie: PHP/ Web Radio
Newsmanager 2

Der Newsmanager 2 ist sehr Vielfältig und kann News schreiben, Newsletter versenden und RSS Feeds in einem erzeugen.

20.10.2020 Stephan_1972 | Kategorie: PHP/ News
 Alle PHP Scripte anzeigen

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