2013-11-21 102 views
0

我一直在为workoutDate变量收到未定义的索引错误,即使它仍将值放入数据库中。我只是想摆脱这个错误,因为它很烦人。对不起,如果我太模糊。从button未定义的索引php数据库

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(); 
} 
+1

尝试使用mysqli_ *函数或PDO –

+0

错误是在行104 – user3016302

+0

重复的[参考 - 这是什么意思在PHP?](http://stackoverflow.com/questions/12769982/reference-what-does - 这是错误的意思,在PHP中)和[这里的答案](http://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php/12770836#12770836)你正在寻找。 – Leri

回答

0

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); 

此功能不会在您的脚本中显示任何警告。

,另一个办法是使用这样的变量

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

所以如果$_POST['workoutDate']设置和可用使用前使用的功能isset。它将分配给$workoutDat否则您可以分配一些默认值或生成一些错误/警告消息并中止操作。与上述情况类似,我们将date('Y-m-d');指定为默认值。

0

变更输入型成texttype='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'); 
     } 
0

检查变量被设置,或者在使用它

 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" ; 
     }