• Home
  • Forum
  • Fare Web
  • PHP

Problemi di calcolo tra due date

  • Creatore Discussione Creatore Discussione pinoshine
  • Data di inizio Data di inizio 9 Mag 2014
Prec.
  • 1
  • 2
Primo Prec. 2 di 2

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 10 Mag 2014
  • #21
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.606
54
48
TN
  • 10 Mag 2014
  • #22
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
 
P

pinoshine

Utente Attivo
15 Set 2012
95
0
0
  • 10 Mag 2014
  • #23
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: 10 Mag 2014
P

pinoshine

Utente Attivo
15 Set 2012
95
0
0
  • 11 Mag 2014
  • #24
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
 
P

pinoshine

Utente Attivo
15 Set 2012
95
0
0
  • 11 Mag 2014
  • #25
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.606
54
48
TN
  • 11 Mag 2014
  • #26
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
Clicca per allargare...
la data end è minore della data start?
 
P

pinoshine

Utente Attivo
15 Set 2012
95
0
0
  • 11 Mag 2014
  • #27
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.606
54
48
TN
  • 11 Mag 2014
  • #28
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: 11 Mag 2014
P

pinoshine

Utente Attivo
15 Set 2012
95
0
0
  • 11 Mag 2014
  • #29
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


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: 11 Mag 2014

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 12 Mag 2014
  • #30
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
 
P

pinoshine

Utente Attivo
15 Set 2012
95
0
0
  • 12 Mag 2014
  • #31
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.606
54
48
TN
  • 12 Mag 2014
  • #32
Con molta calma e pazienza rileggiti tutto ciò che hai scritto
al massimo riposta lo script intero modificato
 
P

pinoshine

Utente Attivo
15 Set 2012
95
0
0
  • 12 Mag 2014
  • #33
ok grazie Criric!!! adesso cerco il problema se proprio non riesco posto tutta la pagina
 
P

pinoshine

Utente Attivo
15 Set 2012
95
0
0
  • 13 Mag 2014
  • #34
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.606
54
48
TN
  • 13 Mag 2014
  • #35
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'";
 
P

pinoshine

Utente Attivo
15 Set 2012
95
0
0
  • 13 Mag 2014
  • #36
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
 
P

pinoshine

Utente Attivo
15 Set 2012
95
0
0
  • 13 Mag 2014
  • #37
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
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 13 Mag 2014
  • #38
vuol dire che non gli arriva il dato dal form
room = ''
Clicca per allargare...
controlla bene il name e il value che hai dato al campo del form
 
Prec.
  • 1
  • 2
Primo Prec. 2 di 2
Devi accedere o registrarti per poter rispondere.

Discussioni simili

P
problemi calcolo prezzo
  • pinoshine
  • 9 Mag 2013
  • PHP
Risposte
19
Visite
3K
PHP 4 Giu 2013
pinoshine
P
A
Invision problemi di connessioni e sicurezza
  • Azimut
  • 9 Dic 2024
  • CMS (Content Management System)
Risposte
1
Visite
194
CMS (Content Management System) 9 Dic 2024
Azimut
A
I
problemi con thunderbird
  • ilprincipiante
  • 9 Lug 2024
  • Posta Elettronica
Risposte
0
Visite
2K
Posta Elettronica 9 Lug 2024
ilprincipiante
I
N
php problemi a visualizzare video
  • nik13
  • 8 Ott 2023
  • PHP
Risposte
3
Visite
2K
PHP 11 Ott 2023
WmbertSea
T
problemi con dati menu a tendina
  • tregafabio
  • 22 Giu 2023
  • HTML e CSS
Risposte
2
Visite
2K
HTML e CSS 22 Giu 2023
tregafabio
T
T
problemi di connessione
  • twogate
  • 4 Nov 2022
  • MySQL
Risposte
2
Visite
2K
MySQL 1 Dic 2022
twogate
T
M
Upload immagine con javascript problemi con FormData()
  • MBlackmore
  • 6 Ott 2021
  • Javascript
Risposte
1
Visite
1K
Javascript 6 Ott 2021
MBlackmore
M
F
Problemi visualizzazione mappa Android studio
  • Francesco75
  • 9 Lug 2021
  • Sviluppo app per Android
Risposte
0
Visite
2K
Sviluppo app per Android 9 Lug 2021
Francesco75
F
S
  • Bloccata
Problemi Javascript + Aruba
  • sak89
  • 6 Lug 2021
  • Javascript
Risposte
2
Visite
2K
Javascript 6 Lug 2021
Max 1
A
Problemi con move_uploaded_file
  • antonio corizzo
  • 22 Giu 2021
  • PHP
Risposte
7
Visite
2K
PHP 27 Giu 2021
antonio corizzo
A
M
  • Bloccata
Problemi con la stampa dei valori in php
  • Mollichina
  • 21 Mag 2021
  • PHP
Risposte
1
Visite
1K
PHP 21 Mag 2021
Max 1
L
  • Bloccata
Problemi con il login
  • Laura2002
  • 18 Mag 2021
  • PHP
Risposte
2
Visite
1K
PHP 18 Mag 2021
Max 1
L
  • Bloccata
Problemi form Pagina php
  • Laura2002
  • 3 Mag 2021
  • HTML e CSS
Risposte
3
Visite
2K
HTML e CSS 18 Mag 2021
Max 1
R
Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql
  • rob466
  • 27 Mar 2021
  • MySQL
Risposte
1
Visite
1K
MySQL 30 Mar 2021
rob466
R
Z
problemi con foreach insert into
  • Zhilang
  • 6 Feb 2021
  • PHP
Risposte
10
Visite
2K
PHP 7 Feb 2021
illiterate2020
I
B
javascript per problemi con pdf e Safari
  • bibliofila
  • 7 Gen 2021
  • Javascript
Risposte
0
Visite
3K
Javascript 7 Gen 2021
bibliofila
B
N
Problemi kit videosorveglianza
  • nutrio
  • 25 Nov 2020
  • IP Cam e Videosorveglianza
Risposte
0
Visite
2K
IP Cam e Videosorveglianza 25 Nov 2020
nutrio
N
M
  • Bloccata
Problemi con creazione maschere
  • Mondo
  • 18 Nov 2020
  • Presentati al Forum
Risposte
1
Visite
909
Presentati al Forum 18 Nov 2020
Max 1
M
Problemi con query a più tabelle
  • Max61
  • 24 Ago 2020
  • PHP
Risposte
3
Visite
1K
PHP 25 Ago 2020
Hormus
H
R
Problemi anomalo insermento in db
  • rino2002
  • 28 Mag 2020
  • PHP
Risposte
9
Visite
3K
PHP 1 Giu 2020
rino2002
R
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?