2013-02-11 95 views
-2

我想要显示从表单和逐行格式的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;     
        } 

       } 

       } 
+0

尝试丢弃第一个'echo $ _POST [“$ ii”];'命令。假设这是通知的正确路线。 – Sirko 2013-02-11 10:11:14

+0

但通过删除我没有得到错误,也是当按钮被点击时需要做的事情也不会被调用。 – krishna 2013-02-11 10:12:54

+0

我指的是'leaveactions.php'中的调用。对我来说,它看起来只是一个调试信息。但是,在你真正检查之前,你是这样做的,变量是否已设置(你在下一行中做了什么......)。 – Sirko 2013-02-11 10:14:34

回答

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 -clause。

+0

谢谢。在名字中设置echo之后,它运行良好,但是当按钮名称2调用表单时,它会抛出错误,表示未定义的偏移量为1. – krishna 2013-02-11 11:07:15

+0

@krishna这就是我所指的整个时间,在这个第二块回答。 *在if(isset())'子句之前删除'echo $ _POST [$ ii]'! – Sirko 2013-02-11 11:09:11

+0

我在进行更改之前删除了它,但是由于isset($ _ POST ['$ ii'])导致的错误,因为它在while循环中时遇到isset($ _ POST [1]),它显示错误。 – krishna 2013-02-11 11:14:38

0

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

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

只是不要在这里发布您的代码。粘贴与错误相关的行。至少尝试评论发生错误的行。

+0

,但调用窗体中的所有按钮并更新所有值,而不是仅对应于该按钮的行。 – krishna 2013-02-11 10:24:56