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 27-07-2007, 17:26
hawk_22
 Newbie
Links : Onlinestatus : hawk_22 ist offline
Registriert seit: Jun 2006
Beiträge: 20
hawk_22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Tages-Preise für verschiedene Saison-Zeiträume mit PHP bestimmen

Hallo zusammen,

ich programmiere bereits seit geraumer Zeit an einem Formular zur Mietwagen-Buchung. Ziel ist es, dem Kunden nach dem Übermitteln von Start- und Enddatum eine Preisauskunft auf der nächsten Formularseite auszugeben.

Der Preis ist dabei u.a. von der Anzahl der Miettage aber auch von 3 verschiedenen Saison-Zeiträumen abhängig.

Die Anzahl der Tage habe ich über die mktime Funktion bestimmt.

Es ließe sich auch noch recht einfach bestimmen in welcher Saison der Start- und Endtermin liegt. Was mir aber Kopfzebrechen bereitet ist, wie ich für jeden einzelnen Tag des gesamten Mietzeitraums bestimme, in welcher Saison er liegt. Ziel soll ja ein tagesgenaue Abrechnung sein, d.h. wenn jemand insgesamt 10 Tage bucht und 5 Tage davon in Saison1 und 5 in Saison2 liegen, soll der Gesamtpreis ((5*PreisSaison1)+(5*PreisSaison2)) ergeben.

Glück im Unglück ist, dass die Saison nicht vom Jahr abhängt, sondern nur von Tag und Monat. Beispielsweise Sasion1: 1. Mai - 30. September (Jahr ist egal).

Ich habe bereits einiges mit timestamp und date() versucht, allerdings hänge ich momentan fest.

Daher meine Frage, ob es jemanden gibt der ein ähnliches Problem schon einmal gelöst hat bzw. eine bereits vorhandene Funktion zur Lösung kennt. Meine Recherchen waren leider nicht erfolgreich.

Bin für jede Anregung dankbar.
Mit Zitat antworten
  #2 (permalink)  
Alt 27-07-2007, 17:30
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zeig mal, was du bist jetzt hast.
Mit Zitat antworten
  #3 (permalink)  
Alt 27-07-2007, 17:32
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Tages-Preise für verschiedene Saison-Zeiträume mit PHP bestimmen

Zitat:
Original geschrieben von hawk_22
d.h. wenn jemand insgesamt 10 Tage bucht und 5 Tage davon in Saison1 und 5 in Saison2 liegen, soll der Gesamtpreis ((5*PreisSaison1)+(5*PreisSaison2)) ergeben.
da hast du dir die antwort doch schon selbst gegeben.

leg eine db an mit den saisons.
startdatum (date), enddatum (date), preis (int)

dann musst du die einzelnen tage des mietzeitraumes durchlaufen und dir den preis holen.

select preis from db where miettag between startdatum and enddatum;

preis+= mysql_result;

also ma so grob gesprochen
__________________
**********
arkos
**********
Mit Zitat antworten
  #4 (permalink)  
Alt 27-07-2007, 17:33
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: Tages-Preise für verschiedene Saison-Zeiträume mit PHP bestimmen

Ermittle, in welchem Interval das Startdatum liegt; ermittle, wie viele Tage es von dort bis zum Intervalende oder bis zum Enddatum sind (je nachdem, was früher kommt).
Ermittle, ob das Enddatum im nächsten Interval liegt; wenn ja ermittle, wie vielen Tagen das entspricht.
Ermittle, wie viele Tage es vom Beginn des letzten Intervals bis zum Enddatum sind.

Wo man sinnvollerweise schon aussteigen kann aus der Berechnung, sollte ja wohl hoffentlich von selbst ersichtlich sein.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 27-07-2007, 17:34
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: Re: Tages-Preise für verschiedene Saison-Zeiträume mit PHP bestimmen

Zitat:
Original geschrieben von arkos
dann musst du die einzelnen tage des mietzeitraumes durchlaufen
Das wäre die unperformantere Brachialmethode für Grobmathematiker.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #6 (permalink)  
Alt 27-07-2007, 17:39
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Re: Re: Tages-Preise für verschiedene Saison-Zeiträume mit PHP bestimmen

