I'm having trouble to list of car available by date. Here's ma data and code.
booking_tbl
car_tbl
I have a code that filter availability by date: From to
<input type="submit" name="button" id="button" value="Filter" />
</label>
<a href="q_search1_form.php">reset</a>
</form>
<script>
$(function() {
var dates = $( "#from, #to" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 1,
dateFormat: 'yy-mm-dd',
onSelect: function( selectedDate ) {
var option = this.id == "from" ? "minDate" : "maxDate",
instance = $( this ).data( "datepicker" ),
date = $.datepicker.parseDate(
instance.settings`enter code here`.dateFormat ||
$.datepicker._defaults.dateFormat,
selectedDate, instance.settings );
dates.not( this ).datepicker( "option", option, date );
}
});
});
</script>
And here is my query code:
<?php
include("config.php");
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) { die('Failed to connect to server: ' . mysql_error()); }
$db = mysql_select_db(DB_DATABASE);
if(!$db) { die("Unable to select database"); }
$start =$_POST['from'];
$end =$_POST['to'];
$query="SELECT car.id, car.description, car.name, car.status, booking.book_id FROM car LEFT JOIN booking ON booking.id_car=car.id ";
$query.="WHERE (start_date BETWEEN CAST('$start' AS DATE) AND CAST('$end' AS DATE) OR start_date IS NULL) ";
$query.="AND (end_date BETWEEN CAST('$start' AS DATE) AND CAST('$end' AS DATE) OR end_date IS NULL) ";
$query.="AND status = 'available'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
?>
<input type="checkbox" name="car[]" id="car" value="<?php echo $row['id'];?> "> <?php echo $row['name'];?><br>
<?php
}mysql_close();?>
I insert data with this code:
$id_car = @implode(',', $_POST['car']);
My problem is that I want to check what car or cars are available (for example 2016-10-02
in query appears also vw, but this car is booked).
If I insert a new booking for 2016-10-03
: Mercedes, after inserting it in my new query, it appears also Mercedes and I don't know why because it is already booked.