未定义的偏移误差

时间:2013-02-11 10:09:15

标签: php html forms button

我希望以表格和行格式显示从mysql检索到的值。 所以我使用了以下代码。

<?php 
  while($rows1 = mysql_fetch_array($result1)){ 
?>
<tr height="30" > 
<?php $elyid = $rows1['id'] ?>
  <form action="leaveactions.php" method="post" name="viewleave">
   <td width="82"><?php echo $rows1['empid'];?></td>
   <td><?php echo $rows1['name'];?></td>
   <td><?php echo $rows1['leavetype'];?></td>
   <td width="82"><?php echo $rows1['startdate']; ?></td>
   <td width="82"><?php echo $rows1['enddate']; ?></td>
   <td><?php echo $rows1['leavetype']; ?></td>
   <td>
     <input type="submit" name="<?php $rows1['id']; ?>" value="accept"/>
   </td>
   <td>
     <input type="submit" name="reject" value="reject"/>
     <input type="hidden" name="emplid" value="<?php echo $rows1['id'] ?>"/>
   </td>
</tr>
<?php       } ?>

和leaveactions.php

$ii=0;
$query1 = "select * from applied_leaves where supervisorid ='".$employeeId."' and status='not approved'";
$result1 = mysql_query($query1) or die (mysql_error());
$num1 = mysql_numrows($result1);

while($rows1 = mysql_fetch_array($result1)) {
  $ii++;
  echo $_POST["$ii"];
  if(isset($_POST['$ii'])){
    echo "accepted "; echo $_POST['$ii'];
    $updateEmp = "update applied_leaves set status='".$accept."' where id='$ii' " ;
    $uresult = mysql_query($updateEmp) or die (mysql_error());
    if($uresult != null){
      echo "Assignment Added successfully<br>";
?>
      <a href="updateassignment.php">View Added Details</a>
<?php                       
    } else {
      echo "error";
    }
  }
}
?>

但是当我跑步时

 Notice: Undefined offset: 1
 Notice: Undefined offset: 2
.
.
.
.
.
.
像那样。 请帮我解决问题。 在此先感谢

修改

导致异常的新代码是

                     $iii=0;
                while($rows1 = mysql_fetch_array($result1))
                {
                  $iii++;

                if(  $_POST["accpt".$iii] ) { 

                  echo "accepted "; 
                  $updateEmp = "update applied_leaves set status='".$accept."' where id='$iii' " ;
                  $uresult = mysql_query($updateEmp) or die (mysql_error());
                  if($uresult != null){
                        echo "Assignment Added successfully<br>";
                        ?>
                        <a href="updateassignment.php">View Added Details</a>
                        <?php   break;                  
                    }

                }

                }

2 个答案:

答案 0 :(得分:1)

我认为你的主要错误在于:

<input type="submit" name="<?php $rows1['id']; ?>" value="accept"/>

这里不回显$rows1['id'],所以如果查看生成的代码,名称应为空。

将此更正为

<input type="submit" name="<?php echo $rows1['id']; ?>" value="accept"/>

此外,在leaveactions.php中,您有以下代码:

// ...
echo $_POST["$ii"];
if(isset($_POST['$ii'])){
  echo "accepted "; echo $_POST['$ii'];
// ...

在执行输出之前,您应先检查变量(此处为$_POST[$ii] - 否"是否需要)。

由于上一个错误,$_POST[$ii]未设置,因此您会在第一个echo上收到通知,之后再也不会输入if - 子句。

答案 1 :(得分:0)

这是因为您尝试访问的阵列位置为空(不可用)。使用isset方法检查数组位置是否存在。

if( isset( $array['position'] )
{
  //position exists
}

请勿在此处发布您的代码。粘贴与错误相关的行。至少尝试评论发生错误的行。