ftp
4 سال پیش توسط 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
@Rp76 4 سال پیش مطرح شد
0

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

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

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

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

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

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

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

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


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش آپدیت شد
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 4 سال پیش آپدیت شد
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
@Rp76 4 سال پیش مطرح شد
0

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

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

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

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


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

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


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

سلام دوباره

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

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

پس کد میشه

SELECT * FROM `automation_package` LIMIT 3 OFFSET 3

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


ftp
تخصص : ساده
@ftp 4 سال پیش مطرح شد
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 4 سال پیش مطرح شد
0

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


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

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

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

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

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

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

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