Aiuto con query "SELECT"

pinoshine

Utente Attivo
15 Set 2012
95
0
0
Ciao a tutti, sto mettendo a punto uno script per le prenotazioni ed ho un problema con associare le date di check.in & check-out con la tabella dei prezzi allego il codice dello script:
PHP:
<?php
	session_start();
	if(!isset($_GET['id'])){
		header("Location:index.php");
	}
	if(!isset($_SESSION['to'])||!isset($_SESSION['from'])){
		header("Location:index.php");
	}
	if($_SESSION['to']<=$_SESSION['from']){
		header("Location:index.php");
	}
	include "configuration.php";
	$con=mysql_connect($location,$username,$password);
	mysql_select_db($database_name);
	mysql_set_charset('utf8',$con);
	
	$query="DELETE * FROM booking WHERE expires<'".date("Y-m-d H:i:s")."'";
	mysql_query($query);
?>
<input type="hidden" name="facilitiesvalues" id="facilitiesvalues" value="<?php echo $valuesfield;?>">
		</div><BR><BR>
	</div>
	<div id="fields">
		<div id="roomsfields">
		<table width="100%">
			<tr style="font-weight:bold"><td><?php echo get_word($lang,"Tipo Camera")."</td><td>".get_word($lang,"Disponibilità")."</td><td>".get_word($lang,"Prezzo")."</td><td>".get_word($lang,"No di Camere")."</td>";
			$i=0;
			$roomsbooked=array();
			$ratestable=array();
			$query="SELECT * FROM camere WHERE idhotel='".$_GET['id']."'";
			$result=mysql_query($query);
			while($row=mysql_fetch_array($result)){
				$roomsbooked[$row['camera']]=0;
				for($i=0;$i<8;$i++)
					$ratestable[$row['camera']][$i]=0;
			}
			$query="SELECT * FROM prezzi WHERE idhotel='".$_GET['id']."'";
			$result=mysql_query($query);
			while($row=mysql_fetch_array($result)){
				$ratestable[$row['camera']][0]=$row['default_price'];
				$ratestable[$row['camera']][1]=$row['price_monday'];
				$ratestable[$row['camera']][2]=$row['price_tuesday'];
				$ratestable[$row['camera']][3]=$row['price_wednesday'];
				$ratestable[$row['camera']][4]=$row['price_thursday'];
				$ratestable[$row['camera']][5]=$row['price_friday'];
				$ratestable[$row['camera']][6]=$row['price_saturday'];
				$ratestable[$row['camera']][7]=$row['price_sunday'];
			}
			$from=array();
			$tok=strtok($_SESSION['from'],"-");
			while($tok){
				$from[]=$tok;
				$tok=strtok("-");
			}
			$to=array();
			$tok=strtok($_SESSION['to'],"-");
			while($tok){
				$to[]=$tok;
				$tok=strtok("-");
			}
			$query="SELECT * FROM booking WHERE idhotel='".$_GET['id']."' AND 
			((check_in<='".$from[2]."-".$from[1]."-".$from[0]."' AND check_out>='".$from[2]."-".$from[1]."-".$from[0]."') OR
			(check_in>='".$from[2]."-".$from[1]."-".$from[0]."' AND check_out<='".$to[2]."-".$to[1]."-".$to[0]."') OR
			(check_in<='".$from[2]."-".$from[1]."-".$from[0]."' AND check_out>='".$to[2]."-".$to[1]."-".$to[0]."') OR
			(check_in<'".$to[2]."-".$to[1]."-".$to[0]."' AND check_out>='".$to[2]."-".$to[1]."-".$to[0]."'))";
			$result=mysql_query($query);
			while($row=mysql_fetch_array($result)){
					$roomsbooked[$row['camera']]++;
			}
			while(($row=mysql_fetch_array($roomsresult))!=NULL){
				$roomsleft=$row['quantita']-$roomsbooked[$row['camera']];
				echo "<tr><td>".$row['camera']."</td><td>".$roomsleft."</td>";
				
				$price=0;
				$_SESSION['totaldays']=0;
				$date=strtotime($from[2]."-".$from[1]."-".$from[0]);
				while($date<strtotime($to[2]."-".$to[1]."-".$to[0])){
					$_SESSION['totaldays']++;
					$dayofweek=date("N",$date);
					if($ratestable[$row['camera']][$dayofweek]!=0)
						$price+=$ratestable[$row['camera']][$dayofweek];
					else
						$price+=$ratestable[$row['camera']][0];
					$date+=86400;
				}
				echo "<td><div id=\"price".$row['camera']."\">".$price."</td></div>";
				?>
				<form name="roomsform" id="roomsform" method="POST" action="bookroom.php?roomtype=<?php echo $row['room_type']."&hid=".$_GET['hid']; ?>">
				<?php
				if($roomsleft<=0)
					$disabled="disabled";
				else
					$disabled="";
				echo "<td><select name=\"numberofrooms".$row['camera']."\"  style=\"width:40px\" ".$disabled." id=\"numberofrooms".$row['camera']."\" onchange=\"getPrice(this.value,".$price.",'".$row['camera']."');\">";
				$_SESSION['price'.$row['camera']]=$price;
				for($i=1;$i<=$roomsleft;$i++){
					echo "<option value=\"".$i."\">".$i."</option>";
				}
				echo "</select></td>";
				
				echo "<td><input type=\"submit\" ".$disabled." name=\"submit".$row['camera']."\" id=\"submit".$row['camera']."\" value=\"".get_word($lang,"Book!")."\"></td>";
				echo "</tr>";
				echo "</form>";
			}
			?>

