Hotel booking + SQL jak nadać ograniczenie związane z rezerwacją pokoi

0

Witam serdecznie,

Stworzyłem sobie stronę typu hotel booking wszystko działa dobrze rejestracja, logowanie, rezerwacja pokoi mam jednak jeden problem, który chciałbym rozwiązać a mianowicie nie potrafię ustawić ograniczenia pokoi aktualnie jest możliwość rezerwacji zarezerwowanego pokoju a wyjściowo chciałbym by nie dało się zarezerwować pokoju w którym aktualnie ktoś jest .. Pomożecie?
Pozdrawiam.

Rezerwacja:

<html>
<head>
<style type="text/css">
    #contenar{
        height: 100%;
        width: 100%;
 
    }
    #r{
        margin-top: 5%;
        margin-bottom: 5%;
        margin-right: 5%;
        margin-left: 5%;
        float: center;
        background-color:  #99CCFF;
 
    }
 
    </style>
 
 
 
</head>
 
<body>
<?php
include('include/db_con.php');
session_start();
if(isset($_POST['sub']))
{
$username=$_POST['username'];
$roomtype=$_POST['field_1'];
$startdate=$_POST['startdate'];
$enddate=$_POST['enddate'];
$room_nos=$_POST['room_nos'];
$amount=$_POST['roomprice'];
 
$checkroom= "select count(*) from roomdetail where room_type='".$roomtype."' ";
$check=mysql_query($checkroom) or die (mysql_error($con));
$roomcount=mysql_fetch_array($check);
 $checkcount=$roomcount[0];
if($checkcount>=4)
{
?> <script>alert("Sorry Rooms Are not Available :( please try another Option !!");</script>
<?php }
else{
$s1="INSERT INTO roomdetail (username,checkin_date,checkout_date,room_type,no_of_room,amount)VALUES('".$username."','".$startdate."','".$enddate."','".$roomtype."','".$room_nos."','".$amount."')";
mysql_query($s1) or die (mysql_error($con));
header("location:success.php");
}
}
?>
 
<div id="contenar">
 
    <div id="r">
    <form action="registration.php" method="POST">
    <h2 align="center" id="h"><u><i>Rezerwacja pokoju</i></u></h2>
    <h3> Witamy <?php session_start(); if(isset($_SESSION['username'])){ echo $_SESSION['username']; } ?> !!!</h3>
        <table >
 
          <tr>
            <td width="113">Data rozpoczęcia pobytu</td>
            <td width="215">
              <input name="startdate1" type="date"  value="<?php if(isset($_POST['startdate1'])){ echo $_POST['startdate1']; }?>" /></td>
          </tr>
          <tr>
            <td>Data zakończenia pobytu</td>
            <td>
              <input name="enddate1" type="date" value="<?php if(isset($_POST['enddate1'])){ echo $_POST['enddate1']; }?>" onchange='this.form.submit()' /></td>
          </tr>
 
       </table>
        </form>
        <form action="registration.php" method="POST">
        <table >
 
          <tr>
            <td width="113"></td>
            <td width="215">
              <input name="startdate" type="hidden" value=" <?php if(isset($_POST['startdate1'])){ echo $_POST['startdate1']; }?> " /></td>
          </tr>
          <tr>
            <td></td>
            <td><input name="username" type="hidden" value="<?php session_start(); if(isset($_SESSION['username'])){ echo $_SESSION['username']; } ?>"  />
              <input name="enddate" type="hidden" value=" <?php if(isset($_POST['enddate1'])){ echo $_POST['enddate1']; }?> "  /></td>
          </tr>
          <tr>
            <td>Typ pokoju </td>
            <td>
              <select class="text_select" id="field_1" name="field_1" >  
<option value="00">- Wybierz -</option>   
<?php if(isset($_POST['startdate1'])){
$paymentDate = $_POST['startdate1'];
$contractDateBegin = '2013-12-20';
$contractDateEnd ='2014-03-25';
 
if (($paymentDate >= $contractDateBegin) && ($paymentDate <= $contractDateEnd))
{
 $s2="select * from roomtype where room_seson ='high season' ";
$s3=mysql_query($s2);
}
else
{
$s2="select * from roomtype where room_seson='low season' ";
$s3=mysql_query($s2);
}
 
 
?>
<?php while($catdata=mysql_fetch_array($s3)) { ?>  <option value="<?php echo $catdata['room_price']; ?>"><?php echo $catdata['room_type']; ?></option>
           <?php } ?>
           <?php } ?>
           </select></td>
          </tr>
          <tr>
            <td>Cena za pokój</td>
            <td>
             <span id="a1"  ></span>$
           </td>
          </tr>
           <tr>
            <td>Liczba osób w pokoju</td>
            <td>
              <input name="guest" type="text " size="10"/></td>
          </tr>
          <tr>
            <td>Ilość pokoi </td>
            <td>
              <input name="room_nos" id="room_nos" type="text " size="10" onChange="gettotal1()" /></td>
          </tr>
          <tr>
            <td>Kwota do zapłaty</td>
            <td>
             <input type="text" name="roomprice" id="total1"  size="10px" readonly="" />
           </td>
          </tr>
 
          <tr>
            <td colspan="2" align="center">
            <input type="submit" name="sub" value="Rezerwuj/Zapłać" /></td>
            </tr>
 
       </table>
        </form>
 
        <script language="javascript" type="text/javascript">
function notEmpty(){
 
var e = document.getElementById("field_1");
var strUser = e.options[e.selectedIndex].value;
 var strUser=document.getElementById('a1').innerHTML=strUser;
 
 
 
 
}
notEmpty()
 
    document.getElementById("field_1").onchange = notEmpty;
 
 
   function gettotal1(){
      var gender1=document.getElementById('a1').innerHTML;
      var gender2=document.getElementById('room_nos').value;
      var gender3=parseFloat(gender1)* parseFloat(gender2);
 
      document.getElementById('total1').value=gender3;
 
   }
            </script>
 
 
    </div>
</div>
</body>
</html>
0

trzeba dodać jedną kolumnę która mówi o stanie pokoju, w selekcie dodać ograniczenie dla wartości dodanej kolumny i zmodyfikować kilka innych zapytań odnośnie dodawania pokoi etc. oraz metody mysql są przestarzałe należy korzystać z mysqli ponadto prawdopodobnie jestes narażony na sqlinjection przez to $checkroom= "select count(*) from roomdetail where room_type='".$roomtype."' "; i nie jest dobrym pomysłem wywalać na output komunikatów błędu mysql, przy odrobinie szczęścia można nawet poznać login hasło do bazy danych albo sobie ją dropnąć :D

0

Dzięki wielkie za pomoc i uwagi. Wiem o tym, że metody mysql są przestarzałe próbowałem zmienić na mysqli ale wszystko się "kićkało" chociaż wszędzie pozmieniałem na mysqli. Ogólnie to jest amatorka dopiero zaczynam się uczyć PHP gdy dokończę ten mały projekt chce zabrać się za OOP bo tutaj wszystko strukturalnie jest zrobione i w praktyce zauważyłem już że ciężej jest wprowadzić jakieś zmiany chociaż by kolor tła.
Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1