Scusate ma non ho inserito il titolo. Chiedo scusa!!!
ecco il titolo da inserire:
Funzione di calcolo prezzo di una camera in un range di date
Ciao a tutti, sto cercando di modificare una funzione di calcolo presa da uno script php realizzato con CodeIgniter che mi dia il risultato del prezzo totale di una camera in relazione ad una data di arrivo ed una di partenza.
Ho due tabelle:
La prima "room" che ha dei prezzi base settimanali ( price_mon,price_tue,price_wed,price_thu,price_fri,price_sat,price_sun )
La seconda "room_custom_price" che ha prezzi personalizzati base alla data ( certain_date, price )
La funzione dovrebbe calcolare primail prezzo base e poi controllare se ci sono prezzi personalizzati per poi fornire il totale.
Questa è la funzione ma non riesco a capire come mai non mi fornisce il totale:
Spero qualcuno possa aiutarmi. Grazie!
ecco il titolo da inserire:
Funzione di calcolo prezzo di una camera in un range di date
Ciao a tutti, sto cercando di modificare una funzione di calcolo presa da uno script php realizzato con CodeIgniter che mi dia il risultato del prezzo totale di una camera in relazione ad una data di arrivo ed una di partenza.
Ho due tabelle:
La prima "room" che ha dei prezzi base settimanali ( price_mon,price_tue,price_wed,price_thu,price_fri,price_sat,price_sun )
La seconda "room_custom_price" che ha prezzi personalizzati base alla data ( certain_date, price )
La funzione dovrebbe calcolare primail prezzo base e poi controllare se ci sono prezzi personalizzati per poi fornire il totale.
Questa è la funzione ma non riesco a capire come mai non mi fornisce il totale:
Codice:
function calcProcess($roomId, $startDate, $endDate) {
$startDate = new DateTime($startDate->date('Y-m-d'));
$result['totalNight'] = 0;
$result['totalPrice'] = 0;
$statement = " SELECT
price_sun AS d0,
price_mon AS d1,
price_tue AS d2,
price_wed AS d3,
price_thu AS d4,
price_fri AS d5,
price_sat AS d6
FROM
room
WHERE
id = $roomId ";
$statement->execute(array(
':id' => $roomId
));
$defaultPrice = $statement->fetchAssociativeArray();
$statement->close();
// fine
// calcolo custom price
$statement = "
SELECT
certain_date,
price
FROM
room_custom_price
WHERE
room_id = $roomId AND
(certain_date BETWEEN :startDate AND :endDate)";
$statement->execute(array(
':roomId' => $roomId,
':startDate' => $startDate->date('Y-m-d'),
':endDate' => $endDate->date('Y-m-d')
));
$rows = $statement->fetchAllAssociative();
$statement->close();
$customPriceArray = array();
foreach ($rows as $row) {
$customPriceArray[$row['certain_date']] = $row['price'];
}
// fine
while ($startDate->format('Y-m-d') != $endDate->date('Y-m-d')) {
$result['totalNight']++;
if (array_key_exists($startDate->format('Y-m-d'), $customPriceArray)) {
$result['totalPrice'] += $customPriceArray[$startDate->date('Y-m-d')];
}
else {
$result['totalPrice'] += $defaultPrice['d'.$startDate->date('w')];
}
$startDate->modify('+1 day');
}
return $result;
}
var_dump($result);
Spero qualcuno possa aiutarmi. Grazie!