راکت
ftp
ftp
توسط ftp مطرح شد
حل
9 پاسخ

paginate کردن api در php

@mohaligateway
@AliValinejad
@hesammousavi
@ali.bayat
@eniack

$this->db->select('
                a.reservation_id,
                b.airline_id,
                city1.code departure_city_code,
                airline.name airline_name');
            $this->db->from('reservation AS a');
            $this->db->join('airline', 'airline.airline_id = b.airline_id');
            $this->db->where('c.mobile', $mobile);
            $this->db->where('a.status', 1);
            $this->db->where_in('a.payment_status', array('2','3'));
            $result['rows'] = $this->db->get()->result_array();
            $count = count($result['rows']);
        echo json_encode($result, JSON_PRETTY_PRINT);

من میخوام برای خروجی json بالا paginate بنویسم میشه راهنمایی کنید


ثبت پرسش جدید
رضا پارسیان
رضا پارسیان
تخصص :توسعه دهنده Php , Laravel
@Rp765 سال پیشمطرح شد
0

سلام من حال نداشتم کدت رو بخونم

ولی من اینکارو میکنم

$of = isset($_POST['page']) ? ((int) $_POST['page']) * 15 : '0';

  $sql = "SELECT * from posts order by id DESC LIMIT 15 offset $of";

فریبرز شالقونی پور
فریبرز شالقونی پور
تخصص :طراح و برنامه نویس حوضه وب
@fariborz00155 سال پیشمطرح شد
0

اگر لاراوله که داده هاتو بریز تو یه متغیر و به شکل زیر return کن :

return response($data->paginate(conut_of_rows),200);

در غیر این صورت این پکیج کمکت میکنه


moha li
moha li
تخصص :توسعه دهنده لاراول و Vue
@mohaligateway5 سال پیشمطرح شد
0

سلام
از این پکیج می تونید استفاده کنید.
اگر هم می خواهید می تونید از این کد های pdo استفاده کنید.
@ftp

<?php

use Pagination\Pager;

// Create your PDO connection object $pdo = new \PDO("mysql:host=localhost;port=3306;dbname=testdb", 'root', 'r00t');

// Initiate your pager $p = new Pager($pdo, "SELECT * FROM users");

// Set you page URL $p->setPageUrl("http://localhost/users");

// Set your per page limit $p->setPerPage(10);

$dataRecords = $p->paginate()->data;

foreach($dataRecords as $data) {

echo $data->id.' '.$data->first_name.' '.$data->last_name.'<br />';
}

if(isset($p->paginate()->firstLink)) {

echo "<a href='{$p->paginate()->firstLink}'> << </a> | ";
}

if(isset($p->paginate()->backLink)) {

echo "<a href='{$p->paginate()->backLink}'> < </a>";
}

echo "[{$p->paginate()->currentPage}]";

if(isset($p->paginate()->nextLink)) {

echo "<a href='{$p->paginate()->nextLink}'> > </a> | ";
}

if(isset($p->paginate()->lastLink)) {

echo "<a href='{$p->paginate()->lastLink}'> >> </a>";
}

for JSON
header('Content-Type: application/json'); echo $p->paginateJSON();

ftp
ftp
تخصص :ساده
@ftp5 سال پیشمطرح شد
0

@fariborz0015
@mohaligateway
@AliValinejad
@eniack
@ali.bayat
از پکیج نمیخوام استفاده کنم اگه میشه فقط بگید چطوری در این کد جاگذاری کنم راستی به صورت json هست

$this->db->select('
                a.reservation_id,
                airline.logo,
                city1.code departure_city_code,
                city2.code arrival_city_code,
                b.date,
                airline.name airline_name');
            $this->db->from('reservation AS a');
            $this->db->join('ticket as b', 'b.ticket_id = a.ticket_id');
            $this->db->join('customer as c', 'c.customer_id = a.customer_id');
            $this->db->join('airline', 'airline.airline_id = b.airline_id');
            $this->db->join('city as city1', 'city1.city_id = b.departure_city_id');
            $this->db->join('city as city2', 'city2.city_id = b.arrival_city_id');
            $this->db->join('reservation_reply as r', 'r.reservation_id = a.reservation_id');
            $this->db->where('c.mobile', $mobile);
            $this->db->where('a.status', 1);
            $this->db->where_in('a.payment_status', array('2','3'));
            $result['rows'] = $this->db->get()->result_array();
            echo json_encode($result, JSON_PRETTY_PRINT);

رضا پارسیان
رضا پارسیان
تخصص :توسعه دهنده Php , Laravel
@Rp765 سال پیشمطرح شد
0

سلام وقتتون بخیر!

اگر از لاراول استفاده میکنید

Model::paginate();
Model::where()->paginate();

اگر php خام هست باید از limit استفاده کنید داخل کد sql که میزنید.


ftp
ftp
تخصص :ساده
@ftp5 سال پیشمطرح شد
0

@Rp76
اخه اگه بخوام از limit استفاده کنم نمیتونم وقتی خواستم ۵تا بعدی رو ببینم یا ۵ تا قبلی رو ببینم
میشه یک مثال بیارید من هر مثالی رو دیدم به دردم نخورد


رضا پارسیان
رضا پارسیان
تخصص :توسعه دهنده Php , Laravel
@Rp765 سال پیشمطرح شد
0

سلام دوباره

برای استفاده از limit به offset هم نیاز دارید که به تریتب این کار رو براتون انجام میده.

محدود کردن نمایش
شروع کرد ردیف ها

پس کد میشه

SELECT * FROM `automation_package` LIMIT 3 OFFSET 3

کد بالا نتیجه اش میشه ۳ تا ردیف از جدول که id از 1 نیست از 3 شروع شده چرا که ۳ تاش رو با دستور offset حذف کردیم به اصطلاح


ftp
ftp
تخصص :ساده
@ftp5 سال پیشمطرح شد
0

@Rp76
من به این شکل قرار دادم اما باز مشکل داره

   $page=$_GET['page'];
            $offset=5;
            if($page=="" || $page=="1"){
                $page1=0;
            }else{
                $page1=($page*5)-5;
            }
            $this->db->select('
                a.reservation_id,
                airline.logo,
                city1.code departure_city_code,
                city2.code arrival_city_code,
                b.date,
                airline.name airline_name');
            $this->db->from('reservation AS a');
            $this->db->join('ticket as b', 'b.ticket_id = a.ticket_id');
            $this->db->join('customer as c', 'c.customer_id = a.customer_id');
            $this->db->join('airline', 'airline.airline_id = b.airline_id');
            $this->db->join('city as city1', 'city1.city_id = b.departure_city_id');
            $this->db->join('city as city2', 'city2.city_id = b.arrival_city_id');
            $this->db->join('reservation_reply as r', 'r.reservation_id = a.reservation_id');
            $this->db->where('c.mobile', $mobile);
            $this->db->where('a.status', 1);
            $this->db->where_in('a.payment_status', array('2','3'));
//                $this->db->limit($page1);
            $this->db->limit($page1,1);
            $result['rows'] = $this->db->get()->result_array();
            $count = count($result['rows']);
            for ($i = 0; $i < $count; $i++) {
                  //$result['rows'][$i]['file_name'] =base_url('download/get/'.$result['rows'][$i]['file_name'].DIRECTORY_SEPARATOR.$result['rows'][$i]['file_ext'].'/r');
                  $result['rows'][$i]['date'] = $this->jalalidate->date('Y/m/d H:i:s',  $result['rows'][$i]['date']);
//                    $result['rows'][$i]['ts'] = $this->jalalidate->date('Y/m/d H:i:s',  $result['rows'][$i]['ts']);
            }
            $result['status'] = 200;
            $result['type'] = 'success';
        } else {
            $result['status'] = 401;
            $result['type'] = 'Unauthorized';
            $result['message'] = 'Wrong OTP.';
        }
       // header('Content-Type: ' . get_mime_by_extension(".json"));
        echo json_encode($result, JSON_PRETTY_PRINT);
        $a=$count/$offset;
        $a=ceil($a);
//            echo $count."--".$a;
        echo "<br>";
        for($b=1;$b<=$a;$b++){
            echo "<a href='orderList_All?page={$b}' style='text-decoration: none'>Link{$b}\n</a>";
        }

ftp
ftp
تخصص :ساده
@ftp5 سال پیشمطرح شد
0

@Rp76
اقا رضا میشه یک راهنمایی کنی من انجام دادم نشد میخوام لینک صفحات رو هم نمایش بده


رضا پارسیان
رضا پارسیان
تخصص :توسعه دهنده Php , Laravel
@Rp765 سال پیشمطرح شد
0

سلام من حال نداشتم کدت رو بخونم

ولی من اینکارو میکنم

$of = isset($_POST['page']) ? ((int) $_POST['page']) * 15 : '0';

  $sql = "SELECT * from posts order by id DESC LIMIT 15 offset $of";

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام