مقدمه

صفحه گذاری مفهوم محدود کردن تعداد ردیف های برگشت یافته در یک مجموعه ثبت شده به صفحات جداگانه و منظم است تا امکان جهت گیری آسان بین آنها فراهم شود ، بنابراین وقتی یک مجموعه داده بزرگ وجود دارد می توانید صفحه گذاری خود را پیکربندی کنید تا فقط تعداد مشخصی از ردیف ها را در هر صفحه برگردانید. به عنوان مثال ، وقتی یک فروشگاه اینترنتی هزاران محصول دارد، صفحه بندی می تواند با کاهش تعداد اقلام ذکر شده در یک صفحه ، از نمایش بیش از حد کالا به کاربران جلوگیری کند ، زیرا اغلب بعید است که کاربر نیاز به مشاهده همه محصولات داشته باشد. مثال دیگر برنامه ای است که سوابق یک تلفن همراه را نشان می دهد. فعال کردن صفحه بندی در چنین مواردی ، سوابق را به چندین صفحه تقسیم می کند که می توانند در صفحه بهتر ظاهر شوند. علاوه بر مزایای بصری برای کاربران نهایی ، صفحه بندی باعث می شود برنامه ها سریعتر شوند زیرا باعث می شود تعداد سوابق برگشتی همزمان کاهش یابد. این کار داده های لازم برای انتقال بین مشتری و سرور مجازی را محدود می کند و به حفظ منابع سرور مجازی مانند RAM کمک می کند. در این آموزش ، شما یک اسکریپت PHP برای اتصال به پایگاه داده خود و پیاده سازی صفحه بندی با اسکریپت خود با استفاده از بند LIMIT در MySQL ایجاد خواهید کرد. پیش نیازها قبل از شروع به موارد زیر نیاز خواهید داشت: ⦁ یک سرور مجازی Ubuntu .04 که با دنبال کردن دستور العمل راه اندازی سرور مجازی اولیه با اوبونتو .04 ، شامل یک کاربر غیر ریشه سودو راه اندازی شده باشد. ⦁ Apache ، MySQL و PHP که روی سیستم شما نصب شده باشند. شما می توانید راهنمایی در مورد نحوه نصب Linux ، Apache ، MySQL ، PHP (LAMP) روی Ubuntu .04 را در این لینک دنبال کنید. مرحله 1 - ایجاد کاربر دیتابیس و تست دیتابیس در این آموزش یک اسکریپت PHP ایجاد خواهید کرد که به یک پایگاه داده MySQL متصل می شود ، سوابق را دریافت میکند و آنها را در یک صفحه HTML در یک جدول نمایش می دهد. اسکریپت PHP را به دو روش مختلف از مرورگر وب خود آزمایش خواهید کرد. اول ، ایجاد یک اسکریپت بدون هیچ کد صفحه بندی برای دیدن نحوه نمایش سوابق. دوم ، افزودن کد ناوبری صفحه در فایل PHP برای درک نحوه کار به صورت عملی. کد PHP برای اهداف تصدیقی نیاز به یک کاربر MySQL و اتصال به یک بانک اطلاعاتی نمونه دارد. در این مرحله یک کاربر غیر ریشه برای پایگاه داده MySQL ، یک پایگاه داده نمونه و یک جدول برای تست اسکریپت PHP ایجاد خواهید کرد. برای شروع به سرور مجازی خود وارد شوید. سپس با دستور زیر به سرور مجازی MySQL خود وارد شوید: ⦁ $ sudo mysql -u root -p ⦁ رمز عبور اصلی سرور مجازی MySQL خود را وارد کرده و برای ادامه ENTER را بزنید. سپس اعلان MySQL را مشاهده می کنید. برای ایجاد یک بانک اطلاعاتی نمونه ، که در این آموزش به آن test_db خواهیم گفت ، دستور زیر را اجرا کنید: ⦁ Mysql> sudo mysql -u root -p ⦁ خروجی زیر را مشاهده خواهید کرد: Output Query OK, 1 row affected (0.00 sec) سپس ، یک test_user ایجاد کنید و به همه امتیازات مربوط به test_db را به کاربر اعطا کنید. PASSWORD را با یک مقدار قوی جایگزین کنید: ⦁ Mysql> GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'localhost' IDENTIFIED BY 'PASSWORD'; Output Query OK, 1 row affected (0.00 sec) ⦁ مجدد امتیازات MySQL را با دستور زیر لود کنید: ⦁ Mysql> FLUSH PRIVILEGES; ⦁ Output Query OK, 1 row affected (0.00 sec) سپس ، برای شروع مستقیم کار در پایگاه داده test_db ، به پایگاه داده test_db بروید: ⦁ Mysql> Use test_db; Output Database changed اکنون یک جدول products ایجاد کنید. جدول، محصولات نمونه شما را شامل میشود - برای این آموزش شما فقط به دو ستون برای داده ها نیاز دارید. ستون product_id به عنوان کلید اصلی برای شناسایی منحصر به فرد هر رکورد کار می کند. این ستون روی AUTO_INCREMENT تنظیم می شود تا محصول جدیدی را برای هر مورد درج شده تولید کند. شما می توانید از قسمت product_name برای تفکیک هر مورد با نام استفاده کنید: ⦁ Mysql> Create table products (product_id BIGINT PRIMARY KEY AUTO_INCREMENT, product_name VARCHAR(50) NOT NULL ) Engine = InnoDB; Output Query OK, 0 rows affected (0.02 sec) برای افزودن 10 محصول برای تست به جدول products عبارات SQL زیر را اجرا کنید: ⦁ Mysql> Insert into products(product_name) values ('WIRELESS MOUSE'); ⦁ ⦁ Mysql> Insert into products(product_name) values ('BLUETOOTH SPEAKER'); ⦁ ⦁ Mysql> Insert into products(product_name) values ('GAMING KEYBOARD'); ⦁ ⦁ Mysql> Insert into products(product_name) values ('320GB FAST SSD'); ⦁ ⦁ Mysql> Insert into products(product_name) values ('17 INCHES TFT'); ⦁ ⦁ Mysql> Insert into products(product_name) values ('SPECIAL HEADPHONES'); ⦁ ⦁ Mysql> Insert into products(product_name) values ('HD GRAPHIC CARD'); ⦁ ⦁ Mysql> Insert into products(product_name) values ('80MM THERMAL PRINTER'); ⦁ ⦁ Mysql> Insert into products(product_name) values ('HDMI TO VGA CONVERTER'); ⦁ ⦁ Mysql> Insert into products(product_name) values ('FINGERPRINT SCANNER'); ⦁ این خروجی را مشاهده خواهید کرد: Output Query OK, 1 row affected (0.02 sec) با اجرای دستور زیر تأیید کنید که محصولات وارد جدول شده اند: ⦁ Mysql> select * from products; محصولات موجود در خروجی را در دو ستون مشاهده خواهید کرد: Output +------------+-----------------------+ | product_id | product_name | +------------+-----------------------+ | 1 | WIRELESS MOUSE | | 2 | BLUETOOTH SPEAKER | | 3 | GAMING KEYBOARD | | 4 | 320GB FAST SSD | | 5 | 17 INCHES TFT | | 6 | SPECIAL HEADPHONES | | 7 | HD GRAPHIC CARD | | 8 | 80MM THERMAL PRINTER | | 9 | HDMI TO VGA CONVERTER | | 10 | FINGERPRINT SCANNER | +------------+-----------------------+ 10 rows in set (0.00 sec) از MySQLخارج شوید ⦁ Mysql> quit; • با استفاده از پایگاه داده نمونه ، جدول و داده های آزمایشی موجود ، اکنون می توانید اسکریپت PHP ایجاد کنید تا داده ها در یک صفحه وب نمایش داده شود. مرحله 2 - نمایش رکوردهای MySQL بدون صفحه بندی اکنون یک اسکریپت PHP ایجاد می کنید که به پایگاه داده MySQL که در مرحله قبل ایجاد کرده اید متصل می شود و محصولات را در یک مرورگر وب لیست می کنید. در این مرحله ، کد PHP شما بدون هیچگونه صفحه بندی اجرا خواهد شد تا نشان دهد که چگونه سوابق جدا نشده در یک صفحه نشان داده می شوند. اگرچه در این آموزش فقط ده رکورد برای اهداف آزمایش دارید ، اما دیدن سوابق بدون صفحه بندی نشان می دهد که چرا تقسیم بندی داده ها در نهایت باعث ایجاد یک تجربه کاربری بهتر و بار کمتر روی سرور مجازی خواهد شد. با دستور زیر فایل اسکریپت PHP را در روت document وب سایت خود ایجاد کنید: ⦁ $ sudo nano /var/www/html/pagination_test.php سپس محتوای زیر را به فایل اضافه کنید. به یاد داشته باشید که در مرحله قبل ، PASSWORD را با رمز عبور صحیحی که به test_user اختصاص داده اید ، جایگزین کنید: /var/www/html/pagination_test.php $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $sql = "select * from products"; $stmt = $pdo->prepare($sql); $stmt -> execute(); echo " ";while (($row = $stmt -> fetch(PDO::FETCH_ASSOC)) !== false) { echo "";echo ""; echo ""; echo ""; }echo "

".$row['product_id']." ".$row['product_name']."

"; } catch(PDOException $e) { echo $e->getMessage(); } ?> فایل را با فشار دادن CTRL + X ، Y و ENTER ذخیره کنید. در این اسکریپت شما با استفاده از کتابخانه PDO (PHP Data Object) با اعتبارات دیتابیس که در مرحله 1 ایجاد کرده اید به پایگاه داده MySQL وصل می شوید. PDO یک رابط کاربری سبک برای اتصال به پایگاه های داده است. لایه دسترسی به اطلاعات، قابل حمل تر است و می تواند در پایگاه های داده های مختلف و فقط با بازنویسی کد مینور کار کند. از آنجا که PDO از دستورات آماده پشتیبانی می کند (ویژگی برای اجرای سریعتر درخواست ها به روشی مطمئن)، از امنیت بیشتری نیز برخوردار است . سپس ، به APO PDO دستور می دهید تا عبارت select * from products را اجرا کند و محصولات را در جدول HTML بدون صفحه بندی فهرست کند. خط $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); تضمین می کند که انواع داده ها همانطور که در پایگاه داده ظاهر می شوند، بازگردانده می شوند. این بدان معنی است که PDO ، product_id را به عنوان یک عدد صحیح و product_name را به عنوان یک رشته باز می گرداند. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); به PDO دستور می دهد در صورت بروز خطا، به صورت استثنا عمل کند. برای اشکال زدایی آسان تر ، خطا را در داخل بلوک try{}.catch{} در PHP مشاهده می کنید. برای اجرای فایل اسکریپت PHP به صورت /var/www/html/pagination_test.php که ایجاد کرده اید ، آدرس زیر را که your-server-IP با آدرس IP عمومی سرور مجازی شما جایگزین شده، مشاهده کنید: http://your-server-IP/pagination_test.php صفحه ای را با جدول محصولات خود مشاهده خواهید کرد. اسکریپت PHP شما مطابق آنچه انتظار می رود کار می کند؛ تمام محصولات در یک صفحه لیست میشوند. اگر هزاران محصول داشتید ، این امر باعث می شود که یک حلقه طلانی ایجاد شود و محصولات از پایگاه داده گرفته شده و در صفحه PHP بارگیری شوند. برای غلبه بر این محدودیت ، اسکریپت PHP را تغییر داده و بند MySQL LIMIT و برخی پیوندهای navigation را در انتهای جدول قرار می دهید تا قابلیت صفحه بندی را اضافه کنید. مرحله 3 – اجرای صفحه گذاری با PHP در این مرحله هدف شما تقسیم داده های آزمایشی در چندین صفحه قابل کنترل است. این کار نه تنها باعث افزایش خوانایی می شود بلکه از منابع سرور مجازی نیز با کارایی بیشتری استفاده می کند. شما اسکریپت PHP را که در مرحله قبل ایجاد کرده اید برای تنظیم صفحه بندی اصلاح می کنید. برای این کار ، بند MySQL LIMIT را اجرا خواهید کرد. قبل از افزودن این متن به اسکریپت ، بیایید نمونه ای از دستور MySQL LIMIT را ببینید: ⦁ Mysql> Select [column1, column2, column n.] from [table name] LIMIT offset, records; ⦁ بند LIMIT دو آرگومان را همانند پایان این عبارت برمیدارد. مقدار افست (offset ) تعداد رکورد هایی است که باید قبل از ردیف اول از آن پرش کنید. records حداکثر تعداد سوابق را برای نمایش در هر صفحه تعیین می کند. برای آزمایش صفحه بندی ، سه رکورد در هر صفحه نمایش می دهید. برای به دست آوردن تعداد کل صفحات ، باید کل سوابق را از جدول خود با ردیف هایی که می خواهید در هر صفحه نمایش دهید تقسیم کنید. سپس با استفاده از عملکرد PHP Ceil ، همانطور که در مثال زیر کد PHP زیر نشان داده شده است ، مقدار حاصل را به نزدیکترین عدد صحیح گرد کنید: $ $total_pages=ceil($total_records/$per_page); در زیر نسخه اصلاح شده اسکریپت PHP با کد صفحه بندی کامل آمده است. برای درج کدهای صفحه بندی و ناوبری ، فایل /var/www/html/pagination_test.php را باز کنید: ⦁ $ sudo nano /var/www/html/pagination_test.php ⦁ سپس کد هایلایت شده زیر را به فایل خود اضافه کنید: /var/www/html/pagination_test.php $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); /* Begin Paging Info */ $page = 1; if (isset($_GET['page'])) { $page = filter_var($_GET['page'], FILTER_SANITIZE_NUMBER_INT); } $per_page = 3; $sqlcount = "select count(*) as total_records from products"; $stmt = $pdo->prepare($sqlcount); $stmt->execute(); $row = $stmt->fetch(); $total_records = $row['total_records']; $total_pages = ceil($total_records / $per_page); $offset = ($page-1) * $per_page; /* End Paging Info */ $sql = "select * from products limit :offset, :per_page"; $stmt = $pdo->prepare($sql); $stmt->execute(['offset'=>$offset, 'per_page'=>$per_page]); echo " ";while ( ($row = $stmt->fetch(PDO::FETCH_ASSOC) ) !== false) { echo "";echo ""; echo ""; echo ""; }echo "

