Allora ho fatto tutto come mi hai indicato. Le query da sole funzionano correttamente ma se le inserisco nella funzione il risultato è sempre NULL. Ho modificato anche tutti i parametri date e room e non credo ci siano ancora errori.
Puoi testarla anche tu? Grazie!
Puoi testarla anche tu? Grazie!
PHP:
$hostname = "localhost";
$pass = "PASSWORD";
$muser = "USER";
$db ="DB";
$mysqli = @new mysqli($hostname, $muser, $pass, $db);
if( mysqli_connect_errno())
{
die(mysqli_connect_error());
}
$room="1";
$start_date="2019-08-26"; // data di arrivo
$end_date="2019-08-30"; // data di partenza
function get_diff_Date($dt1,$dt2){
$start_date=new DateTime($dt1);
$end_date=new DateTime($dt2);
$diff=$data_out->diff($start_date);
$create_date=[];
for ($i=1;$i<=$diff->days;$i++) {
$start_date->add(new DateInterval('P1D'));
$create_date[]=
[
'date'=>$start_date->format('d/m/Y'),
'day'=>$start_date->format('w'),
'label_day'=>$start_date->format('l')
];
}
return $create_date;
}
function find_sconto(){
/*
'sconto'=>0,
//percentuale o fisso (fixed)
'type'=>'percentage',
'skip_if_0'=>TRUE
/*/
$model_return=['sconto'=>0,'type'=>'percentage','ship_0'=>TRUE];
return $model_return;
}
function cal_price_($room,$start_date,$end_date){
$date_diff=get_diff_Date($start_date,$end_date);
$model_result=
[
'operation'=>
[
'plus'=>[
'custom'=>0,
'normal'=>0
],
'minus'=>find_sconto()
],
'total'=>0,
'per_night'=>0
];
$query=$mysqli->query('SELECT * FROM room WHERE id = '.$room);
$data=json_decode(json_encode($query->fetch_all(MYSQLI_ASSOC)));
//print_r($data);
$query=$mysqli->query('SELECT * FROM room_custom_price WHERE (DATE(certain_date) BETWEEN "'.$start_date.'" AND "'.$end_date.'")');
$data_custom=json_decode(json_encode($query->fetch_all(MYSQLI_ASSOC)));
//print_r($data_custom);
$map=['price_sun','price_mon','price_tue','price_wed','price_thu','price_fri','price_sat'];
if(!empty($data_custom)){
//non ci sono prezzi personalizzati
foreach ($data_custom as $k=>$items){
$model_result['operation']['plus']['custom']+=$items->price;
}
}
foreach ($date_diff as $k=>$v){
foreach ($data as $jey_q=>$value_q){
$day=$map[$v['day']];
$model_result['operation']['plus']['normal']+=$value_q->$day;
}
}
foreach ($model_result['operation']['plus'] as $k=>$v){
$model_result['total']+=$v;
}
$model_result['per_night']=$model_result['total']/count($date_diff);
return $model_result;
}
var_dump($model_result);