php搜索结果表的行为与原始表不同

pokxtpni  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(385)

我有一个员工表,我需要能够执行搜索功能,但是当我实现这个函数时,我被迫为结果创建另一个页面,所以我从原始页面复制了populate table代码,它工作得很好,只是我在表的外部3列中添加了按钮,这些按钮只在原始表中工作(在那里工作得很好),但是当我尝试使用结果页面中的按钮时,我会得到一个空白页面,上面只有我的html+css设计,没有任何输出,即使我为每个案例指定了一个输出-就像php代码没有运行一样-
注意:post请求不是问题,因为当它们是问题时,页面实际上什么都没有做(这是当时它所期望的)。
我将添加一个链接poth my pages php文件供任何人查看,如果需要更多信息,我将随时提供:)
https://drive.google.com/drive/folders/17wwscailbysmspupcuhddgiur74vap1d?usp=sharing
php文件使用相同的代码,只是它调用每个雇员,而不是其中的一些雇员。
我尝试添加employee.php的代码,但是有人说不需要。
调用此代码的表单存在于employee.php文件中,并且

<form action="searchEmp.php" method="post"> 
    <input type="text" name="search" value="">
    <input type="submit" name="search-btn" value="Search">
</form>

这是员工搜索的代码(有问题)::

if(isset($_POST['search-btn'])) {
        //  echo 'search btn pressed ';

         $search = mysqli_real_escape_string($con , $_POST['search']);
        // echo 'looking for : ' . $search ; 
         $sql =  "select * from employees where emp_fname like '%$search%' or emp_lname like '%$search%' or emp_email like '%$search%' or idNumber = '$search' or emp_phonenumber = '$search' " ; 
         $result = mysqli_query($con , $sql);
        //     echo 'result : ' . $result ; 
         $queryResult  = mysqli_num_rows($result);
        //   echo 'result : ' . $queryResult; 
         if($queryResult > 0 ){
        //    echo 'more than 0 results...' ;
        echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
        echo '<div class="table_" align="center">' ; 
        echo '<table style="font-family: arial; font-size: 15px;" border="1" cellpadding="1" align="center">';
        echo '<tr bgcolor="#009933">
                <th><b>ID</b></th>
                <th><b>First Name</b></th>
                <th><b>Last Name</b></th>
                <th><b>Phone Number</b></th>
                <th><b>Email</b></th>
                <th><b>Salary</b></th>
                <th><b>Status</b></th>
               </tr>';
            $i = 0 ;
        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($_POST['profile_btn'.$i])){
                // the profile btn has been pressed..
                ob_end_clean(); 
               $id = $_POST['id'.$i] ; 
               header("Location: profile.php?id=".$id) ;
               exit(); 
              //  printf("Location : " .$i) ;
               }

            if(isset($_POST['update_btn'.$i])){
                if(isset($_POST['check'.$i])){
                    $id = $_POST['id'.$i];
                    $fname  = $_POST['fname'.$i] ;
                    $lname = $_POST['lname'.$i];
                    $phone_number =  $_POST['phone_number'.$i];
                    $email = $_POST['email'.$i];
                    $salary =$_POST['salary'.$i] ;
                    $status =$_POST['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(isset($_POST['delete'.$i])){
             if($_POST['check'.$i]){

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

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

             }else{
            echo'please activate the check modify the data' ;
             } 
            }
            echo '</td>';

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

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

            echo '</table>';
            echo '</div>' ;
            echo '</form>' ;

         } else{
            echo 'no results..' ; 
         } 
    }

搜索页中的表按钮不起作用(表的最后三列按钮不能正常工作)。

kb5ga3dv

kb5ga3dv1#

解决方案:
只需在结果页的表单中添加一个隐藏的输入字段。

<input type="hidden" name="search-btn" value="Search">

现在,由于您不处理该字段,因此值无关紧要。
说明:
在结果页面的第一行,您正在检查 POST 字段 search-btn 如果找不到,则跳过整个代码块。
现在您的搜索结果页似乎可以工作了,因为发布请求的表单有一个名为 search-btn 所以效果不错。
但是当你试图从搜索结果中点击这个按钮时,数据会从它自己传递到它自己,也就是说,不会添加额外的数据。既然你没有命名这个字段 search-btn 在这种形式下,代码跳过了您编写的逻辑块,只显示一个空白页。

相关问题