deanlee17
asked on
Error checking dates
Hi Experts, please see my attached code. I am new to PHP and this is my first attempt. I have got error checking in place. But I am trying to test that the departure date is greater than the arrival date and I cant seem to implement it into my existing code.
My IF statement looks like this...
if ( $departure_date <= $arrival_date ) {
echo "oops error";
} else {
echo "All good";
}
Thanks,
Dean
My IF statement looks like this...
if ( $departure_date <= $arrival_date ) {
echo "oops error";
} else {
echo "All good";
}
Thanks,
Dean
<?
$dbhost = 'X';
$dbuser = 'X';
$dbpass = 'X';
$dbname = 'X';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);
if(!empty($_POST) && isset($_POST))
{
$emptyvariables = false;
if(!empty($_POST)){
foreach($_POST as $key => $val){
if(empty($_POST[$key])){
echo"Please insert $key<br />";
$emptyvariables = true;
}
}
}
if($emptyvariables == false){
$id = mysql_real_escape_string($_POST['id']);
$Forename = mysql_real_escape_string($_POST['Forename']);
$Surname = mysql_real_escape_string($_POST['Surname']);
$Arrival_Date = mysql_real_escape_string($_POST['Arrival_Date']);
$Departure_Date = mysql_real_escape_string($_POST['Departure_Date']);
$RoomNo = mysql_real_escape_string($_POST['RoomNo']);
$Tel = mysql_real_escape_string($_POST['Tel']);
$Arrival_Date = str_replace("/","-",($Arrival_Date));
$Arrival_Date = date("Y-m-d", strtotime($Arrival_Date));
$Departure_Date = str_replace("/","-",($Departure_Date));
$Departure_Date = date("Y-m-d", strtotime($Departure_Date));
$sql = "
INSERT INTO bookings
SET
id = '$id',
Forename = '$Forename',
Surname = '$Surname',
Arrival_Date = '$Arrival_Date',
Departure_Date = '$Departure_Date',
RoomNo = '$RoomNo',
Tel = '$Tel'";
echo"$query";
$result = mysql_query($sql);
if(!$result)
{
echo "Booking already exists.";
}
else
{
echo "Record inserted successfully";
}
}
}
?>
<table width="300" border="1" cellpadding='5'cellspacing='5'>
<tr align="center">
<td><b>ID</b></td>
<td><b>Forename</b></td>
<td><b>Surname</b></td>
<td><b>Arrival_Date</b></td>
<td><b>Departure_Date</b></td>
<td><b>RoomNo</b></td>
<td><b>Tel</b></td>
</tr>
<?
$sql = "
SELECT *
FROM bookings
ORDER BY ID ASC
LIMIT 20";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
?>
<?
$arrival_date_formatted = date("d-m-Y", strtotime($row['Arrival_Date']));
$departure_date_formatted = date("d-m-Y", strtotime($row['Departure_Date']));
?>
<tr>
<td><? echo $row['id']; ?></td>
<td><? echo $row['Forename']; ?></td>
<td><? echo $row['Surname']; ?></td>
<td><? echo $arrival_date_formatted; ?></td>
<td><? echo $departure_date_formatted; ?></td>
<td><? echo $row['RoomNo']; ?></td>
<td><? echo $row['Tel']; ?></td>
</tr>
<?
}
?>
</table>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
What format are the dates being entered in? What I mean is what is the date format of $_POST['Arrival_Date'] before you do anything to it?
ASKER
User enters in this format DD-MM-YYYY
It is then formtted into YYYY-MM-DD just before the table insert (lines 40 & 43)
Thanks.
It is then formtted into YYYY-MM-DD just before the table insert (lines 40 & 43)
Thanks.
OK, then after this point
$Arrival_Date = str_replace("/","-",($Arri val_Date)) ;
$Arrival_Date = date("Y-m-d", strtotime($Arrival_Date));
$Departure_Date = str_replace("/","-",($Depa rture_Date ));
$Departure_Date = date("Y-m-d", strtotime($Departure_Date) );
the dates will be in YYYY-MM-DD format which means you can directly compare them
if ( $Departure_Date <= $Arrival_Date ) {
echo "oops error";
} else {
echo "All good";
}
Note that I have capitalised the names as PHP is case sensitive. Are we any further forward? I know you intend to output more than "oops" but what?
$Arrival_Date = str_replace("/","-",($Arri
$Arrival_Date = date("Y-m-d", strtotime($Arrival_Date));
$Departure_Date = str_replace("/","-",($Depa
$Departure_Date = date("Y-m-d", strtotime($Departure_Date)
the dates will be in YYYY-MM-DD format which means you can directly compare them
if ( $Departure_Date <= $Arrival_Date ) {
echo "oops error";
} else {
echo "All good";
}
Note that I have capitalised the names as PHP is case sensitive. Are we any further forward? I know you intend to output more than "oops" but what?
ASKER
Ok thats all well and good, but I cant implement the IF statement so that it echo's the error else continues on and does the insert. Usually it throws the error then goes on to post anyway lol.
I usually have.....
if ( $Departure_Date <= $Arrival_Date ) {
echo "oops error";
} else {
Then close the end bracket around line 70
Thanks
I usually have.....
if ( $Departure_Date <= $Arrival_Date ) {
echo "oops error";
} else {
Then close the end bracket around line 70
Thanks
ASKER
Aha! got it working, ur first post about which format to use (YYYY-MM-DD) helped the most so I will award points to that post.
Many Thanks
Many Thanks
Glad you're sorted.
ASKER