注意:未定义的索引:

时间:2017-07-18 10:47:48

标签: php html sql

这是带有日期选择器的main.php,并指向index.php,其中包含数据表。它可以在我选择日期时工作,但是当我对index.php页面进行一些更改时:编辑数据,或者如果我直接转到index.php,我会得到:

  

注意:第112行的/Applications/XAMPP/xamppfiles/htdocs/zeta/index.php中的未定义索引:arr_date

<?php

include 'database.php';

$reponse = $bdd->query("SELECT * FROM live");  

$reponse->closeCursor();

?>

  <form action="index.php" method="post">
    <input type="date"  name="arr_date" value="FROM">
    <input type="submit"  value="Search">
  </form>

的index.php

 <?php
 include 'database.php';

 $selected_date= $_POST['arr_date'];

 $reponse = $bdd->query("SELECT * FROM live where 
 arr_date='$selected_date'");

while ($row = $reponse->fetch())
{
?>
大家好, 谢谢你的帮助,这些信息解决了我的问题:

<?php
session_start();
include 'db.php';

// Check Post variables are available
if(isset($_POST['select_date']))
{
     $_POST['select_date']."";
     // Set session variables
    $_SESSION["select_date"] = $_POST['select_date'];
     $_SESSION["select_date"]."";;
}
else
     $_SESSION["select_date"];
    //echo 'No, form submitted.';

$select_date = $_SESSION["select_date"];


$reponse = $bdd->query("SELECT * FROM live where 
select_date='$select_date'");

while ($row = $reponse->fetch())
{

7 个答案:

答案 0 :(得分:1)

当然,如果直接转到index.php,这是一个没有表单数据的新请求。

您应该检查表单是否已提交

if(isset($_POST['arr_date'])) {
    //do stuff
}

答案 1 :(得分:1)

使用isset()empty()

<?php
 include 'database.php';

 if(isset($_POST['arr_date']))
 {
   $selected_date= $_POST['arr_date'];

   $reponse = $bdd->query("SELECT * FROM live where 
   arr_date='$selected_date'");

  while ($row = $reponse->fetch())
  {
  }
 }

echo "Other code which is not depended on POST will write here";
?>

答案 2 :(得分:1)

您需要检查变量是否已设置。

如果已设置,则仅使用isset()

更正后的代码:

<?php
include 'database.php';
if (isset($_POST['arr_date'])) {
 $selected_date= $_POST['arr_date'];
 $reponse = $bdd->query("SELECT * FROM live where 
 arr_date='$selected_date'");
 while ($row = $reponse->fetch()) {
  // While code
 }
}
?>

答案 3 :(得分:1)

您必须显示完整的代码。无论你有什么可能像这样直接从数组中获取值。 $ val = $ _POST ['arr_date'],你必须使用isset()函数检查变量是否设置为这样。

if(isset($_POST['arr_date'])){
   $var = $_POST['arr_date'];
}

答案 4 :(得分:0)

尝试查看是否设置了帖子数据

<?php
 include 'database.php';
 $selected_date= "";//set select date to blank
 if(isset($_POST['arr_date']))
 {
     $selected_date= $_POST['arr_date'];
     $reponse = $bdd->query("SELECT * FROM live where arr_date='$selected_date'");

    while ($row = $reponse->fetch())
    {
    }//end of while
}
?>

如果条件

,我会使用我所做的事情
$selected_date= "";//set select date to blank
 if(isset($_POST['arr_date']){
     $selected_date= $_POST['arr_date'];
 }

答案 5 :(得分:0)

直接访问未定义的数组键(数组索引)会导致

  

“注意:未定义的索引:KEY_NAME”。

解决方案:

  1. 首先检查密钥是否存在isset($_POST['KEY'])

  2. 如果存在,请使用

  3. 代码:

    if (isset($_POST['KEY'])) {
        // use $_POST['key']
        };
    

答案 6 :(得分:0)

您的代码几乎是正确的,但您还需要编写验证,如下所示:

第一种方法:

<?php
 include 'database.php';

 $selected_date= isset($_POST['arr_date'])?$_POST['arr_date']:"";
 if(!empty($selected_date)){
 $reponse = $bdd->query("SELECT * FROM live where 
 arr_date='$selected_date'");

  while ($row = $reponse->fetch())
  {
    // Do your stuff here;
   }
 }
?>

第二种方法:

<?php
 include 'database.php';
 $selected_date= "";//set select date to blank
 if(isset($_POST['arr_date']))
 {
     $selected_date= $_POST['arr_date'];
     $reponse = $bdd->query("SELECT * FROM live where arr_date='$selected_date'");

    while ($row = $reponse->fetch())
    {

       // Do your stuff here;
       }
     }
?>