Zitat:
Original geschrieben von wahsaga
Das wäre die unperformantere Brachialmethode für Grobmathematiker.
ging mir auch durch den kopf, als ich deinen beitrag gelesen habe. mag wohl sein, dass ich freitags ab 17.oo uhr zum grobmathematiker werde

(auch wenn du recht hast, sollte eine mietwagen-firma nicht den benutzer-run haben, dass die performance-schwäche bös sichtbar wäre... )
__________________
**********
arkos
**********
Mit Zitat antworten
  #7 (permalink)  
Alt 27-07-2007, 17:47
hawk_22
 Newbie
Links : Onlinestatus : hawk_22 ist offline
Registriert seit: Jun 2006
Beiträge: 20
hawk_22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das ging ja fix...

nur zur info, das ganze läuft ohne sql-db. überprüfung erfolgt nur über php.

mit bestimmung der anzahl tage im monat habe ich auch schon angefangen. bin dabei aber steckengeblieben.

frage mich, ob es sinnvoller wäre die tage über einen timestamp zu ermitteln. allerdings müsste man das dann ja für mehrere jahre im voraus anlegen. auch nicht so schön.

ich hoffe noch, dass es eine funktion zur bestimmung eines mietzeitraums bereits gibt. bevor ich mich noch weiter auf eigene faust verzettel.

vielleicht ist freitag abend auch die luft raus. und die erleuchtung kommt übers we.
Mit Zitat antworten
  #8 (permalink)  
Alt 27-07-2007, 17:51
hawk_22
 Newbie
Links : Onlinestatus : hawk_22 ist offline
Registriert seit: Jun 2006
Beiträge: 20
hawk_22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@arkos

das mit dem sql between wäre sehr nützlich. gibts aber bei php meines wissens nach so nicht.

da müsste ich wohl über for schleifen und >< Operatoren agieren. Und bei jeder Übereinstimmung den Tageszähler um 1 erhöhen...davor drücke ich mich zugegebenermaßen grad noch.

gibt es nicht auch in php eine möglichkeit einen Zeitraum zwischen einem end- und einem startdatum eindeutig zu bestimmen, ohne die ganze monats-tage-bestimmereie, schaltjahrprobleme usw.
Mit Zitat antworten
  #9 (permalink)  
Alt 27-07-2007, 17:54
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

timestamp wäre auch ne möglichkeit. zumindest kannst du da wesentlich einfach abfragen, ob ein tag dazwischen liegt.

zu deinem saison-"problem"... automatisier das

man kann kein auto in der vergangenheit anlegen. wenn also das enddatum einer saison in der vergangenheit liegt, häng es "hinten" wieder ran. es soll doch sicher nicht möglich sein, ein auto ein jahr im voraus zu buchen, oder??
__________________
**********
arkos
**********
Mit Zitat antworten
  #10 (permalink)  
Alt 27-07-2007, 17:58
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von hawk_22

gibt es nicht auch in php eine möglichkeit einen Zeitraum zwischen einem end- und einem startdatum eindeutig zu bestimmen, ohne die ganze monats-tage-bestimmereie, schaltjahrprobleme usw.
meines wissens nach tatsächlich nur mit nem timestamp und kleiner größer vergleich - was ja in dem sinne nichts anderes ist.

ha!!! BLITZIDEE!!! wenn die saisons immer fix (bsp saison 1 von 1.1. bis 31.3) sind, dann sche**ß doch aufs jahr. hinterleg da immer 2007 in der berechnung. also timestamp von xx.yy.2007 für die gebuchten tage sowie für die saisons.

du bräuchstest dann nur noch eine zweite config für schaltjahre...
__________________
**********
arkos
**********
Mit Zitat antworten
  #11 (permalink)  
Alt 27-07-2007, 18:29
hawk_22
 Newbie
