php - How to stop user from sending request for the same time slot? -


i have page in php user can click on time slot , book room. issue have found suppose user1 books room 4 6. user2 comes & request room 3.30 5. takes request should not allowed. request sent admin , saved in database i.e mysql.

the worry if admin rejects request of user1 user2 should allowed. if admin accepts user1 request user2 should given error message or stop booking of same time slot. confused how stop this.

<?php session_start(); if(isset($_get[ 'selecteddate'])) { $selecteddate=$_get[ 'selecteddate']; } else { $selecteddate=date( "y-m-d"); } ?> <html>  <head>     <title>mra</title>     <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.3/themes/smoothness/jquery-ui.css">     <style>         #heading {             text-align: right;             font-size: 25px;             float: right;             margin: 50px 20px;         }          a:hover {             color: #bebebc;         }          {             color: black;         }          #img {             margin: 10px 10px;         }          #td {             border-radius: 15px;             border-style: dotted solid;         }          .name-error,         .meeting-error {             color: red;             margin: 0 10px;         }          #plan {             position: fixed;             left: 50%;             margin-left: -239px;             top: 50%;             margin-top: -150px;             z-index: 10;             background-color: #fff;             padding: 10px;         }          #plan-bg {             width: 100%;             height: 100%;             position: fixed;             background: #000;             opacity: 0.8;             top: 0;             display: none;             z-index: 5;         }          .close {             position: absolute;             top: 5px;             right: 10px;             cursor: pointer;         }          .close:hover {             text-decoration: underline;         }          #datepicker {             width: 40%;             float: left;         }          .calender-date {             padding: 0 10px;         }          #time-slot-msg,         #alert-msg {             position: fixed;             top: 50%;             left: 50%;             background: #fff;             font-size: 25px;             padding: 10px 20px;             margin: -50px 0 0 -184.5px;             display: none;             z-index: 10;             border-radius: 5px;         }          #time-slot-msg p,         #alert-msg p {             font-weight: bold;         }          #time-slot-msg .close,         #alert-msg .close {             font-size: 15px;             right: 20px;         }     </style>     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>     <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>     <script>         $(document).ready(function() {             var $index;             var systemdate = new date();             $('.meeting-error').hide();             $(".meeting-timetable tr > td + td").click(function(e) {                 if ($(this).hasclass('active')) {                     e.preventdefault();                     alert('the selected time slot has been assigned');                 } else {                     var $thisval = $(this).prevall('td:first-child').text();                     var hour = $thisval.substr(0, 2);                     var min = $thisval.substr(3, 3);                     var d = new date("<?php print $selecteddate; ?>");                     var n = d.getfullyear();                     var m = d.getdate();                     var k = d.getmonth();                     var userdate = new date(n, k, m, hour, min, 0);                     if (systemdate > userdate) {                         alert("select time slot greater current time");                         return;                     }                     $index = $(this).index();                     // start time.                     $(".start-time option").each(function() {                         if (($(this).text() === $thisval)) {                             $(this).attr('selected', 'selected');                             $(this).prevall().attr('disabled', 'disabled');                         }                     });                     // change end time.                     $(".end-time option").each(function() {                         if (($(this).text() === $thisval)) {                             $(this).next().attr('selected', 'selected');                             $(this).attr('disabled', 'disabled');                             $(this).prevall().attr('disabled', 'disabled');                         }                     });                     // date input select.                     var $date = $('.meeting-timetable tr:first-child th').text();                     var dateformat = $.datepicker.formatdate('yy-mm-dd', new date($date));                     $('.date').val(dateformat);                     $('#meeting').val('');                     $('.meeting-error').hide();                     // show dialog box.                     var _cellindex = $(this)[0].cellindex;                     var _rowindex = $(this).closest('tr')[0].sectionrowindex;                     var total_row = $('.meeting-timetable tr').length - 1;                     if (_rowindex == total_row && _cellindex == 1) {                         alert('you cannot select time slot');                     } else $('#plan, #plan-bg').fadein();                 }             });             // on submit click change background color.             $('.submit-button').click(function(e) {                 e.preventdefault();                 var selectedvalue = $(".start-time option:selected").text(),                     selectedendvalue = $(".end-time option:selected").text(),                     $name = $('input[name=txtname]').val();                 if ($('#meeting').val()) {                     $(".meeting-timetable tr > td").each(function() {                         if ($(this).text() === selectedvalue) {                             $(this).parent('tr').addclass('active');                         }                         if ($(this).text() === selectedendvalue) {                             var $parent = $(this).parent('tr').prevuntil('tr.active').addclass('active');                         }                         // prev td selected.                         $($parent).each(function() {});                     });                 }                 // form validation.                 if ($('#meeting').val() === '') {                     $('.meeting-error').fadein();                 }                 // grab form values                 var formdata = {                     'txtrname': $('input[name=txtrname]').val(),                     'txtname': $('input[name=txtname]').val(),                     'txtpurpose': $('input[name=txtpurpose]').val(),                     'attendee': $('select[name=attendee]').val(),                     'txtdate': $('input[name=txtdate]').val(),                     'btime': $('select[name=btime]').val(),                     'etime': $('select[name=etime]').val()                 };                 if ($('#meeting').val().trim()) {                     // ajax form submit.                     $.ajax({                         type: "post",                         url: "insertkarma.php",                         data: formdata,                         success: function() {                             $('#alert-msg').fadein();                             $('#plan').fadeout();                         }                     });                 } else {                     alert('please enter purpose of meeting');                 }             });             // on focus function             $('#meeting').focus(function() {                 $('.meeting-error').fadeout();             }).blur(function() {                 if (!$(this).val()) {                     $('.meeting-error').fadein();                 }             });             $(".close").click(function() {                 $('.pop-up').fadeout();             });             // adding calender.             $("#datepicker").datepicker({                 mindate: 0,                 dateformat: "yy-mm-dd",                 onselect: function(date) {                     var url = "karma.php?selecteddate=" + date;                     window.location.assign(url);                 }             });         });     </script> </head>  <body background="a6.jpg">     <a href="homepage.php"><img id="img" src="hitechlogo.jpg" width="150px" height="100px"></a>     <h1 align="center" style="position:absolute;top:30px; left:600px;">karma<br> (3-seater)</h1>     <div id="heading"><a href="homepage.php" style="text-decoration:none;">home</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         <?php echo ucwords($_session[ 'usr_name']); ?>         </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="logout.php" style="text-decoration:none;">logout</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="usermanual.pdf" target="_blank" style="text-decoration:none;">help</a>     </div>     <hr width="100%">     <?php $host="localhost" ;  $username="root" ;  $password="" ; $db_name="testing" ;  $conn=mysqli_connect($host,$username,$password) or die( "cannot connect"); mysqli_select_db($conn,$db_name); $i=0 ; $dateentry="select `starttime` , `status_id` , `name` , floor(( time_to_sec(`endtime`)-time_to_sec(`starttime`) )/1800) testing `details` `date` = '$selecteddate' order starttime" ; if ($result=mysqli_query($conn,$dateentry)) { while ($obj=mysqli_fetch_object($result)) { $starttime[$i]=$ obj->starttime; $status[$i] = $obj->status_id; $name[$i] = $obj->name; $testing[$i] = $obj->testing; $i++; } } mysqli_close($conn); ?>     <table border="1" align="right" width="60%" style="border:black;">         <tr>             <td id="td" colspan="3" align="center">                 <h1>click book time slot</h1></td>         </tr>         <tr>             <td bgcolor="red" align="center" id="td">booked</td>             <td id="td" align="center" bgcolor="orange">requested</td>             <td align="center" id="td">available</td>             </td>         </tr>         <tr>             <td id="td" colspan="3">| <a href="karma.php"> today </a> |</td>         </tr>     </table>     <table class="meeting-timetable" border="1" align="right" width="60%" style="border:black;">         <tr>             <th id="td" colspan="2" class="calender-date" align="center">                 <?php print $selecteddate; ?>             </th>         </tr>         <tr>             <td id="08:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; " width="10%">08:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="08:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">08:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="09:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">09:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="09:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">09:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="10:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">10:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="10:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">10:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="11:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">11:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="11:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">11:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="12:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">12:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="12:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">12:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="13:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">13:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="13:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">13:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="14:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">14:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="14:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">14:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="15:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">15:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="15:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">15:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="16:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">16:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="16:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">16:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="17:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">17:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="17:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">17:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="18:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">18:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="18:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">18:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="19:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">19:00</td>             <td id="td"></td>         </tr>         <tr>             <td id="19:30:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">19:30</td>             <td id="td"></td>         </tr>         <tr>             <td id="20:00:00" align="center" style="border-radius: 15px;border-style: dotted solid; ">20:00</td>             <td id="td" class="showalert"></td>         </tr>     </table>     <div id="plan" class="pop-up" style="display :none ">         <span class="close">close</span>         <form align="center" method="post" id="inform">             <h1 align="center">meeting details</h1>             <table>                 <tr>                     <td><b>room : </td><td><input type="text" name="txtrname" value="karma" readonly></td></tr>      <tr><td><b>name :</td><td><input type="text" name="txtname" readonly value="<?php echo ucwords($_session['usr_name']);  ?>"   ></td></tr>      <tr><td><b>purpose of meeting :</td><td> <input id="meeting" type="text" name="txtpurpose"><span class="meeting-error">enter purpose of meeting</span></td></tr>      <tr><td><b>no. of attendee :</td><td><select name="attendee"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select></td></tr>      <tr><td><b>date :</td><td> <input class="date" type="text" name="txtdate" readonly value="yyyy/mm/dd"></td></tr>      <tr><td><b>time : </td><td>start time <select class="start-time" name="btime">      <option value="08:00:00">08:00</option>      <option value="08:30:00">08:30</option>      <option value="09:00:00">09:00</option>      <option value="09:30:00">09:30</option>      <option value="10:00:00">10:00</option>      <option value="10:30:00">10:30</option>      <option value="11:00:00">11:00</option>      <option value="11:30:00">11:30</option>      <option value="12:00:00">12:00</option>      <option value="12:30:00">12:30</option>      <option value="13:00:00">13:00</option>      <option value="13:30:00">13:30</option>      <option value="14:00:00">14:00</option>      <option value="14:30:00">14:30</option>      <option value="15:00:00">15:00</option>      <option value="15:30:00">15:30</option>      <option value="16:00:00">16:00</option>      <option value="16:30:00">16:30</option>      <option value="17:00:00">17:00</option>      <option value="17:30:00">17:30</option>      <option value="18:00:00">18:00</option>      <option value="18:30:00">18:30</option>      <option value="19:00:00">19:00</option>      <option value="19:30:00">19:30</option>      <option value="20:00:00" disabled>20:00</option>      </select>      - end time <select class="end-time" name="etime">      <option value="08:00:00">08:00</option>      <option value="08:30:00">08:30</option>      <option value="09:00:00">09:00</option>            <option value="09:30:00">09:30</option>      <option value="10:00:00">10:00</option>      <option value="10:30:00">10:30</option>      <option value="11:00:00">11:00</option>      <option value="11:30:00">11:30</option>      <option value="12:00:00">12:00</option>      <option value="12:30:00">12:30</option>      <option value="13:00:00">13:00</option>      <option value="13:30:00">13:30</option>      <option value="14:00:00">14:00</option>      <option value="14:30:00">14:30</option>      <option value="15:00:00">15:00</option>      <option value="15:30:00">15:30</option>      <option value="16:00:00">16:00</option>      <option value="16:30:00">16:30</option>      <option value="17:00:00">17:00</option>      <option value="17:30:00">17:30</option>      <option value="18:00:00">18:00</option>      <option value="18:30:00">18:30</option>      <option value="19:00:00">19:00</option>      <option value="19:30:00">19:30</option>      <option value="20:00:00">20:00</option>      </select>      </td></tr>      <tr></tr>      <tr><td></td><td><input class="submit-button" type="submit" value="submit"    </td></tr></table></form></div>      <div id="plan-bg" class="pop-up"></div>      <div id="alert-msg" class="pop-up"><span class="close" onclick="window.location.reload();">close</span><p>your request has been sent admin.</p></div>      <div id="time-slot-msg" class="pop-up"><span class="close">close</span><p>this time slot booked.</p></div>      <div id="datepicker"></div>      <script type="text/javascript">      var jqueryarray = [];      jqueryarray = <?php echo json_encode($starttime); ?>;      var statusarray=[];      statusarray = <?php echo json_encode($status); ?>;      var namearray=[];      namearray = <?php echo json_encode($name); ?>;      var countarray = [];      countarray = <?php echo json_encode($testing); ?>;      var arr = [];      for(i = 0; < <?php echo $i; ?>; i++)      {         arr[i] = jqueryarray[i];      }      var brr = [];      for(i = 0; < <?php echo $i; ?>; i++)      {        brr[i] = statusarray[i];      }      var crr=[];      for(i=0; i< <?php echo $i; ?>; i++)      {       crr[i] = namearray[i];      }       var drr=[];      for(i=0; i< <?php echo $i; ?>; i++)      {       drr[i] = countarray[i];      }       var j = 0;      var k=1;      var currentrow;      $('.meeting-timetable tr').each(function() {       if(arr[j] == $(this).find('td').attr('id'))        {        if(brr[j]==1)        {          currentrow=$(this);          for(k=1;k<=parseint(countarray[j]);k++)          {            currentrow.find('td').next().css('background-color','orange').addclass('active').attr("title",namearray[j]);            currentrow=currentrow.next('tr');          }        }        if(brr[j]==2)        {          currentrow=$(this);          for(k=1;k<=parseint(countarray[j]);k++)          {            currentrow.find('td').next().css('background-color','red').addclass('active').attr("title",namearray[j]);            currentrow=currentrow.next('tr');          }        }        if(brr[j]==3)        {          $(this).find('td').next().css('background-color', '');        }        if(brr[j]==4)        {          $(this).find('td').next().css('background-color', '');        }        j++;          }        });        </script>        </body>        </html> 

i so:

if not want or cannot use complete timestamp date , time,

  • convert hh:mm:ss format seconds (link: convert time in hh:mm:ss format seconds only?)

  • setup db table bookings, somnething - id, user_id, start, end, approved_satus

  • write values table

  • you use basic numeric comparison operations check whether value in range, since store start , end times in seconds

something work with, not inclined write complete code here.