Salve a tutti, spero possiate essermi di aiuto, ho realizzato questo script che data una tabella mysql come questa
dovrebbe dare i giorni totali e il prezzo totale di soggiorno alle utenze
purtroppo non funziona dandomi un errore di questo tipo:
Fatal error: Call to a member function Query_select() on a non-object in /web/htdocs/www.sito.it/home/php/base.php on line 23
vi posto il codice
// file connetti.php mi connetto ed imposto la funzione
$dbhost = 'ip';
$dbusername = '********';
$dbpasswd = '********';
$database_name = '********';
$table = 'roomprices';
$connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd")
or die ("Couldn't connect to server.");
$db = mysql_select_db("$database_name", $connection) or die("Couldn't select database.");
function PreparaSql($idhotel='', $room='', $DataArrivo='', $DataPartenza='', $IDprezzo='') {
$sql = "declare @idhotel as int;";
$sql.= "declare @room as int;";
$sql.= "declare @data_arrivo as datetime;";
$sql.= "declare @data_partenza as datetime;";
$sql.= "set @idhotel = " . $idhotel . ";";
$sql.= "set @room = " . $room . ";";
$sql.= "set @data_arrivo = '" . $DataArrivo . "';";
$sql.= "set @data_partenza = '" . $DataPartenza . "';";
$sql.= "select sum(A.TotalDays) as TotalDays, sum(A.TotalCost) as TotalCost from (";
$sql.= "select";
$sql.= " 1 as tipo";
$sql.= ", price_start";
$sql.= ", price_end";
$sql.= ", @data_arrivo as arrivo";
$sql.= ", @data_partenza as partenza";
$sql.= ", CASE WHEN @data_partenza <= price_end";
$sql.= " THEN DATEDIFF(@data_partenza, @data_arrivo)";
$sql.= " ELSE DATEDIFF(price_end, @data_arrivo) + 1";
$sql.= " END as TotalDays";
$sql.= ", pernottamento";
$sql.= ", pernottamento * (";
$sql.= " CASE WHEN @data_partenza <= price_end";
$sql.= " THEN DATEDIFF(@data_partenza, @data_arrivo)";
$sql.= " ELSE DATEDIFF(price_end, @data_arrivo) + 1";
$sql.= " END ) as TotalCost";
$sql.= " from roomprices";
$sql.= " where idhotel=@idhotel and room=@room";
$sql.= " and @data_arrivo>=price_start and @data_arrivo<=price_end";
$sql.= " union ";
$sql.= "select";
$sql.= " 2 as tipo";
$sql.= ", price_start";
$sql.= ", price_end";
$sql.= ", @data_arrivo as arrivo";
$sql.= ", @data_partenza as partenza";
$sql.= ", DATEDIFF(@data_partenza, price_start) as TotalDays";
$sql.= ", pernottamento";
$sql.= ", pernottamento * ( DATEDIFF(@data_partenza, price_start) ) as TotalCost";
$sql.= " from roomprices";
$sql.= " where idhotel=@idhotel and room=@room";
$sql.= " and @data_partenza>=price_start and @data_partenza<=price_end and @data_arrivo<price_start";
$sql.= " union ";
$sql.= "select";
$sql.= " 3 as tipo";
$sql.= ", price_start";
$sql.= ", price_end";
$sql.= ", @data_arrivo as arrivo";
$sql.= ", @data_partenza as partenza";
$sql.= ", 1+DATEDIFF(price_end, price_start) as TotalDays";
$sql.= ", pernottamento";
$sql.= ", pernottamento * ( 1+DATEDIFF(price_end, price_start) ) as TotalCost";
$sql.= " from roomprices";
$sql.= " where idhotel=@idhotel and room=@room";
$sql.= " and price_start>@data_arrivo and price_end<@data_partenza";
$sql.= ") A";
return str_replace("pernottamento", $IDprezzo, $sql);
}
include "connetti.php";
// file base.php - stampo i dati
// dati di esempio
$idhotel = 1;
$room = 1;
$DataArrivo = '2014/04/04';
$DataPartenza= '2014/05/17';
$IDprezzo = 'pernottamento';
// query
$sql = PreparaSql($idhotel, $room, $DataArrivo, $DataPartenza, $IDprezzo);
$data = $db->Query_select($sql);
$dbresult = count($data);
if ($dbresult) {
$TotalDays = $data[0][0];
$TotalCost = $data[0][1]; }
print "Hotel : " . $idhotel . "<br />
Camera : " . $room . "<br />
Pensione : " . $IDprezzo . "<br />
Arrivo : " . $DataArrivo . "<br />
Partenza : " . $DataPartenza . "<br />
TotalDays : " . $TotalDays . "<br />
TotalCost : " . $TotalCost . "<br />";