I've been trying to solve this problem for a few hours and can't seem to make headway. I am creating a booking form and it involves 2 dropdown menus and the use of some session variables.
HTML
<form accept-charset="UTF-8" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"])?>" method="POST">
<input type="date" data-role="date" name = "Date"data-inline="true" id ="Date" placeholder="Click here to select a date">
<br>
<select id="Time" name="Time">
<option value="Null">Select a Time</option>
<option value="9am">09:00</option>
<option value="9.20am">09:20</option>
<option value="9.40am">09:40</option>
<option value="10am">10:00</option>
<option value="10.20am">10:20</option>
<option value="10:40am">10:40</option>
<option value="11am">11:00</option>
<option value="11:20am">11:20</option>
<option value="11:40am">11:40</option>
<option value="12am">12:00</option>
</select>
<br>
<select id="Person" name="Person">
<option value="Person1">Who Would you Like to See?</option>
<option value="Person2">A Doctor</option>
<option value="Person3">A Nurse</option>
</select>
<br>
<input type="submit" data-role="button" id="submit" value="Book" data-icon="action" data-iconpos="right">
I'm not been giving an error message, nor am I getting the success message that I've coded in if the query is successful. Any help would be appreciated
PHP
//This adds the connection file which has the details to connect to the database and what database to connect to
include_once('connection.php');
//Checks if the submit button is not set
if(!isset($_POST['submit']))
{
exit;
}
//Declared Variables
$Date = $_GET['Date'];
$Time = $_GET['Time'];
$Person = $_GET['Person'];
$userID= $_SESSION['user'];
$GPID= $_SESSION['GPID'];
//Database Connection, this connects to the database using the connection.php
$conn=ConnectionFactory::connect();
//Insert Query
$query="INSERT INTO `Appointments`(`AppID`, `Date`, `Time`, `Booked_With`, `UserID`, `GPID`) VALUES (NULL, :Date,:Time,:Person,:userID,:GPID)";
$stmt=$conn->prepare($query);
//Binding values
//$stmt->bindValue(':post', $Post);
$stmt->bindValue(':Date', $Date);
$stmt->bindValue(':Time', $Time);
$stmt->bindValue(':Person', $Person);
$stmt->bindValue(':userID', $userID);
$stmt->bindValue(':GPID', $GPID);
$affected_rows = $stmt->execute();
//Message if insert is Successful
if($affected_rows==1){
print "<script type=\"text/javascript\">";
print "alert('Post Successful')";
print "</script>";
exit;
}
//Terminates the connection
$conn=NULL;
?>
</form>
There are a few issues with your code and I'll start from the top.
This conditional statement:
if(!isset($_POST['submit']))
{
exit;
}
You don't have an element bearing the submit
name attribute, therefore your script will exit as soon as the page is loaded.
You're probably relying on the "id" for your submit button being:
<input type="submit" data-role="button" id="submit" ...
and should be named.
Ie:
<input type="submit" name="submit" data-role="button" id="submit" ...
Then you're using a POST method in your form, but using GET arrays, where they should be POSTs.
$Date = $_GET['Date'];
to
$Date = $_POST['Date'];
$_POST
for the rest of your GET arrays. Add error reporting to the top of your file(s) which will help find errors.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
Sidenote: Error reporting should only be done in staging, and never production.
Plus, make sure you are indeed connecting with PDO and not another MySQL API that doesn't intermix with your PDO query.
Another thing; make sure you've started the session since you are using a session array.
session_start();
must reside inside all pages using sessions.
Add $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
right after the connection is opened.
bindParam
instead of bindValue
if that still doesn't make it kick in.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.