Links : Onlinestatus : hawk_22 ist offline
Registriert seit: Jun 2006
Beiträge: 20
hawk_22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das ist in der tat ne super idee. danke. das werde ich ausprobieren.

bezieht der timestamp nicht sogar automatisch auch schaltjahre mit ein. liefert doch soweit ich weiß sekundengenaue ergebnisse zwischen 1970 und 2038 zurück? oder hab ich das was falsch verstanden, mit deinem hinweis auf ne 2. config?
Mit Zitat antworten
  #12 (permalink)  
Alt 27-07-2007, 18:36
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

richtig, der timestamp beachtet das.

ABER... wenn du immer mit 2007 (is doch kein schaltjahr, oder) als fiktives jahr arbeitest, die BUCHUNG aber in einem schaltjahr (und dann noch ende februar) getätigt wird, kannst du ziemlich schnell ein falsches ergebnis einen falschen preis erhalten.

also:

wenn buchung im schaltjahr = fiktives schaltjahr zur ermittlung des timestamps

wenn buchung im normjahr = fiktives normjahr zur ermittlung des timestamps
__________________
**********
arkos
**********
Mit Zitat antworten
  #13 (permalink)  
Alt 27-07-2007, 19:55
hawk_22
 Newbie
Links : Onlinestatus : hawk_22 ist offline
Registriert seit: Jun 2006
Beiträge: 20
hawk_22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich habe jetzt die sasion start- und endzeitpunkte in timestamps festgelegt. dann prüfe ich ob der timestamp des eingegebenen startdatums und endatums im bereich der saisonzeiträume liegen und lasse mir jeweils den entsprechenden preis ausgeben.

das lüppt soweit auch.

wollte das erstmal soweit testen. was jetzt natürlich noch nicht berücksichtigt wird, ist wenn ein gebuchter zeitraum in verschiedene sasion-zeiträume fällt.

da noch ne idee?

wenn ich sowohl für die saison-timestamps als auch für die eingegebenen daten das jahr 2007 verwende, bekomme ich auch noch fehler beim jahreswechsel. z.B Input: 31.12.2007 bis 10.01.2008

in jedem fall hab ich noch was vergessen.

zum schaltjahr-problem: dein vorschlag klingt logisch, weißt du spontan auch wie man überprüfen kann ob ein schaltjahr eins ist (vielleicht: if Anzahl Tage im Februar=29 )

PS: 2007 ist kein Schaltjahr, aber 2008 schon.
Mit Zitat antworten
  #14 (permalink)  
Alt 28-07-2007, 10:52
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zum schaltjahr ermitteln gibts fertige schnipsel (google: php schaltjahr )

PHP-Code:
<?php
   
function schaltjahr($jahr) {
      if(
$jahr 400 == 0) {
         return 
"true";
      }
      elseif(
$jahr == && $jahr 100 != 0) {
         return 
"true";
      }
      else {
         return 
"false";
      }
   }
   echo 
"2000: ".schaltjahr(2000);
   echo 
"<BR>";
   echo 
"2003: ".schaltjahr(2003);
?>

zum zeitraum über verschiedene saisons.
erstmal würde ich folgendes schauen. sind timestamp anfang und timestamp ende in der gleichen saison? wenn nein: dann den timestamp vom nächsten saisonanfang nehmen, und schauen, wieviel tage deines zeitraumes in dem sind. dann das gleiche mit der folgesaison u.s.w.

zum jahreswechsel: du kannst ja verdammt schnell abfragen, ob das end-jahr != startjahr ist. dem entsprechend generierst du für das folgejahr zusätzliche saison-timestamps für die sitzung (aber auch da die schaltjahr abfrage nicht vergessen).

wat schlaueres fällt mir nach einem kaffee um diese zeit nicht ein hoffe es klingt dennoch einigermaßen schlau - ansonsten möge wahsaga schimpfen
__________________
**********
arkos
**********

Geändert von arkos (28-07-2007 um 10:55 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 28-07-2007, 14:38
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

schaltjahre: date() + "L"
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

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

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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