Aus dem Notforum:
Zitat Zitat von webbie
Moin @ all!

Ich habe eine verflixt knifflige Aufgabe zu lösen. Und zwar muss ich für eine bestimmte Anzahl Tage, die wechselnd vorgegeben wird einen Preis berechnen. Das Problem ist leider die Saisonabhängigkeit, siehe hier:

01.11.2004-20.12.2004 29 €
20.12.2004-05.01.2005 39 €
06.01.2005-25.03.2005 29 €
26.03.2005-30.06.2005 39 €
01.07.2005-04.09.2005 59 €
05.09.2004-31.10.2005 39 €
01.11.2005-19.12.2005 29 €
19.12.2005-31.12.2005 39 €

Mit diesen Zeitangaben und Tagespreisen muss ich übergreifend Gesamtkosten berechnen,

also z.B.
17.11.2004 - 25.11.2004= 8 Tage x 29 Euro.

aber:
17.12.2004 - 25.12.2004=3 Tage x 29 Euro + 5 Tage x 39 Euro.

Hat jemand eine Idee, wie ich das Script am Besten aufziehe oder eine Beispiellösung parat? Mir ist eigentlich egal wie es gelöst wird, am liebsten wäre mir Javascript, da weiß ich mir selbst noch gut zu helfen. PHP kann ich nicht so dolle, das wär ein Problem für mich das umzusetzen. Fertige Lösungen sind natürlich aber Willkommen auch mit mySQL-Unterstützung.

Einen Ansatz habe ich gefunden, weiß nur nicht genau wie ich das umsetzen kann. Ich stelle mir die Rechenoperation etwa so vor:

- Alle Daten werden in den entsprechenden Tag des Jahres umgerechnet. Das kann ich machen.
- Dann muss verglichen werden wie die Abrechnungsperiode liegt.
Ist der Beginn größer als Tag1 (Saisonbeginn1) und größer als Tag 2 (Saisonbeginn2) aber kleiner als Tag3 (Saisonbeginn3), dann gilt gilt der entsprechende Preis. der Saison 2 für den Beginn der Abrechnung.

- Danach muss der Endtermin genauso gecheckt werden.

- Sind beide Daten innerhalb der gleichen Saison dann nur Anzahl Tage mal Preis.

- Liegen Anfang und Ende der Berechnung in unterschiedlichen Saisonzeiten, dann [Differenz des Anfangsdatums zum Ende der ersten Saison mal Preis] plus [Anfangsdatum der darauffolgenden Saison bis Enddatum mal Preis]


Kompliziert? Find ich auch... Vielleicht steigt jemand durch was ich meine und kann mir mit etwas Code aushelfen...

Greetz
webbie
Zitat Zitat von Ronald
Also verstanden habe ich es schon und ich muß für zwei meiner HPs ein gleiches Problem lösen.

Bislang habe ich nur eine gedankliche Lösung, villeicht können wir die ja gemeinsam weiter ausbauen:

1. Berechnet werden die Übernachtungen, d.h. niedrigster Tag (math.) ist der Anreisetag, höchster Tag ist der Tag vor dem Abreisetag.

2. Die Tarife werden in einen (Text?)-Datenbank abgelegt und zwar immer mit dem (echt)-Datum des jeweils neuen Tarifs und logischerweise dem Betrag, format = "datumswert|betrag".
3. Die Taifdatenbank wir in ein zwei Arrays eingelesen. (Wechseldatum und Betrag)

4. nun werden 2 Schleifen geschachtelt:

Code:
$dat = "tarife.txt";
$tarife = file($dat);
$anz_tarife = sizeof($zeilen);

for &#40;$x=0; $x<$anz_tarife; $x++&#41;  list &#40;$t_datum&#91;$x&#93;, $t_preis&#91;$x&#93;&#41; = split&#40;"\\|", chop&#40;$zeilen&#91;$x&#93;&#41;&#41;; 

$einTag = 86400;
$ATag = $Ankunft;
$ETag = $Abreise;
 
for &#40;$i=ATag; $i<$ETAG; $i = $i+$einTag&#41;
     &#123;
      for &#40;$t=0; $t<$anz_tarife; $t++&#41;
           &#123;
            if &#40;$i => $t_datum&#91;$t&#93;  && $i < $t_datum&#91;$t+1&#93;&#41;  $preis = $preis + $t_preis&#91;$t&#93;;
            &#125;
       &#125;
So müßte es eigentlich klappen, habs allerdings jetzt nur mal eben aus dem Kopf geschrieben und noch nicht getestet.

G.a.d.M.

Ronald
Ich werd es mal antesten...
Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!