1
Hallo,
ich habe die Preise für eine Ferienwohnung in einer Tabelle
abpreisdatum
bisbreisdatum
preis
Die entsprechenden Zeiträume hole ich mir mit
Ich will jetzt die Preise für die Übernachtungen berechnen.
So solls dann aussehen:
12.4.2011 - 16.4.2011 : 4 Nächte a €60,00 = €240,00
16.4.2011 - 22.4.2011 : 6 Nächte a €70,00 = €420,00
Gesamt €660,00
folgendenOriginal Code habe ich als Ausgangspunkt gefunden:
Ich habe den für mich umgebaut in
Ich bekomme aber die Fehlermeldung
Invalid argument supplied for foreach() in /var/www/clientsxxx/preisesql/test.php on line 130
Gesamtpreis für den Zeitraum 2011-08-08 bis 2011-09-19: 0
ich habe die Preise für eine Ferienwohnung in einer Tabelle
abpreisdatum
bisbreisdatum
preis
Die entsprechenden Zeiträume hole ich mir mit
$result = mysql_query("SELECT abpreisdatu, bispreisdatum, preis FROM preise where bispreisdatum >= '".$startdate."' and abpreisdatum <= '".$endedate."' order by abpreisdatum" )
Ich will jetzt die Preise für die Übernachtungen berechnen.
So solls dann aussehen:
12.4.2011 - 16.4.2011 : 4 Nächte a €60,00 = €240,00
16.4.2011 - 22.4.2011 : 6 Nächte a €70,00 = €420,00
Gesamt €660,00
folgendenOriginal Code habe ich als Ausgangspunkt gefunden:
$total=0;
$dayOffset=0;
$bookingStart='Anfangsdatum der Belegung';
$bookingEnd='Enddatum der Belegung';
/* Sei $possiblePrice ein Array/Listenobjekt mit Objekten,
die die folgenden Eigenschaften haben:
validFrom: Startdatum der Rate
validUntil: Enddatum der Rate
price: Preis in diesem Zeitraum
Die Liste selbst sei aufsteigend sortiert nach "validFrom"
*/
foreach($possiblePrices as $currPrice)
{
if(($currPrice->validFrom>=$bookingStart && $currPrice->validFrom <=$bookingEnd)
|| ($currPrice->validUntil>=$bookingStart && $currPrice->validUntil <=$bookingEnd))
{
// Anzahl Tage mit der aktuellen Rate ermitteln:
$currPeriodDays=(max(differenceInDays($bookingStart,$currPrice->validUntil),0)
-max(differenceInDays($bookingStart,$currPrice->validFrom),0)
-max(differenceInDays($bookingEnd,$currPrice->validUntil),0));
// Startdatum der aktuellen Buchungsperiode ermitteln
$currPeriodStart=dateAddDays($bookingStart,$dayOffset);
// Zähler mit den schon bepreisten Tagen d. Buchung erhöhen:
$dayOffset+=$currDays;
// Enddatum der aktuellen Buchungsperiode ermitteln:
$currPeriodEnd=dateAddDays($bookingStart,$dayOffset);
// Preis=Anz. Tage * akt. Rate
$currPeriodPrice=$currPeriodDays*$currPrice->price;
// Gesamtwert aufaddieren:
$total+=$currPeriodPrice;
// Ausgabe:
echo $currPeriodStart,' - ',$currPeriodEnd,' : ',$currPeriodDays,' Nächte a €',$currPrice->price,' = €',$currPeriodPrice,"<br />\n";
}
}
echo 'Gesamtpreis für den Zeitraum ',$bookingStart,' bis ',$bookingEnd,': ',$total;
Ich habe den für mich umgebaut in
$total=0;
$dayOffset=0;
$bookingStart= $startdate ;
$bookingEnd= $endedate ;
/* Sei $possiblePrice ein Array/Listenobjekt mit Objekten,
die die folgenden Eigenschaften haben:
abpreisdatum: Startdatum der Rate
bispreisdatum: Enddatum der Rate
preis: Preis in diesem Zeitraum
Die Liste selbst sei aufsteigend sortiert nach "abpreisdatum"
*/
foreach($preis as $currPrice)
{
//Hier kommt jetzt die Fehlermeldung
if(($currPrice->abpreisdatum>=$bookingStart && $currPrice->abpreisdatum <=$bookingEnd)
|| ($currPrice->bispreisdatum>=$bookingStart && $currPrice->bispreisdatum <=$bookingEnd))
{
// Anzahl Tage mit der aktuellen Rate ermitteln:
$currPeriodDays=(max(differenceInDays($bookingStart,$currPrice->bispreisdatum),0)
-max(differenceInDays($bookingStart,$currPrice->abpreisdatum),0)
-max(differenceInDays($bookingEnd,$currPrice->bispreisdatum),0));
// Startdatum der aktuellen Buchungsperiode ermitteln
$currPeriodStart=dateAddDays($bookingStart,$dayOffset);
// Zähler mit den schon bepreisten Tagen d. Buchung erhöhen:
$dayOffset+=$currDays;
// Enddatum der aktuellen Buchungsperiode ermitteln:
$currPeriodEnd=dateAddDays($bookingStart,$dayOffset);
// Preis=Anz. Tage * akt. Rate
$currPeriodPrice=$currPeriodDays*$currPrice->preis;
// Gesamtwert aufaddieren:
$total+=$currPeriodPrice;
// Ausgabe:
echo $currPeriodStart,' - ',$currPeriodEnd,' : ',$currPeriodDays,' Nächte a €',$currPrice->preis,' = €',$currPeriodPrice,"<br />\n";
}
}
echo 'Gesamtpreis für den Zeitraum ',$bookingStart,' bis ',$bookingEnd,': ',$total;
Ich bekomme aber die Fehlermeldung
Invalid argument supplied for foreach() in /var/www/clientsxxx/preisesql/test.php on line 130
Gesamtpreis für den Zeitraum 2011-08-08 bis 2011-09-19: 0