php - 为什么我得到 “undefined index” ?

标签 php mysql forms

我的网页出现以下 5 个错误:

Notice: Undefined index: town in C:\xampp\htdocs\dispatch1.php on line 51

Notice: Undefined index: location in C:\xampp\htdocs\dispatch1.php on line 52

Notice: Undefined index: incident_type in C:\xampp\htdocs\dispatch1.php on line 53

Notice: Undefined index: time_date in C:\xampp\htdocs\dispatch1.php on line 54

Notice: Undefined index: admin in C:\xampp\htdocs\dispatch1.php on line 55

这是我的输出表的代码,它从数据库中获取数据(它确实显示了数据库中的数据):

<?php include("manage_post.php"); ?>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta http-equiv="refresh" content="2" >
</head>

<body>
<div align="center" class="CSSTableGenerator" height="100%">
  <form action="dispatch1.php" method="get" id="dispatch">
 <table width="968" height="248" border="1" align="center" cellpadding="10" cellspacing="0"  rules="rows" id="incidents" style="color:#333333;border-collapse:collapse;text-align:left;">
  <tr style="color:White;background-color:#5D7B9D;font-weight:bold;font-style:italic;">
  <th scope="col">TOWN</th>
  <th scope="col">LOCATION</th>
  <th scope="col">INCIDENT TYPE</th>
  <th scope="col">TIME/DATE</th>
  <th scope="col">ADMIN</th>
  </tr>
  <tr style="color:#333333;background-color:#F7F6F3;font-weight:bold;">
    <?php
    $town = $_POST['town'];
    $location = $_POST['location'];
    $incident_type= $_POST['incident_type'];
    $time_date= $_POST['time_date'];
    $admin = $_POST['admin'];

    $db = mysqli_connect('localhost','root','') or die("Database error"); 
    mysqli_select_db($db, 'mydatabase');  
    $result= mysqli_query($db, "select * from cad"); 
    while($row = mysqli_fetch_array($result))
    {
        echo "<td>" .$row['town'] ."</td>"; 
        echo "<td>" .$row['location'] ."</td>"; 
        echo "<td>" .$row['incident_type'] ."</td>"; 
        echo "<td>" .$row['time_date'] ."</td>"; 
        echo "<td>" .$row['admin'] ."</td>"; 
    }
    ?>
  </tr>
    </table>
  </form>
  </body>
  </html>

然后,这是我的“manage_post.php”页面,它将数据从表单发布到数据库:

<?php

if( $_POST )
{

  $con = mysql_connect("localhost","root","");

  if (!$con)
  {
    die('Could not connect: ' . mysql_error());
  }

  mysql_select_db("mydatabase", $con);


  $town = $_POST['town'];
  $location = $_POST['location'];
  $incident_type = $_POST['incident_type'];
  $time_date = $_POST['time_date'];
  $admin = $_POST['admin'];


  $town = mysql_real_escape_string($town);
  $location = mysql_real_escape_string($location);
  $incident_type = mysql_real_escape_string($incident_type);
  $time_date = mysql_real_escape_string($time_date);
  $admin = mysql_real_escape_string($admin);


  $query = "
    INSERT INTO `mydatabase`.`cad` (`town`, `location`, `incident_type`, `time_date`, `admin`) VALUES ('$town', '$location', '$incident_type', '$time_date', '$admin');";

  mysql_query($query);

  mysql_close($con);
}

?>

我试图检查它并弄清楚它有什么问题,但就是找不到。如果您需要表格代码,请告诉我。我的 PHP 代码的另一个奇怪问题是,表格不是垂直的,而是水平的,并且一直越过屏幕。 Here is a picture of it.然后我必须水平滚动才能查看所有内容。

最佳答案

在您显示的第一个文件中,您正在尝试访问 POST 值:

$town = $_POST['town'];
$location = $_POST['location'];
$incident_type= $_POST['incident_type'];
$time_date= $_POST['time_date'];
$admin = $_POST['admin'];

但是还没有发布任何内容。您仍在显示 将要 发布的表单。显示表单如何依赖于已经提交的相同表单?

为了有条件地检查值是否已发布,您可以在第二个文件中执行相同的操作:

if( $_POST )
{
    // use the POST values
}

可选地,您可以有条件地检查每个单独的值:

if( isset($_POST['town']) )
{
    // use the town value
}

if( isset($_POST['location']) )
{
    // use the location value
}

// etc.

至于没有值时要显示什么,那是你的事。

关于php - 为什么我得到 “undefined index” ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27745367/

相关文章:

php - 使用 Ajax 和 Swiftmailer 提交表单

PHP - 验证码替换

javascript - php - file_get_contents 缺少 html 标签

javascript - 使用 mysql 和 javascript 计算链接的点击次数

php - Ajax 联系表单和 UTF-8

mysql 星号国家代码前缀查询

php - 我如何在mysql的整个数据库表中找到电子邮件地址的存在

php - 根据动态数字或从 foreach 循环生成的元素计算宽度

php - 选择最近 20 分钟内插入的记录

javascript - jquery事件没有变化