Problemi di calcolo tra due date

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Non hai formattato le date come ti avevo detto,non hai tolto le parentesi tonde dal between e il GROUP BY non capisco a cosa ti serve
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
per calcolare la differenza tra le due date puoi fare cosi
PHP:
$dataarrivo = "2014-05-05";
$date_end = "2014-05-08";

$dal = new DateTime($dataarrivo);
$al = new DateTime($date_end);
$intervallo = $dal->diff($al);

$giorni = $intervallo->d;

$query = "SELECT idhotel, room, price, ($giorni * price) as total
                          FROM rooms 
                          WHERE '$dataarrivo' BETWEEN data_start AND data_end";
ma devi avere la versione di php maggiore o pari alla 5.3.0

Quando fai l'echo della query deve restituirti questo
Codice:
SELECT idhotel, room, price, (3 * price) as total FROM rooms WHERE '2014-05-05' BETWEEN data_start AND data_end
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
Ciao criric, ti ringraio di cuore x l'impegno che ci stai mettendo!!! :) allora ho fatto come mi hai suggerito ed e' la query mi stampa questo:
Codice:
SELECT idhotel, room, price, (3 * price) as total FROM rooms WHERE '2014-05-05' BETWEEN data_start AND data_end
ed e' effettivamente come dici tu poi ho scritto per stampare il prezzo:
PHP:
			$result=mysql_query($query);
			$prezzo=mysql_fetch_array($query);
			while($row=mysql_fetch_array($result)){
		        echo $prezzo['total'];				
			}
ma non mi calcola il prezzo dei giorni.
Grazie
 
Ultima modifica:

pinoshine

Utente Attivo
15 Set 2012
95
0
0
ho risolto il problema adesso la query funziona, ho cosi' cambiato:
PHP:
$from = $_GET['from'];
            $to = $_GET['to'];
            $hotel_id = $_GET['hid'];
			


$dal = new DateTime($from);
$al = new DateTime($to);
$intervallo = $al->diff($dal);

$giorni = $intervallo->d;

$query="SELECT hotel_id, room_type, default_price, ($giorni * default_price) as total
                          FROM rooms 
                          WHERE '$from' BETWEEN '$from' AND '$to'
GROUP BY 
    hotel_id, room_type";
adesso pero' ho un'altro problema, nella tabella rooms, ho messo dal 10 al 20 50,00 euro e dal 21 al 30 100 euro se effettuo una ricerca dal 23 al 28 maggio (5 giorni) invece di uscire 500 euro mi da 1250, sinceramente non ho capito che calcolo fa
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
allora Criric fortunatamente sei gentile ad aiutarmi e scusami se insisto ma vorrei risolvere il problema, ho corretto il tutto (che casino che sto combinando :) ) la query funziona ma non mi da il giusto risultato
PHP:
    $from = $_POST['from'];
            $to = $_POST['to'];
            $hotel_id = $_POST['hid'];
			

$dal = new DateTime($from);
$al = new DateTime($to);
$intervallo = $al->diff($dal);

$giorni = 1;

$query="SELECT hotel_id, room_type, default_price, ($giorni * default_price) as total
                          FROM rooms 
                          WHERE '$from' BETWEEN '$from' AND '$to'
