php код ведет себя по-разному в зависимости от местоположения (индекс в таблице) - PullRequest
0 голосов
/ 31 мая 2018

программа представляет собой таблицу с тремя btns для каждой строки (обновление, профиль, удаление).

обновление и удаление btn работают отлично, но профиль btn не работает одинаково для всей таблицы :).

предполагается, что он перенаправляет пользователя на страницу профиля, но делает это только для первых трех строк и после этого не перенаправляет.

Я попытался добавить оператор printf, чтобы я знал, вызывается ли оператор if, и вызывается ли printf правильно, но строка перенаправления вообще не работает после индекса 3.

Я сейчас добавлю соответствующий код:

                while($row =mysqli_fetch_assoc($result)){
                echo '<tr>' ;

                echo '<td>'.'<input type="text" name="id'.$i.'" value="'.$row['emp_id'].'"/> '.'</td>';


                echo '<td>'.'<input type="text" name="fname'.$i.'" value="'.$row['emp_fname'].'" />'.'</td>';


                echo '<td>'.'<input type="text" name="lname'.$i.'" value="'.$row['emp_lname'].'" />'.'</td>';


                echo '<td>'.'<input type="text" name="phone_number'.$i.'" value="'.$row['emp_phonenumber'].'" >'.'</td>';


                echo '<td>'.'<input type="text" name="email'.$i.'" value="'.$row['emp_email'].'"/> '.'</td>';


                echo '<td>'.'<input type="text" name="salary'.$i.'" value="'.$row['emp_salary'].'"/> '.'</td>';


                echo '<td>'.'<input type="text" name="status'.$i.'" value="'.$row['emp_status'].'" />'.'</td>';

                echo '<td> <input type="submit" name="update_btn'.$i.'" value="update"/> ';

                echo '<td> <input type="submit" name="profile_btn'.$i.'" value="profile"/> ';

                if(isset($_GET['profile_btn'.$i])){
                    // the profile btn has been pressed..
                   header("Location: profile.php") ;
                   printf("Location : " . $i) ;


                }


                if(isset($_GET['update_btn'.$i])){
                    if(isset($_GET['check'.$i])){
                        $id = $_GET['id'.$i];
                        $fname  = $_GET['fname'.$i] ;
                        $lname = $_GET['lname'.$i];
                        $phone_number =  $_GET['phone_number'.$i];
                        $email = $_GET['email'.$i];
                        $salary =$_GET['salary'.$i] ;
                        $status =$_GET['status'.$i];


                        $updateStatus = "update employees set emp_fname ='$fname' , emp_lname='$lname' ,emp_phonenumber='$phone_number', emp_email='$email', emp_salary='$salary', emp_status='$status' WHERE emp_id = '$id' " ;

                        $qry = mysqli_query($con,$updateStatus);
                        if(!$qry){
                            echo 'failed to update...';
                        }else{
                            header("Location: employee.php");
                        }

                    }else{
                        echo'please activate the update modification options using the tick' ;
                    }
                }

                echo  '</td>';
                echo '<td>' ;
                echo ' <input type="submit" name="delete'.$i.'" value="delete"/> ';
                if($_GET['delete'.$i]){
                 if($_GET['check'.$i]){

                     $id = $_GET['id'.$i];

                     $delete = "delete from employees where emp_id = '$id'";
                     $query = mysqli_query($con,$delete);
                     if(!$query){
                         echo'delete faile';
                     }else{
                         header("Location: employee.php");
                     }

                 }
                }
                echo '</td>';

                echo '<td>' ;
                echo '<input type="Checkbox" name="check'.$i.'"  />' ;
                echo '</td>' ;

                echo'</tr>';
                $i++;
            }

проблема связана только с профилем btn и ничем иным.

весь файл находится здесь ::

https://drive.google.com/file/d/13gnoC5jhYfmi8vaJsJJs9KBvb61wQpoj/view?usp=sharing

1 Ответ

0 голосов
/ 31 мая 2018

Вы используете echo до header().

Чтобы исправить это, вы можете сделать что-то вроде этого.

<?php
ob_start( );
?>
<html>
some output
<?php
if ( $some_condition )
{
  ob_end_clean( );
  header( 'Location: http://www.google.com' );
  exit;
}
?>
some output
</html>
<?php
ob_end_flush( );
?>

См. это и это подробнее.

Вы также можете использовать AJAX для отправки идентификатора редактируемого профиля и перенаправления в зависимости от этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...