簡體   English   中英

如何讓分頁在 PHP 中拋出 csv 文件?

[英]How can I make Pagination throw csv file in PHP?

我有一個 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++;
                    }                                                          
                }

獲取: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;
        }
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM