未定义的索引php数据库


Undefined index php database

尽管它仍然在数据库中放入一个值,但我一直收到workoutDate变量的未定义索引错误。我只是想摆脱这个错误,因为它很烦人。抱歉我说得太含糊了。

session_start();
include'connect.inc.php';
if(!isset($_POST['exercise']))
{
        showForm();
} 
    else
{
        processExercise();       
}
function showForm()
{
$self = htmlentities($_SERVER['PHP_SELF']);     
    echo("<form id='exerciseForm' action = '$self' method = 'POST'>
          <fieldset>
          <legend><strong>Exercise entry Form</strong></legend>");
    echo("<table border='1'>");
    echo("<tr><td>Workout name</td><td><select name = 'workoutName'><option value='cycling'>Cycling</option><option value='swimming'>Swimming</option><option value='running'>Running</option><option value='gym'>Gym</option></td></tr>    
          <tr><td>Date </td><td><input name = 'workoutDate' type='button' id='datepicker'  value = '".date('d-m-Y')."'/></td></tr>
          <tr><td>Duration (mins)</td><td><input name = 'workoutDuration' type = 'text' id = 'workoutDuration'></td></tr>      
          <tr><td>Distance (if appicable)</td><td><input name = 'workoutDistance' type = 'text' id = 'workoutDistance'></td></tr>  
          <tr><td>Comment</td><td><input name = 'workoutComment' type = 'text' id = 'workoutComment'></td></tr>
          ");
    echo("</tr>");
    echo("</table>");
    echo("<input type='submit' name='exercise' id ='exercise' value = 'Add exercise'>
          </fieldset>
          </form>");
}
function processExercise()
{
            var_dump(isset($_POST['workoutDate'])); 
        $workoutName = $_POST['workoutName'];
    $workoutDate = $_POST['workoutDate'];
    $workoutDuration = $_POST['workoutDuration'];
    $workoutDistance = $_POST['workoutDistance'];
    $workoutComment = $_POST['workoutComment'];
    $currentuserID = ($_SESSION['userID']);
    //strip slashes and tags
    //$workoutName = stripslashes($workoutName);
            $workoutName = mysql_real_escape_string($workoutName);
    $workoutName = strip_tags($_POST['workoutName']); 
    //$workoutDate = stripslashes($workoutDate);
            //$workoutDate = mysql_real_escape_string($workoutDate);
    //$workoutDate = strip_tags($_POST['workoutDate']);
    $workoutDuration = stripslashes($workoutDuration);
            $workoutDuration = mysql_real_escape_string($workoutDuration);
    $workoutDuration = strip_tags($_POST['workoutDuration']);
    $workoutDistance = stripslashes($workoutDistance);
            $workoutDistance = mysql_real_escape_string($workoutDistance);
    $workoutDistance = strip_tags($_POST['workoutDistance']);
    $workoutComment = stripslashes($workoutComment);
            $workoutComment = mysql_real_escape_string($workoutComment);
    $workoutComment = strip_tags($_POST['workoutComment']);

            if($workoutDate == "")
            {
                $workoutDate = date('Y-m-d');
            }
            $phpDate = strtotime($workoutDate);
            $date = date('Y-m-d',$phpDate);
            //Auto comment
            if($workoutComment == "")
            {                    
                $workoutComment = "Todays workout was $workoutName" ;                    
            }
    $insertQuery = "INSERT into workout (workoutName, workoutDate, workoutDuration, workoutDistance, workoutComment, userID)
                          values ('$workoutName', '$date', '$workoutDuration', '$workoutDistance', '$workoutComment', '$currentuserID')";
             $result = mysql_query($insertQuery);
            $count = mysql_insert_id();
    showForm();
}

Undefined index不是错误,而是警告

function processExercise()
{
    var_dump(isset($_POST['workoutDate'])); // first line 
    $workoutName = $_POST['workoutName']; // second line

现在考虑代码中的这两行。

如果第一行返回false,则表示未设置$_POST['workoutDate']。。在这种情况下,第二行将始终返回令人讨厌的警告Undefined index ...

简单的方法是使用这个函数error_reporting

error_reporting( E_WARNING );

此函数不会在脚本中显示任何警告。

另一种方法是在使用这样的变量之前使用函数CCD_ 5

$workoutDate = "";
if ( isset( $_POST['workoutDate'] ) ) {
    $workoutDate = $_POST['workoutDate'];
} else {
    $workoutDate = date('Y-m-d');
}

因此如果CCD_ 6被设置并且可用于使用。它将分配给$workoutDat,否则您可以分配一些默认值或生成一些错误/警告消息并中止操作。。和上面的情况一样,我们将date('Y-m-d');指定为默认值。

使用时检查变量是否设置

       if(!isset($workoutDate) && $workoutDate == "")
        {
            $workoutDate = date('Y-m-d');
        }
        $phpDate = strtotime($workoutDate);
        $date = date('Y-m-d',$phpDate);
        //Auto comment
        if(!isset($workoutComment) && $workoutComment == "")
        {                    
            $workoutComment = "Todays workout was $workoutName" ;
        }

将输入类型从button更改为text,即将type='button'更改为type='text',用于workoutDate输入字段,

使用<input name = 'workoutDate' type='text' id='datepicker' value = '".date('d-m-Y')."'/>'而不是<input name = 'workoutDate' type='button' id='datepicker' value = '".date('d-m-Y')."'/>

        if(!isset($workoutDate) && $workoutDate == "")
        {
            $workoutDate = date('Y-m-d');
        }