如何修复PHP表单操作中的“未定义索引:”?

时间:2016-12-27 03:57:03

标签: php mysql

基本上我正在处理HTML和PHP文件的预订工具。每当我尝试在我的预订设施页面上提交表单时,表单就会将数据插入名为 M3_156020K_Syahri_SportFacility 的mysql数据库下名为 booking_facilities 的mysql表中。相反,它向我显示了这个错误:

  

注意:未定义的索引:第16行的活动
      注意:未定义的索引:第17行的场地

MySQL数据库

show database

BookFacilities.html

show website

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/bookingfacilities/bookingfacilities_desktop.css">
<link rel="stylesheet" type="text/css" href="css/bookingfacilities/bookingfacilities_tablet.css" media="screen and (max-width:768px)">
<link rel="stylesheet" type="text/css" href="css/bookingfacilities/bookingfacilities_mobile.css" media="screen and (max-width:480px)">
<script src="js/bookfacilitiesvalidate.js"></script>     
</head>


<body>

<div id="wrapper">

<header>

<nav id="mainMenu">
  <img src="logo/logo.png" id="logo">
  <ul>
    <li><a href="home.html">Home</a></li>
    <li><a href="about.html">About</a></li>
    <li><a href="rates.html">Booking Rates</a></li>
    <li><a href="facilities.html">Recreation</a></li>
  </ul>  
</nav>

</header>


<section id="banner">

    <div id="ritu" class="shadow">
       <img src="images/content_pure.jpg">
       <img src="images/Sports-Hub-Gym.jpg">
       <img src="images/gym.jpg">
       <img src="images/ClubFitt2jpg.jpg"> 
    </div>
</section>


<section id="content">

<div id="booking">

    <div class="row">
       <div class="image" style="background-color:black; color:white; font-weight:bold;">
           <p style="padding-left:15px; padding-top:0px;">Booking Facilities</p>
       </div>


       <div class="image" style="background-color:white; color:black; font-weight:bold;">
           <p style="padding-left:15px; padding-top:0px;">Booking Cart</p>
       </div>

    </div>

</div>

<div id="box">

    <div class="user">
       <form action="facilities.php" method="post" onsubmit="return validate();">
       <p style="color:white; font-size:18px;">Activites</p> 
         <select name="activities" id="activities">
             <option value="0">Select an activity</option>
             <option value="1">Badminton</option>
             <option value="2">Basketball</option>
             <option value="3">Table Tennis</option>
             <option value="4">Running Track</option>
             <option value="5">Dancing</option>
             <option value="6">Swimming Pool</option>
             <option value="7">Soccer</option>
         </select>

        <p style="color:white; font-size:18px;">Venues</p> 
         <select name="venue" id="venue">
             <option value="0">Select a venues</option>
             <option value="1">Sports Field and Running Track</option>
             <option value="2">Tennis Courts</option>
             <option value="3">Dance / Aerobics Studios</option>
             <option value="4">Indoor Sports Hall</option>
             <option value="5">Multipurpose Rooms</option>
             <option value="6">Indoor / Outdoor Swimming Pool</option>
         </select>
      </form>

    </div>

    <div class="user">

      <form action="facilities.php" method="post" onsubmit="return validate();">
       <p style="color:white; font-size:18px;">Days</p> 
         <select name="days" id="days">
             <option value="0">All Days</option>
             <option value="1">Sun</option>
             <option value="2">Mon</option>
             <option value="3">Tues</option>
             <option value="4">Wed</option>
             <option value="5">Thurs</option>
             <option value="6">Fri</option>
             <option value="7">Sat</option>
         </select>

        <p style="color:white; font-size:18px;">Date</p> 
        <input type="date" name="calendar" id="calendar"><br>
        <input type="submit" name="searchbtn" value="Search" style="margin-top:20px;">
      </form>

    </div>

</div>


</section>


<footer>

<p>© Copyright 2016 SportLab. All Rights Reserved.</p>   
<nav id="submenu">
    <ul>
       <li><a href="#">Sitemap &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| </a></li>
       <li><a href="contact.html">&nbsp;&nbsp;&nbsp;Contact &nbsp;&nbsp;&nbsp;&nbsp;|</a></li>
       <li><a href="term.html">Term of Use  </a></li>
       <li><a href="privacy.html">| &nbsp;&nbsp;&nbsp;&nbsp;Privacy </a></li>
    </ul>