Questa invece e' la tabella prezzi:
Codice:
CREATE TABLE `prezzi` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `idhotel` int(11) NOT NULL,
  `inizio` date NOT NULL,
  `fine` date NOT NULL,
  `camera` varchar(255) NOT NULL,
  `default_price` int(4) NOT NULL DEFAULT '0',
  `price_monday` int(4) DEFAULT '0',
  `price_tuesday` int(4) DEFAULT '0',
  `price_wednesday` int(4) DEFAULT '0',
  `price_thursday` int(4) DEFAULT '0',
  `price_friday` int(4) DEFAULT '0',
  `price_saturday` int(4) DEFAULT '0',
  `price_sunday` int(4) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `idhotel` (`idhotel`),
  KEY `camera` (`camera`)
) ;
in pratica lo script recupera i prezzi di base settimanali e li associa ai vari giorni della settimana, per ogni lunedì associa `price_monday`e via dicendo, io vorre ad esempio aggiungere dei prezzi diversi un offerta per il fine settimana che va ad esempio da sabato 13 aprile a domenica 14 aprile, ma non so combinarlo nella query "SELECT * FROM PREZI....." mi date una dritta ragazzi?
Grazie
 
Ultima modifica:

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Ciao vedo che non ti ha risposto ancora nessuno, io non sono un grande esperto però posso provare a suggerirti una soluzione. Perchè non utilizzi array_combine?
Secondo me potresti associare il recupero di questi risultati
PHP:
$query="SELECT * FROM prezzi WHERE idhotel='".$_GET['id']."'";
            $result=mysql_query($query);
            while($row=mysql_fetch_array($result)){
                $ratestable[$row['camera']][0]=$row['default_price'];
                $ratestable[$row['camera']][1]=$row['price_monday'];
                $ratestable[$row['camera']][2]=$row['price_tuesday'];
                $ratestable[$row['camera']][3]=$row['price_wednesday'];
                $ratestable[$row['camera']][4]=$row['price_thursday'];
                $ratestable[$row['camera']][5]=$row['price_friday'];
                $ratestable[$row['camera']][6]=$row['price_saturday'];
                $ratestable[$row['camera']][7]=$row['price_sunday'];
            }

Alle offerte che vorresti fare. Ovviamente potrei aver detto una marea di castronerie, però ho tentato xD
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
Ciao grazie per la risposta, ho inserito un prezzo diverso 80.00 euro pei giorni 12 e 13 aprile (quelli di base son 100.00) ed ho provato il suggerimento che mi hai dato ma purtroppo non mi da nessun risultato, o meglio mi da la possibilità di prenotare e scegliere quante camere voglio ma senza nessun prezzo, ho fatto cosi':
PHP:
$query="SELECT * FROM prezzi WHERE idhotel='".$_GET['id']."'";
            $result=mysql_query($query);while($row=array_combine($result)){
				$ratestable[$row['camera']][0]=$row['default_price'];
				$ratestable[$row['camera']][1]=$row['price_monday'];
				$ratestable[$row['camera']][2]=$row['price_tuesday'];
				$ratestable[$row['camera']][3]=$row['price_wednesday'];
				$ratestable[$row['camera']][4]=$row['price_thursday'];
				$ratestable[$row['camera']][5]=$row['price_friday'];
				$ratestable[$row['camera']][6]=$row['price_saturday'];
				$ratestable[$row['camera']][7]=$row['price_sunday'];
			}

Sicuramente ho sbagliato qualcosa, l'array_combine l'ho messo nel posto giusto? io non sono troppo pratico con php per fare questo booking mi sto affidando ad un libro ed array_combine non lo leggo da nessuna parte, poi i due prezi diversi me li legge come due camere invece della stessa camera!!
Grazie
 
Ultima modifica:

pinoshine

Utente Attivo
15 Set 2012
95
0
0
Ho fatto questa prova, inserito nella tabella prezzi due differenti prezzi, dal 9 al 10 aprile 30.00 euro e dal 11 al 12 aprile 50.00 euro, poi modificato la query in questo modo:
PHP:
$query='SELECT * FROM prezzi p JOIN camere cp ON p.camera = cp.camera WHERE p.idhotel = ' . $_GET['id'] . '  AND p.inizio <= NOW() AND p.fine >= NOW()';

