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:
vi posto il codicecodice: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
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); }codice: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 />";


Rispondi quotando