".$row['product_id']." ".$row['product_name']."

"; /* Begin Navigation */ echo " ";echo "";if ($page-1 >= 1) { echo ""; }if ($page+1 <= $total_pages) { echo ""; }echo "";echo "

Previous Next

"; /* End Navigation */ } catch(PDOException $e) { echo $e->getMessage(); } ?> در فایل خود از پارامترهای دیگری برای اجرای صفحه بندی استفاده کرده اید: ⦁ $page: این متغیر صفحه فعلی را در اسکریپت شما نگه می دارد. هنگام حرکت بین صفحات ، اسکریپت شما با استفاده از متغیر $ _GET ['page'] یک پارامتر URL به نام page را بازیابی می کند. ⦁ $per_page: این متغیر حداکثر رکوردی را که می خواهید در هر صفحه نمایش داده شود ، در اختیار دارد. در مورد خاص شما ، بهتر است در هر صفحه سه محصول لیست کنید. ⦁ $ total_records: قبل از لیست کردن محصولات ، شما یک دستور SQL را برای دریافت تعداد کل سوابق در جدول هدف خود اجرا میکنید و آن را به عنوان متغیر $ total_records تعیین میکنید. ⦁ $ offset: این متغیر نشان دهنده کل سوابقی است که باید قبل از ردیف اول از آن بگذرید. این مقدار توسط اسکریپت PHP شما با استفاده از فرمول $ offset = ($ page-1) * $ per_page محاسبه می شود. ممکن است این فرمول را با پروژه های صفحه بندی PHP تطبیق دهید. به یاد داشته باشید که می توانید متغیر $ per_page را متناسب با نیاز خود تغییر دهید. به عنوان مثال ، اگر در حال اجرای یک وب سایت یا مقدار دیگری برای یک دستگاه تلفن همراه هستید ، ممکن است آن را به مقدار 50 تغییر دهید تا پنجاه مورد در هر صفحه نمایش داده شود. باین بار هم آدرس IP خود را در یک مرورگر ببینید و your_server_ip را با آدرس IP عمومی سرور مجازی خود جایگزین کنید: http://your_server_ip/pagination_test.php اکنون دکمه های navigation را در انتهای صفحه مشاهده خواهید کرد. در صفحه اول یک دکمه Previous دریافت نمی کنید. همین مورد در صفحه آخر نیز اتفاق می افتد و دکمه صفحه بعدی یعنی Next را نمی بینید. همچنین ، توجه داشته باشید که با مراجعه به هر صفحه ، چگونه پارامتر URL صفحه تغییر می کند. پیوندهای navigation در انتهای صفحه با استفاده از قطعه کد PHP زیر از فایل شما حاصل می شود: /var/www/html/pagination_test.php . . . if( $page-1>=1) { echo " Previous "; } if( $page+1<=$total_pages) { echo " Next "; } . . . در اینجا ، متغیر $page تعداد صفحه فعلی را نشان می دهد. سپس برای به دست آوردن صفحه قبلی ، کد ، 1 را از متغیر کم خواهد کرد. بنابراین ، اگر در صفحه 2 هستید ، فرمول (1-2) نتیجه 1 را به شما می دهد و این صفحه قبلی است که در لینک ظاهر می شود. با این حال به خاطر داشته باشید که در صورت نتیجه بالاتر یا برابر با 1 ، صفحه قبلی را نشان می دهد. به همین ترتیب ، برای رسیدن به صفحه بعد ، به متغیر $page عدد 1 را اضافه می کنید و همچنین باید اطمینان حاصل کنید که نتیجه $page که به پارامتر URL صفحه اضافه می کنیم از کل صفاتی که در کد PHP محاسبه کرده اید بیشتر نباشد. در این مرحله ، اسکریپت PHP شما با صفحه بندی کار می کند و شما قادر به اجرای بند MySQL LIMIT برای navigation بهتر رکورد هستید. نتیجه در این آموزش ، صفحه بندی را در MySQL با PHP در سرور مجازی اوبونتو .04 پیاده سازی کردید. شما می توانید با استفاده از اسکریپت PHP از این مراحل با یک مجموعه رکورد بزرگتر استفاده کنید تا صفحه بندی را انجام دهید. با استفاده از صفحه بندی در وب سایت یا برنامه خود می توانید navigation بهتر کاربر و استفاده بهینه از منابع را در سرور مجازی خود ایجاد کنید. از این لینک ها می توانید بهینه سازی بیشتری برای بانک اطلاعاتی و سایر کارهای پایگاه داده خود انجام دهید: ⦁ نحوه بهینه سازی MySQL با Query Cache در اوبونتو ⦁ .04 ⦁ مقدمه ای بر درخواست ها در MySQL ⦁ نحوه رفع مشکلات در MySQL   از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید : نحوه تایید صحت رمز عبور با Apache در اوبونتو .04 نحوه نصب و استفاده از TimescaleDB در CentOS 7 نحوه تایید صحت رمز عبور با Apache در اوبونتو .04 (شروع سریع) نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10 نحوه نصب و استفاده ازRadamsa برای فوز کردن برنامه ها (تکنیک تست خودکار نرم افزار) و خدمات شبکه روی Ubuntu .04 نحوه نصب Docker Compose در Debian 10 چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو .04 نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7 بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose در اوبونتو .04 نحوه بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16.04 نحوه استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو .04 چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو .04 تنظیم کرد (شروع سریع) چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی خود استفاده کرد نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو .04 نحوه تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes در vpsgol با استفاده از Velero نحوه نصب و استفاده از PostgreSQL در CentOS 7 چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو .4 تنظیم کرد نحوه استقرار و مدیریت DNS با استفاده از DNSControl در Debian 10 چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7 تنظیم کرد کلمات کلیدی خرید سرور خرید vpsخرید سرور مجازیخرید سرورسرور هلندفروش vpsسرور مجازی آمریکاخریدvpsسرور مجازی هلندفروش سرور مجازیسرور آمریکاvpsسرور مجازی انگلیسسرور مجازی آلمانسرور مجازی کاناداخرید vps آمریکاخرید وی پی اسسرورخرید سرور مجازی هلندvps خریدسرور مجازی فرانسهسرور مجازی هلندخرید vps آمریکاخرید سرور مجازی هلندخرید وی پی اسخرید vps هلندخرید vps فرانسه

نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد

نحوه نصب Docker Compose در Debian 10

، ,صفحه ,⦁ ,یک ,mysql ,php ,⦁ mysql ,product name ,صفحه بندی ,اسکریپت php ,را در ,into products product ,attr emulate prepares ,emulate prepares false ,ceil total records

مشخصات

تبلیغات

آخرین ارسال ها

برترین جستجو ها

آخرین جستجو ها

وبلاگ سایت مصاحب علم روز تابلوسازی اصفهان برق ساختمان ، برق قدرت سگ پامرانین وارداتی 09124040030 امامی دانلود جزوه جدید ترین نمونه سوالات آرایشگر ناخن فنی حرفه ای (ثابت شده) مطیع وبلاگ ساری آموزش زبان دکتری ای پی تی