GROUP BY 
    hotel_id, room_type";
		   
			$result=mysql_query($query);
			
			while($row=mysql_fetch_array($result)){
				$ratestable[$row['room_type']][0]=$row['total'];
e questa e' la tabella rooms:
+---------+------+-------+-------+----+--------------+--------------
| hote_id | room_type | default_price | data_start |data_end |
+---------+------+-------+-------------+--------------+--------------
| 1 | Twin | 50 | 2014-05-10 | 2014-05-20
| 1 | Twin | 100 | 2014-05-20 | 2014-05-10
+---------+------+-------+-------+----+--------------+--------------

facendo una ricerca ad es. dal 12 al 13 la query come sopra l'ho scritta mi dcosi' come risultato 50 invece se tolgo
PHP:
GROUP BY 
    hotel_id, room_type
mi da come risultato 100 cioe o mi calcola il prezzo solo sulla prima rigo o solo sulla seconda. mi sapresti dire come risolvere?
Grazie
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
questa riga non è corretta
PHP:
WHERE '$from' BETWEEN '$from' AND '$to'
devi propio mettere i nomi dei campi
PHP:
WHERE '$from' BETWEEN data_start AND data_end

Nel secondo record che hai postato qualcosa non mi torna,
| 1 | Twin | 100 | 2014-05-20 | 2014-05-10
la data end è minore della data start?
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
Ho corretto l'inserimento nella tabella camere ed ho cambiato la query come mi hai suggerito ma non capisco perchè mi esce sempre come risultato 0 ho provato anche in questo modo:
PHP:
WHERE data_start <= DATE(".$from.") AND data_end >= DATE(".$to.")
ma il risultato nn è cambiato, sempre zero!!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Fai questa prova:
crea un file php di test nuovo e incollaci questo codice
PHP:
<?php

$sql = new mysqli("localhost", "root", "", "database");

$dataarrivo = "2014-05-15";
$date_end = "2014-05-18";
$hotel_id = 1;

$dal = new DateTime($dataarrivo);
$al = new DateTime($date_end);
$intervallo = $dal->diff($al);

$giorni = $intervallo->d;

$query = "SELECT idhotel, room, price, ($giorni * price) as total
                          FROM rooms 
                          WHERE '$dataarrivo' BETWEEN data_start AND data_end  &&
                                id = $hotel_id";
echo $query . "<br/>";
$result = $sql->query($query);
if ($result) {
    $row = $result->fetch_assoc();
    echo $result->num_rows . " Prezzo camera " . $row['total'] . " &euro;<br/>";
} else {
    echo "Errore query : " . $query . "<br/>" . $sql->error;
}
?>
posta quello che ti stampa
 
Ultima modifica:

pinoshine

Utente Attivo
15 Set 2012
95
0
0
Ciao Criric ho fatto come mi hai detto questo e' il messaggio della query:
Codice:
SELECT idhotel, room, price, (3 * price) as total FROM rooms WHERE '2014-05-15' BETWEEN data_start AND data_end && id = 1
Errore query : SELECT idhotel, room, price, (3 * price) as total FROM rooms WHERE '2014-05-15' BETWEEN data_start AND data_end && id = 1

ti posto anche una foto della tabella rooms giusto per
Schermata 2014-05-11 a 21.32.45.png

e riposto anche la tabella magari e' settata male
Codice:
CREATE TABLE `rooms` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `idhotel` int(11) DEFAULT NULL,
  `room` varchar(11) DEFAULT NULL,
  `data_start` date DEFAULT NULL,
  `data_end` date DEFAULT NULL,
  `price` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  ;
grazie
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ho dimenticato di dirti che qui devi inserire i tuoi parametri di connessione
PHP:
$sql = new mysqli("localhost", "root", "", "database");
in piu nella query avevo sbagliato a scrivere l'idhotel
PHP:
 <?php

$sql = new mysqli("tuo host", "tuo user", "tua password", "tuo database");

$dataarrivo = "2014-05-15";
$date_end = "2014-05-18";
$hotel_id = 1;

$dal = new DateTime($dataarrivo);
$al = new DateTime($date_end);
$intervallo = $dal->diff($al);

$giorni = $intervallo->d;

$query = "SELECT idhotel, room, price, ($giorni * price) as total
                          FROM rooms 
                          WHERE '$dataarrivo' BETWEEN data_start AND data_end  &&
                                idhotel = $hotel_id";
echo $query . "<br/>";
$result = $sql->query($query);
if ($result) {
    $row = $result->fetch_assoc();
    echo $result->num_rows . " Prezzo camera " . $row['total'] . " &euro;<br/>";
} else {
    echo "Errore query : " . $query . "<br/>" . $sql->error;
}
?>
deve funzionare
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
ops!! scusa avevo dimenticato d'inserire le mie credenziali!!! ecco cosa esce :
Codice:
SELECT idhotel, room, price, (3 * price) as total FROM rooms WHERE '2014-05-15' BETWEEN data_start AND data_end && idhotel = 1
1 Prezzo camera 150 €
funzione alla grande adesso pero' vorrei capire perche' non mi funziona nella pagina del mio script
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Con molta calma e pazienza rileggiti tutto ciò che hai scritto
al massimo riposta lo script intero modificato
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
Ciao Criric,
ho notato che se aggiungo piu' camere allo stesso hotel con le stesse date mi fa una somma totale, ad esempio, ho una camera doppia dal 15 al 20 maggio a 50 euro ed una camea tripla dal 15 al 20 maggio a 100 euro.
se faccio una ricerca dal 16 al 17 maggio una notte mi da come risultato 150 euro cioe' la somma delle due camere invece di due risultati separati.
Grazie
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Il valore lo inserisci nel campo room ?
Le scelta ti arriva sempre dal form in post?
dovra aggiugnere una condizione alla query
PHP:
$tipocamera = $_POST["tipocamera"];

$query = "SELECT idhotel, room, price, ($giorni * price) as total
                          FROM rooms 
                          WHERE '$dataarrivo' BETWEEN data_start AND data_end  &&
                                idhotel = $hotel_id && room = '$tipocamera'";
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
strano ma mi da come risultato 0
Codice:
SELECT idhotel, room, price, (2 * price) as total FROM rooms WHERE '2014-05-15' BETWEEN data_start AND data_end && idhotel = 2 && room = ''
0 Prezzo camera €
sembra che non associa la camera al prezzo
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
mi di questo problema
Codice:
Notice: Undefined index: room in\index.php on line 8
SELECT idhotel, room, price, (2 * price) as total FROM rooms WHERE '2014-05-15' BETWEEN data_start AND data_end && idhotel = 2 && room = ''
0 Prezzo camera €

PHP:
$tipocamera = $_POST["room"];
il problema sta nel tipologia di camera che non la trova
 
Discussioni simili
Autore Titolo Forum Risposte Data
P problemi calcolo prezzo PHP 19
N php problemi a visualizzare video PHP 3
T problemi con dati menu a tendina HTML e CSS 2
T problemi di connessione MySQL 2
M Upload immagine con javascript problemi con FormData() Javascript 1
F Problemi visualizzazione mappa Android studio Sviluppo app per Android 0
S Problemi Javascript + Aruba Javascript 2
A Problemi con move_uploaded_file PHP 7
M Problemi con la stampa dei valori in php PHP 1
L Problemi con il login PHP 2
L Problemi form Pagina php HTML e CSS 3
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
Z problemi con foreach insert into PHP 10
B javascript per problemi con pdf e Safari Javascript 0
N Problemi kit videosorveglianza IP Cam e Videosorveglianza 0
M Problemi con creazione maschere Presentati al Forum 1
M Problemi con query a più tabelle PHP 3
R Problemi anomalo insermento in db PHP 9
S Problemi delle funzioni eliminate con PHP e MySQL PHP 4
S Problemi di un principiante PHP 3
M Problemi con blog Grav CMS (Content Management System) 0
F Problemi di visualizzazione di un sito su più browser WordPress 0
S Problemi di visualizzazione form contatti sito web HTML e CSS 2
S incoerenza di stampa. problemi con il magenta Photoshop 3
A problemi con paypall Java 1
A Problemi di accesso da remoto a Ipcam IP Cam e Videosorveglianza 5
michele81 [WordPress] problemi plug meteo api key WordPress 4
E Problemi in registrazione telecamere Dahua IP Cam e Videosorveglianza 6
S Problemi con modulo upload video php (help!) PHP 0
felino [Windows 8.1] Problemi con connessione WiFi Windows e Software 0
M [PHP] Problemi su inserimento array nel db PHP 7
E [PHP] problemi nuova riga con fwrite su piattaforma android PHP 5
M [PHP] Problemi di salvataggio su campo calcolato PHP 0
O [HTML] problemi con la regola "background-attachment: fixed" in EDGE HTML e CSS 0
M [PHP] Problemi con query unione PHP 11
M [PHP] Problemi con select PHP 6
Spown [WordPress] Problemi visualizzazione su più browser + voci menu in movimento WordPress 1
ANDREA20 [HTML] problemi con il footer HTML e CSS 1
D [MS Access] problemi con inserimento campo in una maschera MS Access 6
M [PHP] Problemi con il riconoscimento login. PHP 21
A [WordPress] problemi con xampp WordPress 2
M Problemi con database Apache/2.4.37 (Win32) OpenSSL/1.1.1a PHP/7.3.1 PHP 6
P Problemi comunicazioni Comunicazioni dallo Staff 8
G I problemi non vengono solo per nuocere Presentati al Forum 0
A Problemi Wi-Fi Fastweb Reti LAN e Wireless 4
C [WordPress] Url vulnerability e problemi sito da mobile WordPress 0
S [PHP] problemi con le sessioni PHP 3
B Problemi accesso Instagram Smartphone e tablet 1
T [PHP] problemi con il browser PHP 0
M [Flash] Problemi conversione formato swf Flash 20

Discussioni simili