为了账号安全,请及时绑定邮箱和手机立即绑定

如何让分页在 PHP 中抛出 csv 文件?

如何让分页在 PHP 中抛出 csv 文件?

PHP
慕码人8056858 2021-10-15 10:30:09
我有一个 csv 文件,里面有一些数据。当用户在搜索栏中键入内容时,它会返回相关数据但这些结果太多,我想分页。我不知道,google了很多但找不到方法。请帮忙。$filename = "Database.csv";            $delimiter = ",";            if (!file_exists($filename) || !is_readable($filename))                return false;            if ($delimiter == ',') {                $csv = array_map('str_getcsv', file($filename));            } else {                $lines = file($filename);                $line_num = count($lines);                $dm = [];                $csv = array_map('str_getcsv', $lines, array_pad($dm, $line_num, $delimiter));            }            array_walk($csv, function (&$row) use ($csv) {                $row = array_combine($csv[0], $row);            });            array_shift($csv);            $total_row_of_csv = count($csv);            $total_row = 0;            for ($i = 0; $i < $total_row_of_csv; $i++) {                if (preg_match("/$value/i", $csv[$i]['Catagory'])) {                                                                               echo "<tr>";                        echo "<td>" . $csv[$i]['Ref'] . "</td>";                        echo "<td>" . $csv[$i]['Catagory'] . "</td>";                        echo "<td>" . $csv[$i]['JobTitle'] . "</td>";                        echo "<td>" . $csv[$i]['Description'] . "</td>";                        echo "<td>" . $csv[$i]['Salary'] . "</td>";                                                echo "<td>" . $csv[$i]['Nature'] . "</td>";                        echo "</tr>";                                            $total_row++;                    }                                                                          }
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

获取:index.php?page=2&search=purchasing


清除 page=1 以进行新搜索


这个功能是用get方法完成的,而不是post,你可以通过适当的方式来做post


<?php 

            // you can make this as post as you want

            // i have made this as a get param function


            $value = !empty($_GET['search']) ? $_GET['search'] : '';

            $filename = "Database.csv";

            $delimiter = ",";

            if (!file_exists($filename) || !is_readable($filename))

                return false;


            if ($delimiter == ',') {

                $csv = array_map('str_getcsv', file($filename));

            } else {

                $lines = file($filename);

                $line_num = count($lines);

                $dm = [];


                $csv = array_map('str_getcsv', $lines, array_pad($dm, $line_num, $delimiter));

            }


            array_walk($csv, function (&$row) use ($csv) {

                $row = array_combine($csv[0], $row);

            });


            array_shift($csv);

            $total_row_of_csv = count($csv);

            $countForPage = 0;

            for ($i = 0; $i < $total_row_of_csv; $i++) {

                    //var_dump($csv[$i]['Catagory']);die();

                    // didint get the $value so commented id

                    if (preg_match("/$value/i", $csv[$i]['Catagory'])) { 

                        $countForPage ++;

                    }

            }

            $countForPage;


            $numPerPage = 10;

            $numCurrPage = !empty($_GET['page']) ? $_GET['page'] : 1;

            $numFromCnt = $numPerPage * ($numCurrPage - 1);

            $numLastCnt = $numFromCnt + $numPerPage ;




            $total_row = 0;

            echo "<table>";

            for ($i = 0; $i < $total_row_of_csv; $i++) {


                    //var_dump($csv[$i]['Catagory']);die();

                    // didint get the $value so commented id

                    if (preg_match("/$value/i", $csv[$i]['Catagory'])) { 

                        //echo $total_row .">=". $numFromCnt ."&&". $total_row ."<". $numLastCnt; //die();

                        if($total_row >= $numFromCnt && $total_row < $numLastCnt) {                                                      

                        echo "<tr>";

                        echo "<td>" . $csv[$i]['Ref'] . "</td>";

                        echo "<td>" . $csv[$i]['Catagory'] . "</td>";

                        echo "<td>" . $csv[$i]['JobTitle'] . "</td>";

                        echo "<td>" . $csv[$i]['Description'] . "</td>";

                        echo "<td>" . $csv[$i]['Salary'] . "</td>";                        

                        echo "<td>" . $csv[$i]['Nature'] . "</td>";

                        echo "</tr>";                    


                     } 

                     $total_row++;

                    }


                }

                //echo $total_row;die();


            echo "</table>";


            $links = generateLinks($countForPage, $numCurrPage, $numPerPage, $value);


            echo $links;


        function generateLinks($total_row_of_csv, $numCurrPage, $numPerPage, $search){

            $pagLink = '';

            if($numCurrPage > 1) {

                $pagLink .= "<li class='active'><a href='csv_pagination.php?page="

                                                .($numCurrPage-1)."&search=".$search."'>Prev</a></li>";

            }

            // for ($i=1; $i<=$total_row_of_csv; $i++) { 

            //     if ($i==$numCurrPage) { 

            //         $pagLink .= "<li class='active'><a href='csv_pagination.php?page="

            //                                     .$i."'>".$i."</a></li>"; 

            //     } else  { 

            //         $pagLink .= "<li><a href='csv_pagination.php?page=".$i."'> 

            //                                     ".$i."</a></li>";   

            //     } 

            // } 


            if($numCurrPage < ($total_row_of_csv/$numPerPage)) {

                $pagLink .= "<li class='active'><a href='csv_pagination.php?page="

                                                .($numCurrPage+1)."&search=".$search."'>Next</a></li>";

            }

            return $pagLink;

        }

?>


查看完整回答
反对 回复 2021-10-15
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信