I have created a form and I’m trying to post data to MySQL databasem, but after submitting the form i am getting the following error..
Notice: Undefined index: month in C:\xampp\htdocs\auto\insert_ac.php on line 14
Notice: Undefined index: listner_name in C:\xampp\htdocs\auto\insert_ac.php on line 15
Notice: Undefined index: rj_name in C:\xampp\htdocs\auto\insert_ac.php on line 16
Notice: Undefined index: channel in C:\xampp\htdocs\auto\insert_ac.php on line 17
Notice: Undefined index: year in C:\xampp\htdocs\auto\insert_ac.php on line 18
Notice: Undefined index: country in C:\xampp\htdocs\auto\insert_ac.php on line 19
When i check a blank row entry inserted in to my database
<?php
$host="localhost"; // Host name
$username="root"; // Mysql username`
$password=""; // Mysql password
$db_name="auto"; // Database name
$tbl_name="song_request"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Get values from form
$month=mysql_real_escape_string($_POST['month']);
$listner_name=mysql_real_escape_string($_POST['listner_name']);
$rj_name=mysql_real_escape_string($_POST['rj_name']);
$channel=mysql_real_escape_string($_POST['channel']);
$year=mysql_real_escape_string($_POST['year']);
$country=mysql_real_escape_string($_POST['country']);
// Insert data into mysql
$sql="INSERT INTO song_request (month, listner_name, rj_name, channel, year, country)VALUES('$month', '$listner_name', '$rj_name', '$channel', '$year', '$country')";
$result=mysql_query($sql) or die ('error Updating database');
// if successfully insert data into database, displays message "Successful".
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='index.html'>Back to main page</a>";
}
else {
echo "ERROR";
}
// close connection
mysql_close();
?>
My HTML form code is
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Radio Mantra Song Request</title>
<link href="css/jquery.autocomplete.css" rel="stylesheet" type="text/css">
<link href="css/main.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/jquery-1.5.2.min.js">
</script>
<script type="text/javascript" src="js/jquery.autocomplete.pack.js">
</script>
<script type="text/javascript" src="js/script.js">
</script>
</head>
<body>
<div class="container">
<form name="form" method="post" action="insert_ac.php">
<p><label>Location:</label> <input id="month" type="text" autocomplete="off"></p>
<p><label>Listner Name:</label> <input id="listner_name" type="text" autocomplete=
"off"></p>
<p><label>RJ Name:</label> <input id="rj_name" type="text" autocomplete="off"></p>
<p><label>Channel:</label> <input id="channel" type="text" autocomplete="off"></p>
<p><label>Show Name:</label> <input id="year" type="text" autocomplete="off"></p>
<p><label>Song:</label> <input id="country" type="text" autocomplete="off"></p>
<h2>Radio Mantra</h2>
<table>
<tr>
<td align="center"><input type="submit" name="submit" value="Submit"></td>
</tr>
</table>
</form>
</div>
</body>
</html>
In addition to using a
nameattribute as pointed out by SeanNieuwoudt, you should probably also check that the request method isPOSTbefore inserting into the database. If you don’t do that and someone decides to view your insert_ac.php page as a GET request, it will generate the same notices as before and insert blank data.For example