2013-02-11 2 views
-2

Я хочу отображать значения, полученные из mysql в формах и в формате строки за строкой. Итак, я использовал следующий код.undefined offset error

<?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 
. 
. 
. 
. 
. 
. 

подобное. Пожалуйста, помогите мне решить проблему. Заранее спасибо

EDIT

новый код, который вызывает исключение составляет

     $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

+0

, но, удаляя я не получаю ошибку, также вещи, которые нужно сделать, когда кнопка нажата, также не вызывается. – krishna

+0

Я ссылаюсь на вызов в 'leaveactions.php'. Для меня это похоже только на отладочное сообщение. Но вы делаете это, прежде чем на самом деле проверить, установлена ​​ли переменная (что вы делаете на следующей строке ...). – Sirko

ответ

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-then after.

+0

спасибо.после установки эха в имени, он работает хорошо, но когда форма вызывается с помощью имени кнопки 2, тогда она выдает ошибку, что неопределенное смещение 1. – krishna

+0

@krishna Вот что я имею в виду все время и во втором блоке этого ответ. * Удалите * 'echo $ _POST [$ ii]' перед предложением 'if (isset())'! – Sirko

+0

Я удалил его перед тем, как внести изменения. Но ошибка, вызванная isset ($ _ POST ['$ ii']), поскольку она находится в цикле while, когда она встречается с isset ($ _ POST [1]), она показывает ошибку. – krishna

0

Это потому, что позиция массива вы пытаетесь получить доступ к пустой (не доступен). Проверьте, существует ли позиция массива с использованием метода isset.

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

Просто не размещайте свой код здесь. Вставьте строку, относящуюся к ошибке. По крайней мере, попробуйте прокомментировать строку, где произошла ошибка.

+0

, но вызывает все кнопки в форме и обновляет все значения вместо строк, соответствующих только этой кнопке. – krishna

Смежные вопросы