Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    preventivo calcolo prezzo per hotel

    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:
    codice:
    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
    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 />";

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    mysql_pconnect() non restituisce un oggetto, quindi $db non è un oggetto, è un link alla connessione, non puoi usare su questo l'operatore ->

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    mysql_pconnect() non restituisce un oggetto, quindi $db non è un oggetto, è un link alla connessione, non puoi usare su questo l'operatore ->
    quindi come posso correggere lo script?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Imparando come si interagisce col database.
    Ho una guida a riguardo linkata in firma.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.