Ma purtroppo non mi funziona!! :( la query mi restiusce come valore 0 (zero) e non mi fa il calcolo in base all'inizio e fine.
Boh sto impazzendo!!
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Mi è venuta un'idea. I prezzi li lasci uguali e potresti fare una tabella SCONTI dove inserisci data_inizio e data_fine con la percentuale di sconto che vuoi che si effettui sul prezzo giornaliero di base.
Allora quando vai a prendere i valori dei giorni, controlli se la data scelta dall'utente corrisponde ai giorni con lo sconto e prima di stampare il prezzo applichi lo sconto.
 

pinoshine

Utente Attivo
15 Set 2012
95
0
0
ciao grazie per la risposta, quindi dovrei fare uno sconto sulla tariffa base, come idea non e' male pero' ogni volta dovrei calcolare lo sconto e cosi' diventa molto macchinoso, devo provare adesso vedo se riesco a scrivere il codice perche' fino ad ora non ho mai fatto una query del genere se tu sai come fare mi risparmieresti un bel po' di tempo.
grazie
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Basta prendere il prezzi di ogni giorno e decrementarli di quella percentuale di sconto (se c'è).
Fai la cosa giorno per giorno e sommi tutti i prezzi 'finali'.
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Aiuto con le query MS Access 2
D aiuto con query PHP 1
S aiuto con le query PHP 0
S aiuto con query MySQL 10
A Aiuto con Funzione/Query PHP 3
L Aiuto con DataGridView Visual Basic 1
K Aiuto con file audio in html HTML e CSS 1
G Aiuto con htaccess e rewriterule PHP 0
M Aiuto con inserimento immagini WordPress 6
G Aiuto HTML, collegamento con un bottone a una <div> di un' altra pagna HTML e CSS 5
motleyrulez Aiuto con un ciclo PHP 0
maicol07 Python - Tkinter - Aiuto con pulsanti e tuple Programmazione 0
L [Javascript] aiuto non riesco a inviare in get dal server web locale su altervista con httpRequest Javascript 0
N Mi serve aiuto con "Snake". C/C++ 1
F ciao, sono ferro e ho bisogno di aiuto per problemi con la mail di alice.it Presentati al Forum 1
M Aiuto: problema con il mio TP-Link range extender Reti LAN e Wireless 0
L [HTML] Aiuto con immagini random HTML e CSS 1
S PHP: Aiuto con upload immagini che si auto tuotano PHP 24
A scambio lavoro per aiuto con android Sviluppo app per Android 0
I Form/aree di testo con input da lista di nomi!Chiedo aiuto!! HTML e CSS 3
M Aiuto con script di ricerca video youtube data api v3 Javascript 1
I attributo con IF aiuto PHP 3
ecosito Aiuto con la traduzione in italiano per capire come installare questo JavaScript jQuery 0
F Aiuto: impossibile la mappatura di un'immagine con Dreamweaver CC2015 HTML e CSS 8
J Aiuto per localstorage con jquery/js/json Javascript 4
Marco_88 Aiuto con istruzione INSERT Database 8
M Aiuto su come procedere con un ciclo foreach PHP 4
R Redirect 301 con htaccess non funziona. Aiuto! PHP 1
I database con visual studio 2012 aiuto Database 0
L Aiuto con l'html di una pagina web HTML e CSS 0
V Aiuto con swipe e DB Sviluppo app per Android 2
N Aiuto con html nascondere i media HTML e CSS 4
T Aiuto con script PHP PHP 0
N ciao a tutti ho bisogno di aiuto con l'estensione mysqli?? MySQL 0
I Aiuto uso Nivo Slider con javascript jQuery 2
L problema con la funzione header!!! AIUTO! PHP 24
S Aiuto con PHP! PHP 4
D Aiuto Ajax da PHP con codifica json Ajax 0
K AIUTO con Apache WEBDAV E MOD_DAV Joomla 0
D aiuto con pag di login in php PHP 1
S [RISOLTO]aiuto, non riesco afar funzionare il camp odi ricerca per un DB con PHP PHP 5
P Aiuto con onclick Javascript 2
W Aiuto per menù fatto con immagini e relativo sottomenù HTML e CSS 2
D Chiedo aiuto con questo codice PHP 0
L Sito con mamp AIUTO PHP 12
M Aiuto con questo script PHP 21
D Aiuto con Ajax e pagine incluse nei DIV Ajax 1
L verifica mail in db con jquery e ajax. Aiuto jQuery 9
P Aiuto con Prestashop CMS (Content Management System) 3
Z Aiuto con l'input PHP 0

Discussioni simili