I'm inserting data inserted into form to a database table. Here inform Im using POST method to send the data to background function of PDO. The form is front-end Bootstrap form and PDO is backend. But the code is not working, please help me out.
Form code:
This is Bootstrap code for Form table which is front end.
<div class="col-lg-6">
<div class="card alert">
<div class="card-header">
<h4>Horizontal Form</h4>
</div>
<div class="card-body">
<div class="horizontal-form">
<form method="post" action="channel.php" class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label">Name</label>
<div class="col-sm-10">
<input style="color:white" name="name" type="text" class="form-control" placeholder="Channel Name" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Description</label>
<div class="col-sm-10">
<input style="color:white" name="desp" type="text" class="form-control" placeholder="Channel Description" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Field 1</label>
<div class="col-sm-10">
<input style="color:white" name="f1" type="text" class="form-control" placeholder="Field 1" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Field 2</label>
<div class="col-sm-10">
<input style="color:white" name="f2" type="text" class="form-control" placeholder="Field 2">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Field 3</label>
<div class="col-sm-10">
<input style="color:white" name="f3" type="text" class="form-control" placeholder="Field 3">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Field 4</label>
<div class="col-sm-10">
<input style="color:white" name="f4" type="text" class="form-control" placeholder="Field 4">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Create Channel</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
PDO function
public function create_channel($name,$desp,$f1,$f2,$f3,$f4)
{
try {
$db = DB();
$query = $db->prepare("INSERT INTO sensor_table(table_name, table_desp, field_1, field_2, field_3, field_4) VALUES (:name,:desp,:fl1,:fl2,:fl3,:fl4)");
$query->bindParam("name", $name, PDO::PARAM_STR);
$query->bindParam("desp", $desp, PDO::PARAM_STR);
$query->bindParam("fl1", $f1, PDO::PARAM_STR);
$query->bindParam("fl2", $f2, PDO::PARAM_STR);
$query->bindParam("fl3", $f3, PDO::PARAM_STR);
$query->bindParam("fl4", $f4, PDO::PARAM_STR);
$query->execute()
return $db->lastInsertId();
} catch (PDOException $e) {
header("Location: login.php");
exit($e->getMessage());
}
}
Database Connect code:
define('HOST', 'localhost');
define('USER', 'root');
define('PASSWORD', '');
define('DATABASE', 'elg_iot');
function DB()
{
try {
$db = new PDO('mysql:host='.HOST.';dbname='.DATABASE.'', USER, PASSWORD);
return $db;
} catch (PDOException $e) {
return "Error!: " . $e->getMessage();
die();
}
}
Related
I want to se available dates in a dropdown - done
After i´v choosen the date i want to see the available time - done
The customer should be able to book the choosen timeslot - I think i knowe this one, work in progress.
Problem: I want the customer to se the dropdown and the result in the same page and maybe change it when the time comes visably. I´v been playing around with action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" but thats not it i belive.
I am a bit lost in best practice regarding files and jumps betveen them. I have separated the php and html code in different pages. When i´m ready i lift the php-files to includes folder offcourse.
HTML - form with dropdown and submit
php - fill dropdown with dates
html - form with result text fields
php - code for result (timeslot data)
form_date.php
<?PHP
require_once('booking_available_dates.php');
?>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<form name='date_registration' action='booking_available_dates.php' method='POST'>
<div class="form-group row">
<label for="select" class="col-2 col-form-label">Hämta första lediga tid för valt datum</label>
<div class="col-10">
<select id="date_input" name="date_input" class="custom-select">
<?php foreach ($dates as $row): ?>
<option><?=$row["date_booking_customer"]?></option>
<?php endforeach ?>
</select>
</div>
</div>
<div class="form-group row">
<div class="offset-4 col-8">
<button name="submit" type="submit" class="btn btn-primary">Hämta tid!</button>
</div>
</div>
</form>
booking_available_dates.php
<?php
require_once('dbhandler.php');
$dbh = new DBHandler();
if ($dbh->getInstance() === null) {
die("No database connection");
}
try {
$sql = "CALL `booking_dates_available`();";
$stmt = $dbh->getInstance()->prepare($sql);
$stmt->execute();
$dates=$stmt->fetchAll();
}
catch(PDOException $e) {
echo ($e->getMessage());
}
?>
booking_confirm_view.php (not ready - work in progress)
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<form>
<div class="form-group row">
<label for="date" class="col-4 col-form-label">Datum</label>
<div class="col-8">
<input id="date" readonly="readonly" name="date" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="time" class="col-4 col-form-label">Tid</label>
<div class="col-8">
<input id="time" readonly="readonly" name="time" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="owner" class="col-4 col-form-label">Båtägare</label>
<div class="col-8">
<input id="owner" name="owner" type="text" class="form-control" required="required">
</div>
</div>
<div class="form-group row">
<label class="col-4">Medlem i HSS?</label>
<div class="col-8">
<div class="custom-control custom-radio custom-control-inline">
<input name="member" id="member_0" type="radio" required="required" class="custom-control-input" value="thru">
<label for="member_0" class="custom-control-label">Medlem</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input name="member" id="member_1" type="radio" required="required" class="custom-control-input" value="false">
<label for="member_1" class="custom-control-label">Ej medlem</label>
</div>
</div>
</div>
<div class="form-group row">
<label for="boatname" class="col-4 col-form-label">Båtnamn</label>
<div class="col-8">
<input id="boatname" name="boatname" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="email" class="col-4 col-form-label">E-post</label>
<div class="col-8">
<input id="email" name="email" type="text" class="form-control" required="required">
</div>
</div>
<div class="form-group row">
<label for="mobile" class="col-4 col-form-label">Mobilnummer</label>
<div class="col-8">
<input id="mobile" name="mobile" type="text" class="form-control" required="required">
</div>
</div>
<div class="form-group row">
<div class="offset-4 col-8">
<button name="submit" type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
booking_available_time.php
<?php
require_once('dbhandler.php');
$dbh = new DBHandler();
if ($dbh->getInstance() === null) {
die("No database connection");
}
try {
$sql = "CALL `booking_date_input` (:date_input);";
$stmt = $dbh->getInstance()->prepare($sql);
$stmt->bindParam(':date_input', $date_input, PDO::PARAM_STR);
$date_input = $_POST["date_input"];
$stmt->execute();
$result=$stmt->fetchAll();
}
catch(PDOException $e) {
echo ($e->getMessage());
}
?>
$result is the array with the timeslot data.
Here is the form for taking input. When i press submit button page just reload and no error or success message. Also no data inserted in table. Is there anything wrong in my code?
<?php
require_once 'classes/user.php';
$obj_user = new User();
if (isset($_POST['reg-btn'])) {
$message = $obj_user->save_user($_POST);
}
?>
<div class="col-md-8">
<h3 class="text-info text-center"><u>এখানে নিবন্ধন করুন</u></h3>
<?php if (isset($message)) {
echo $message;
unset($message);
} ?>
<hr/>
<form class="form-horizontal" role="form" action="" method="post">
<div class="form-group">
<label class="control-label col-md-3" for="first_name">নামের প্রথম অংশ</label>
<div class="col-md-9">
<input type="text" name="first_name" id="first_name" class="form-control">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3" for="last_name">নামের শেষ অংশ</label>
<div class="col-md-9">
<input type="text" name="last_name" id="last_name" class="form-control">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3" for="email_address">ইমেইল ঠিকানা</label>
<div class="col-md-9">
<input type="email" name="email_address" id="email" class="form-control">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3" for="user_name">ইউসারনেম</label>
<div class="col-md-9">
<input type="text" name="user_name" id="last_name" class="form-control">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3" for="password">পাসওয়ার্ড</label>
<div class="col-md-9">
<input type="password" name="password" id="password" class="form-control">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3" for="address">ঠিকানা</label>
<div class="col-md-9">
<textarea class="form-control" name="address" id="address"></textarea>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3" for="city">শহর</label>
<div class="col-md-9">
<input type="text" name="city" id="city" class="form-control">
</div>
</div>
<div class="form-group">
<div class="col-md-offset-3 col-md-9">
<input type="submit" name="reg_btn" class="btn btn-success btn-block" value="নিবন্ধন সম্পন্ন">
</div>
</div>
</form>
</div>
Here is the user class. I checked the connection, its ok.
<?php
require_once 'db_connect.php';
class User {
private $pdo;
public function __construct() {
$obj_db = new Db_connect();
$this->pdo = $obj_db->pdo;
}
public function save_user($data) {
try {
$query = "INSERT INTO tbl_user(first_name, last_name, email_address, user_name, password, address, city) VALUES(:first_name, :last_name, :email_address, :user_name, :password, :address, :city)";
$stmt = $this->pdo->prepare($query);
$stmt->bindParam(':first_name', $data['first_name'], PDO::PARAM_STR);
$stmt->bindParam(':last_name', $data['last_name'], PDO::PARAM_STR);
$stmt->bindParam(':email_address', $data['email_address'], PDO::PARAM_STR);
$stmt->bindParam(':user_name', $data['user_name'], PDO::PARAM_STR);
$stmt->bindParam(':password', $data['password'], PDO::PARAM_STR);
$stmt->bindParam(':address', $data['address'], PDO::PARAM_STR);
$stmt->bindParam(':city', $data['city'], PDO::PARAM_STR);
$stmt->execute();
$message = "আপনি সফলভাবে নিবন্ধন করেছেন";
return $message;
} catch (PDOException $e) {
echo $e->getMessage();
}
}
}
Your if (isset($_POST['reg-btn'])) { never fires because $_POST['reg-btn'] is not set.
When in doubt about why something isn't firing trying taking out the conditional or giving it an else option to see which case it falls into. From there you can use var_dump to see what the values being sent are, etc.
So in this code you could have done:
if (isset($_POST['reg-btn'])) {
$message = $obj_user->save_user($_POST);
} else {
var_dump($_POST);
}
which would have shown you the name had the _ instead of -. or
//if (isset($_POST['reg-btn'])) {
$message = $obj_user->save_user($_POST);
//}
which would have allowed your form to process so you'd know $_POST['reg-btn'] wasn't processing for some reason. The commenting out route is a bit longer.
Your submit button name is reg_btn and you are checking isset($_POST['reg-btn'])
Replace this:
isset($_POST['reg-btn'])
with:
isset($_POST['reg_btn'])
I am trying to create a registration from and then post the data into a SQlite databases file.
My form looks like this:
<form action="registerprocess_test.php" class="form-horizontal" id=
"register_form" method="post" name="register_form" role="form">
<h2>Registration Form</h2>
<div class="form-group">
<label class="col-sm-3 control-label" for="firstname">First
Name</label>
<div class="col-sm-6">
<input autofocus="" class="form-control" id="firstname" name=
"firstname" placeholder="First Name" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="lastname">Last
Name</label>
<div class="col-sm-6">
<input autofocus="" class="form-control" id="lastname" name=
"lastname" placeholder="Last Name" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="email">Username</label>
<div class="col-sm-6">
<input class="form-control" id="username" name="username"
placeholder="Username" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for=
"password">Password</label>
<div class="col-sm-6">
<input class="form-control" id="password" name="password"
placeholder="Password" type="password">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="country">Country</label>
<div class="col-sm-6">
<select class="form-control" id="country" name="country">
<option>
United Kingdom
</option>
<option>
United States
</option>
</select>
</div>
</div><!-- /.form-group -->
<div class="form-group">
<label class="control-label col-sm-3">Gender</label>
<div class="col-sm-6">
<div class="row">
<div class="col-sm-4">
<label class="radio-inline"><input id="femaleRadio"
type="radio" value="Female">Female</label>
</div>
<div class="col-sm-4">
<label class="radio-inline"><input id="maleRadio" name=
"gender" type="radio" value="Male">Male</label>
</div>
</div>
</div>
</div><!-- /.form-group -->
<div class="form-group">
<div class="col-sm-6">
<div class="checkbox"></div>
</div><!-- /.form-group -->
<div class="form-group">
<div class="col-sm-6 col-sm-offset-3">
<div class="checkbox">
<label><input type="checkbox">I accept <a href=
"#">Terms & Conditions</a></label>
</div>
</div>
</div><!-- /.form-group -->
<div class="form-group">
<div class="col-sm-6 col-sm-offset-3">
<button class="btn btn-primary btn-block" type=
"submit">Register</button>
</div>
</div>
</div>
</form>
Then my PHP looks like this:
<?php
try
{
//open the database
$db = new PDO('sqlite:users.db');
$firstname = $_POST["firstname"];
$lastname = $_POST["lastname"];
$username = $_POST["username"];
$password = $_POST["password"];
$gender = $_POST["gender"];
$country = $_POST["country"];
//Insert record
$db->exec("INSERT INTO registered_users (firstname, lastname, username, password, gender, country) VALUES ('$firstname', '$lastname', '$username', '$password', '$gender', $country);");
//now output the data to a simple html table...
print "<table border=1>";
print "<tr><td>firstname</td><td>lastname</td><td>username</td><td>password</td><td>gender</td><td>country</td></tr>";
$result = $db->query('SELECT * FROM registered_users');
foreach($result as $row)
{
print "<tr><td>".$row['firstname']."</td>";
print "<td>".$row['lastname']."</td>";
print "<td>".$row['username']."</td>";
print "<td>".$row['password']."</td>";
print "<td>".$row['gender']."</td>";
print "<td>".$row['country']."</td>";
}
print "</table>";
$db = NULL;
}
catch(PDOException $e)
{
print 'Exception : ' .$e->getMessage();
}
?>
I know I am connecting to the database as it displays the current data in the database in the table, upon clicking submit. However it does not insert the data from the registration form. Am I missing something important in my php code?
I did some error checking, It was because I had another column within my table that I was not inserting into. So I deleted this column from the database and now it works fine.
Final Edit:
Thank you everyone for the help. I have been trying to write all the code related to connection in index.php rather than submit.php. It is resolved now.
Edit:
I have updated the code based on your feedback.
I am able to get the values to the database now but the thing is it is showing only empty results. here is the updated code.
<form action="submit.php" method="post" class="form-horizontal">
<div class="form-group">
<label for="name" class ="col-lg-2 control-label" > Name</label>
<div class="col-lg-7">
<input type="text" class="form-control" id ="name" name="name" placeholder="Enter your Name" required>
</div>
</div>
</div>
<div class="col-lg-1">
</div>
<div class="form-horizontal" >
<div class="form-group">
<label for="email" class ="col-lg-2 control-label" > Email</label>
<div class="col-lg-7">
<input type="text" class="form-control" id ="email" name="email" placeholder="Enter your email address" required>
</div>
</div>
</div> <div class="col-lg-1">
</div>
<div class="form-horizontal" >
<div class="form-group">
<label for="subject" class ="col-lg-2 control-label" > Subject</label>
<div class="col-lg-7">
<input type="text" class="form-control" id ="subject" name="subject" placeholder="Your Subject" required>
</div>
</div>
</div>
<div class="col-lg-1">
</div>
<div class="form-horizontal">
<div class="form-group">
<label for="message" class ="col-lg-2 control-label" > Message</label>
<div class="col-lg-7">
<textarea name="message" class="form-control" id ="message" cols="20" rows="3" placeholder="Your Message"></textarea>
</div>
</div> <!-- end form -->
<div class="col-lg-1">
</div>
<div class="form-group">
<div class="col-lg-7 col-lg-offset-2">
<button type="submit" name="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
PHP Code:
<?php
if (isset($_POST)) {
$conn = mysqli_connect($servername, $username, $password, $db_name);// Establishing Connection with Server
mysqli_set_charset($conn, 'utf8');
if (!$conn) {
die("Database connection failed: " . mysqli_error($conn));
}
else
echo "connected successfully";
//Escaping string, not 100% safe, also consider validating rules and sanitization
$name = mysqli_real_escape_string($conn, $_POST['name']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$subject = mysqli_real_escape_string($conn, $_POST['subject']);
$message = mysqli_real_escape_string($conn, $_POST['message']);
$result = mysqli_query($conn, "INSERT INTO contact (user, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')");
}
?>
Here is the snapshot of the database
I have a form made using HTML. I want to store the results when i submit the form in the database. The connection was successful but the data is not being stored in the database.
Basically what submit.php does is just sent the text "Successfully submited the form".
Here's my code:
<form action="submit.php" method="post" class="form-horizontal">
<div class="form-group">
<label for="name" class ="col-lg-2 control-label" > Name</label>
<div class="col-lg-7">
<input type="text" class="form-control" id ="name" placeholder="Enter your Name" required>
</div>
</div>
</div>
<div class="col-lg-1">
</div>
<div class="form-horizontal" >
<div class="form-group">
<label for="email" class ="col-lg-2 control-label" > Email</label>
<div class="col-lg-7">
<input type="text" class="form-control" id ="email" placeholder="Enter your email address" required>
</div>
</div>
</div> <div class="col-lg-1">
</div>
<div class="form-horizontal" >
<div class="form-group">
<label for="subject" class ="col-lg-2 control-label" > Subject</label>
<div class="col-lg-7">
<input type="text" class="form-control" id ="subject" placeholder="Your Subject" required>
</div>
</div>
</div>
<div class="col-lg-1">
</div>
<div class="form-horizontal">
<div class="form-group">
<label for="message" class ="col-lg-2 control-label" > Message</label>
<div class="col-lg-7">
<textarea name="message" class="form-control" id ="message" cols="20" rows="3" placeholder="Your Message"></textarea>
</div>
</div> <!-- end form -->
<div class="col-lg-1">
</div>
<div class="form-group">
<div class="col-lg-7 col-lg-offset-2">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
PHP code:
$conn = mysqli_connect($servername, $username, $password, $db_name);// Establishing Connection with Server
mysqli_set_charset($conn, 'utf8');
if (!$conn) {
die("Database connection failed: " . mysqli_error($conn));
}
else
echo "connected successfully";
if (isset($_POST['submit'])) {
//Escaping string, not 100% safe, also consider validating rules and sanitization
$name = mysqli_real_escape_string($conn, $_POST['name']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$subject = mysqli_real_escape_string($conn, $_POST['subject']);
$message = mysqli_real_escape_string($conn, $_POST['message']);
$result = mysqli_query($conn, "INSERT INTO contact (user, email, subject, message) VALUES ('$name', '$email', '$subject', '$message');");
if ($result) {
$message="successfully sent the query!!";
}
else
{$message="try again!!";}
}
?>
None of your input fields have a name="" attribute, including the button. So none of these fields will be sent in the $_POST array.
Add a name="" attribute like this to all the fields you want sent to PHP
<form action="submit.php" method="post" class="form-horizontal">
<div class="form-group">
<label for="name" class ="col-lg-2 control-label" > Name</label>
<div class="col-lg-7">
<input type="text" class="form-control" id ="name" name="name" placeholder="Enter your Name" required>
</div>
</div>
</div>
<div class="col-lg-1">
</div>
<div class="form-horizontal" >
<div class="form-group">
<label for="email" class ="col-lg-2 control-label" > Email</label>
<div class="col-lg-7">
<input type="text" class="form-control" id ="email" name="email" placeholder="Enter your email address" required>
</div>
</div>
</div>
<div class="col-lg-1"></div>
<div class="form-horizontal" >
<div class="form-group">
<label for="subject" class ="col-lg-2 control-label" > Subject</label>
<div class="col-lg-7">
<input type="text" class="form-control" id ="subject" name="subject" placeholder="Your Subject" required>
</div>
</div>
</div>
<div class="col-lg-1"></div>
<div class="form-horizontal">
<div class="form-group">
<label for="message" class ="col-lg-2 control-label" > Message</label>
<div class="col-lg-7">
<textarea name="message" class="form-control" id ="message" name="message" cols="20" rows="3" placeholder="Your Message"></textarea>
</div>
</div> <!-- end form -->
<div class="col-lg-1"></div>
<div class="form-group">
<div class="col-lg-7 col-lg-offset-2">
<button type="submit" class="btn name="submit" btn-primary">Submit</button>
</div>
</div>
</form>
Also in your code in submit.php change this so you see an actual error message if one occurs.
if ($result) {
$message="successfully sent the query!!";
} else {
$message="Insert failed : " . mysqli_error($conn);
}
echo $message;
Although this does assume you are actually showing the $message value somewhere in your code that you have not shown us.
You have to add name attribute to your button element so that if (isset($_POST['submit'])) will be true.
Please change
<button type="submit" class="btn btn-primary">Submit</button>
to
<button type="submit" name="submit" class="btn btn-primary">Submit</button>
or
<input type="submit" name="submit" value="Submit" class="btn btn-primary" />
First of all you must need to provide name attribute for each input tags and button tags for a better approach :
<form action="submit.php" method="post" class="form-horizontal">
<div class="form-group">
<label for="name" class ="col-lg-2 control-label" > Name</label>
<div class="col-lg-7">
<input type="text" class="form-control" id ="name" name ="name" placeholder="Enter your Name" required>
</div>
</div>
</div>
<div class="col-lg-1">
</div>
<div class="form-horizontal" >
<div class="form-group">
<label for="email" class ="col-lg-2 control-label" > Email</label>
<div class="col-lg-7">
<input type="text" class="form-control" name ="email" id ="email" placeholder="Enter your email address" required>
</div>
</div>
</div> <div class="col-lg-1">
</div>
<div class="form-horizontal" >
<div class="form-group">
<label for="subject" class ="col-lg-2 control-label" > Subject</label>
<div class="col-lg-7">
<input type="text" class="form-control" name ="subject" id ="subject" placeholder="Your Subject" required>
</div>
</div>
</div>
<div class="col-lg-1">
</div>
<div class="form-horizontal">
<div class="form-group">
<label for="message" class ="col-lg-2 control-label" > Message</label>
<div class="col-lg-7">
<textarea name="message" class="form-control" name ="message" id ="message" cols="20" rows="3" placeholder="Your Message"></textarea>
</div>
</div> <!-- end form -->
<div class="col-lg-1">
</div>
<div class="form-group">
<div class="col-lg-7 col-lg-offset-2">
<button type="submit" name ="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
Php Code for Insert data in DB :
$result = mysqli_query($conn, "INSERT INTO contact (user, email, subject, message) VALUES ('".$name."', '".$email."', '".$subject."', '".$message."')");
Try this code :-
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$conn = mysqli_connect($servername, $username, $password, $db_name);// Establishing Connection with Server
mysqli_set_charset($conn, 'utf8');
if (!$conn) {
die("Database connection failed: " . mysqli_error($conn));
}
else
echo "connected successfully";
//Escaping string, not 100% safe, also consider validating rules and sanitization
$name = mysqli_real_escape_string($conn, $_POST['name']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$subject = mysqli_real_escape_string($conn, $_POST['subject']);
$message = mysqli_real_escape_string($conn, $_POST['message']);
$result = mysqli_query($conn, "INSERT INTO contact (user, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')");
echo "INSERT INTO contact (user, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')";//die;
if ($result) {
$message="successfully sent the query!!";
}
else
{$message="try again!!";}
}
?>
<form action="index.php" method="post" class="form-horizontal">
<div class="form-group">
<label for="name" class ="col-lg-2 control-label" > Name</label>
<div class="col-lg-7">
<input type="text" class="form-control" name ="name" id ="name" placeholder="Enter your Name" required>
</div>
</div>
</div>
<div class="col-lg-1">
</div>
<div class="form-horizontal" >
<div class="form-group">
<label for="email" class ="col-lg-2 control-label" > Email</label>
<div class="col-lg-7">
<input type="text" class="form-control" id ="email" name="email" placeholder="Enter your email address" required>
</div>
</div>
</div> <div class="col-lg-1">
</div>
<div class="form-horizontal" >
<div class="form-group">
<label for="subject" class ="col-lg-2 control-label" > Subject</label>
<div class="col-lg-7">
<input type="text" name="subject" class="form-control" id ="subject" placeholder="Your Subject" required>
</div>
</div>
</div>
<div class="col-lg-1">
</div>
<div class="form-horizontal">
<div class="form-group">
<label for="message" class ="col-lg-2 control-label" > Message</label>
<div class="col-lg-7">
<textarea name="message" class="form-control" id ="message" cols="20" rows="3" placeholder="Your Message"></textarea>
</div>
</div> <!-- end form -->
<div class="col-lg-1">
</div>
<div class="form-group">
<div class="col-lg-7 col-lg-offset-2">
<button type="submit" class="btn btn-primary" name="submit">Submit</button>
</div>
</div>
</form>
I have been trying to create a simple web form that will be used to submit data to a Google App Engine database that uses MySQL. The database is connecting fine and the try catch statement seems to be working properly. The problem is that when i click the submit button, the data is not being committed into the database. Any help would be much appreciated, I'm sure there is just some small error that i am overlooking.
HTML form
<form class="form-horizontal" role="form" action="connection.php" method="post">
<div class="form-group">
<label for="patientName" class="col-sm-2 control-label">Patient Name</label>
<div class="col-sm-10">
<input type="Name" class="form-control" id="patientName" name="patientName">
</div>
</div>
<div class="form-group">
<label for="Address1" class="col-sm-2 control-label">Address 1</label>
<div class="col-sm-10">
<input type="text" class="form-control" rows='3' id="Address1" name="Address1"></input>
</div>
</div>
<div class="form-group">
<label for="Address2" class="col-sm-2 control-label">Address 2</label>
<div class="col-sm-10">
<input type="text" class="form-control" rows='3' id="Address2" name="Address2"></input>
</div>
</div>
<div class="form-group">
<label for="Address3" class="col-sm-2 control-label">Address 3</label>
<div class="col-sm-10">
<input type="text" class="form-control" rows='3' id="Address3" name="Address3"></input>
</div>
</div>
<div class="form-group">
<label for="postCode" class="col-sm-2 control-label">PostCode</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="postCode" name="postCode">
</div>
</div>
<div class="form-group">
<label for="symptoms" class="col-sm-2 control-label">Symptoms</label>
<div class="col-sm-10">
<textarea type="text" class="form-control" rows='5' id="symptoms" name="symptoms"></textarea>
</div>
</div>
<div class="form-group">
<label for="contactNumber" class="col-sm-2 control-label">Contact Number</label>
<div class="col-sm-10">
<input type="Tel" class="form-control" id="contactNumber" name="contactNumber">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Log Call Details</button>
</div>
</div>
</form>
PHP connection file
<?php
use google\appengine\api\users\User;
use google\appengine\api\users\UserService;
try {
$db = new pdo('mysql:host=111.111.111.11:3306;dbname=MyDB',
'root',
'password'
);
$patientName = $_POST["patientName"];
$address1 = $_POST["Address1"];
$address2 = $_POST["Address2"];
$address3 = $_POST["Address3"];
$postCode = $_POST["postCode"];
$symptoms = $_POST["symptoms"];
$contactNumber = $_POST["contactNumber"];
$sql = "INSERT INTO patient (patientName, patientAddress1, patientAddress2, patientAddress3, patientPostcode, PatientSymptoms, patientPhoneNumber)
VALUES ($patientName, $address1, $address2, $address3, $postCode, $symptoms, $contactNumber)";
$db->execute($sql);
} catch (PDOException $ex) {
echo "Could not connect to the database.";
exit;
}
$db = null;
echo "Woo-hoo!";
?>
I should probably also mention that the HTML page is using bootstrap.
You can try this code snippet below, It works, I did not used $_POST data but hard-coded values, Hope it helps !
more infos:
http://php.net/manual/en/pdo.prepare.php
$username="test12";
$role="test1";
$sql = "INSERT INTO test (username, role) VALUES (:username, :role)";
$conn = new pdo('mysql:host=127.0.0.1:3306;dbname=home',
'root',
'password'
);
$q = $conn->prepare($sql);
$q->execute(array(':username'=>$username, ':role'=>$role));