отправка формы в базу данных - PullRequest
2 голосов
/ 22 декабря 2011

Я создал форму и пытаюсь отправить данные в базу данных MySQL, но после отправки формы я получаю следующую ошибку ..

Примечание: неопределенный индекс: месяц в C: \ xampp \ htdocs \ auto \ insert_ac.php в строке 14
Примечание: неопределенный индекс: имя_списка в C: \ xampp \ htdocs \ auto \ insert_ac.php в строке 15
Примечание: неопределенный индекс: rj_name в C: \ xampp \ htdocs \ auto \ insert_ac.php в строке 16
Примечание: неопределенный индекс: канал в C: \ xampp \ htdocs \ auto \ insert_ac.php в строке 17
Примечание: неопределенный индекс: год в C: \ xampp \ htdocs \ auto \ insert_ac.php в строке 18
Примечание: неопределенный индекс: страна в C: \ xampp \ htdocs \ auto \ insert_ac.php в строке 19

Когда яотметьте пустую строку, вставленную в мою базу данных

<?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();
?>

Мой код HTML-формы

<!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>

Ответы [ 3 ]

6 голосов
/ 22 декабря 2011

Вам необходим атрибут name в элементах формы, чтобы получить доступ к значениям в $ _POST.

 <input id="month" name="month" type="text" autocomplete="off">
0 голосов
/ 23 декабря 2011

у вас должен быть атрибут name в элементах формы.

Вы можете получить эту ошибку, возможно, из-за того, что значения не заполнены.

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

, если у вас есть что-то вроде $_POST["test"],Вы должны проверить, существует ли такой индекс, выполнив это:

if(isset($_POST["test"]))

, поэтому просто используйте, как показано ниже

if(isset($_POST['submit']))
{
$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');
}
0 голосов
/ 22 декабря 2011

В дополнение к использованию атрибута name, как указал SeanNieuwoudt, вам, вероятно, также следует проверить, что метод запроса равен POST перед вставкой в ​​базу данных.Если вы этого не сделаете, и кто-то решит просмотреть вашу страницу insert_ac.php как запрос GET, он сгенерирует те же уведомления, что и раньше, и вставит пустые данные.

Например

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // go ahead and insert
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...