尽管它仍然在数据库中放入一个值,但我一直收到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');
}