</nav>


</footer>

</div>

</body>
</html>

facilities.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Booking Facilities</title>
</head>

<body>


<?php


if(isset($_POST["searchbtn"])) 
{
      $a=$_POST['activities']; <--- Line 16
      $v=$_POST['venue']; <--- Line 17
      $dy=$_POST['days'];
      $dt= date('d-m-y',strtotime($_POST['calendar']));

      $conn=mysqli_connect("localhost", "root", "" , "M3_156020K_Syahri_SportFacility");

      $sql_insert = "INSERT into booking_facilities (activities, venue, day, date) values ('$a', '$v' , '$dy' , '$dt' )";
      $result=mysqli_query($conn, $sql_insert);
      if($result)
      {
          echo "Success";
      }
      else
      {
          echo "Failed";
      }
}

 ?>



</body>
</html>

虽然day是插入mysql表但不是活动和场所。我无法弄清楚我的代码有什么问题。我怎么能修复它?

3 个答案:

答案 0 :(得分:2)

检查以下一行:

<form action="facilities.php" method="post" onsubmit="return validate();">
       <p style="color:white; font-size:18px;">Days</p> 
         <select name="days" id="days">
             <option value="0">All Days</option>
             <option value="1">Sun</option>
             <option value="2">Mon</option>
             <option value="3">Tues</option>
             <option value="4">Wed</option>
             <option value="5">Thurs</option>
             <option value="6">Fri</option>
             <option value="7">Sat</option>
         </select>

        <p style="color:white; font-size:18px;">Date</p> 
        <input type="date" name="calendar" id="calendar"><br>
        <input type="submit" name="searchbtn" value="Search" style="margin-top:20px;">
      </form>

此处, searchbtn 可在上述表单中使用,活动属于不同的表单。在

isset($_REQUEST['searchbtn'])

您无法访问activities,因为它属于不同的表单。因此,请删除所有表单并将其设置为一个。

答案 1 :(得分:0)

使用一个表单提交所有字段

<form action="facilities.php" method="post" onsubmit="return validate();">
    <!-- select for activities -->
    <!-- select for venues -->
    <!-- select for days -->
    <!-- submit button -->
    </form>

答案 2 :(得分:0)

在这里,您正在使用相同的操作初始化两个表单。因此,当您单击每个表单时,将提交该表单内的元素。但是当你收到请求时,你会尝试从两个表单中获取值,因此它会显示错误,

<form action="facilities.php" method="post" onsubmit="return validate();">
.....
</form>

根据您的需要使用以下代码, HTML文件

<div id="box">
    <form action="facilities.php" method="post" onsubmit="return validate();">
    <div class="user">
       <p style="color:white; font-size:18px;">Activites</p> 
         <select name="activities" id="activities">
             <option value="0">Select an activity</option>
             <option value="1">Badminton</option>
             <option value="2">Basketball</option>
             <option value="3">Table Tennis</option>
             <option value="4">Running Track</option>
             <option value="5">Dancing</option>
             <option value="6">Swimming Pool</option>
             <option value="7">Soccer</option>
         </select>

        <p style="color:white; font-size:18px;">Venues</p> 
         <select name="venue" id="venue">
             <option value="0">Select a venues</option>
             <option value="1">Sports Field and Running Track</option>
             <option value="2">Tennis Courts</option>
             <option value="3">Dance / Aerobics Studios</option>
             <option value="4">Indoor Sports Hall</option>
             <option value="5">Multipurpose Rooms</option>
             <option value="6">Indoor / Outdoor Swimming Pool</option>
         </select>
    </div>

    <div class="user">
       <p style="color:white; font-size:18px;">Days</p> 
         <select name="days" id="days">
             <option value="0">All Days</option>
             <option value="1">Sun</option>
             <option value="2">Mon</option>
             <option value="3">Tues</option>
             <option value="4">Wed</option>
             <option value="5">Thurs</option>
             <option value="6">Fri</option>
             <option value="7">Sat</option>
         </select>

        <p style="color:white; font-size:18px;">Date</p> 
        <input type="date" name="calendar" id="calendar"><br>
        <input type="submit" name="searchbtn" value="Search" style="margin-top:20px;">
    </div>
    </form>
</div>

对插入使用相同的facilities.php代码。这里不需要HTML文件中的HTML标签,因为您只是尝试使用此文件进行一些后端工作,然后重定向到另一个带有成功消息的页面。