متن خبر

آرایه های پی اچ پی در عمل: نحوه بازسازی پروژه کارت های تیم فوتبال با PHP و MongoDB

آرایه های پی اچ پی در عمل: نحوه بازسازی پروژه کارت های تیم فوتبال با PHP و MongoDB

شناسهٔ خبر: 573277 -




این قسمت دوم کتاب راهنمای آرایه پی اچ پی من است. شما می توانید بخش اول را اینجا پیدا کنید ، جایی که من اصول اولیه آرایه را پوشش می دهم.

در قسمت اول با آرایه ها، نحوه ایجاد آرایه، توابع آرایه و نحوه حلقه زدن آرایه ها آشنا شدید.

این قسمت دوم به شما یاد می دهد که چگونه از PHP و MongoDB برای بازسازی پروژه کارت های تیم فوتبال برنامه درسی جاوا اسکریپت به روز شده freeCodeCamp استفاده کنید.

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

این به شما کمک می کند تا از آنچه در مورد حلقه زدن از طریق آرایه ها یاد گرفته اید، استفاده کنید. از این گذشته، در بسیاری از مواقع، آنچه را که از یک پایگاه داده یا یک API به دست می آورید، نه لزوماً برخی از آرایه های کدگذاری شده را تحلیل می کنید.

برای اینکه با پرش مستقیم از آرایه‌ها به پایگاه‌های اطلاعاتی شما را شوکه نکنیم، ابتدا با چیستی داده‌ها و پایگاه‌های داده شروع می‌کنیم و سپس به یادگیری این موارد می‌پردازیم:

پایگاه داده های رابطه ای در مقابل غیر رابطه ای

نحوه استفاده از MongoDB Atlas

نحوه نصب MongoDB برای PHP در مک

نحوه راه اندازی MongoDB Atlas

چگونه یک برنامه CRUD با PHP و MongoDB Atlas بسازیم

و در نهایت نحوه بازسازی پروژه کارت های تیم فوتبال با PHP و MongoDB Atlas

پیش نیازها

برای به دست آوردن بهترین نتیجه از این راهنما، به شما پیشنهاد می‌کنم اطلاعات اولیه‌ای در مورد موارد زیر داشته باشید:

اصول PHP (متغیرها، آرایه ها، توابع، حلقه ها)

HTML و CSS

رویدادهای جاوا اسکریپت

خط فرمان

آهنگساز

نحوه راه اندازی یک محیط توسعه PHP با VS Code

پایگاه های داده

MongoDB Atlas

Git و GitHub

فهرست مطالب

داده ها و پایگاه های داده چیست؟

پایگاه های داده رابطه ای در مقابل غیر رابطه ای

MongoDB Atlas – نمونه ای از یک پایگاه داده غیر رابطه ای

نحوه نصب MongoDB برای PHP

مرحله 1: برنامه گفت نی MongoDB را با PECL (کتابخانه انجمن برنامه گفت نی PHP) نصب کنید

مرحله 2: فایل php.ini را طوری تغییر دهید که افزونه MongoDB را شامل شود

مرحله 3: نصب برنامه گفت نی MongoDB را تأیید کنید

مرحله 4: یک خوشه Atlas MongoDB را راه اندازی کنید

مرحله 5: کتابخانه PHP MongoDB را نصب کنید

عملیات CRUD با استفاده از PHP و MongoDB

مرحله 1: کتابخانه MongoDB و بسته Dotenv را نصب کنید

مرحله 2: یک فایل .env برای اعتبار MongoDB Atlas URI خود ایجاد کنید

مرحله 3: یک فایل اتصال پایگاه داده ایجاد کنید

مرحله 4: قسمت READ از CRUD

مرحله 5: CREATE بخشی از CRUD

مرحله 6: UPDATE بخشی از CRUD

مرحله 7: قسمت DELETE از CRUD

پروژه: نحوه استفاده از PHP برای بازسازی کارت های تیم فوتبال پروژه برنامه درسی جاوا اسکریپت به روز شده

مرحله 1: MongoDB Atlas را راه اندازی کنید

مرحله 2: Project Dependencies را با Composer نصب کنید

مرحله 3: فایل های پروژه ایجاد کنید

مرحله 4: برچسب select را در یک عنصر form قرار دهید

مرحله 5: منطق واکشی بازیکنان فوتبال از مجموعه footballers را ایجاد کنید

مرحله 6: منطق فیلتر کردن بازیکنان فوتبال بر اساس موقعیت را ایجاد کنید

مرحله 7: نمایش بازیکنان در صفحه بر اساس موقعیت انتخاب شده

بسته بندی

داده ها و پایگاه های داده چیست؟

داده ها برای تقریباً همه چیز در دنیای مدرن مرکزی هستند. افرادی که در رسانه‌های اجتماعی و سایر وب‌سایت‌ها می‌بینید، محتوایی که پست می‌کنند، نظراتی که به پست‌ها اضافه می‌کنند و بسیاری از فعالیت‌های آنلاین دیگر، همگی داده‌های زیادی تولید می‌کنند. حتی پرونده های بیمار در بیمارستان یا فهرست حقوق و دستمزد یک شرکت که روی سرور محلی میزبانی می شود، داده است. لازم نیست داده ها در اینترنت باشند.

برای مدیریت موثر و استفاده از داده ها برای رشد، به یک پایگاه داده نیاز دارید. پایگاه داده مجموعه ای ساختار یافته از داده ها است که به شما کمک می کند آن داده ها را به طور موثر ذخیره، بازیابی و دستکاری کنید.

پایگاه های داده در دو نوع اصلی وجود دارند - پایگاه داده های رابطه ای و غیر رابطه ای. در ادامه به تفاوت های بین آنها خواهیم پرداخت.

هر دو پایگاه داده رابطه ای و غیر رابطه ای با آنچه سیستم های مدیریت پایگاه داده (DBMS) نامیده می شود مدیریت می شوند. DBMS یک رابط بین کاربر و پایگاه داده است که به شما امکان ایجاد، خواندن، به روز رسانی و حذف داده ها را در پایگاه داده می دهد.

پایگاه های داده رابطه ای در مقابل غیر رابطه ای

پایگاه های داده رابطه ای چیست؟

پایگاه داده های رابطه ای داده ها را در جداول متشکل از سطرها و ستون ها سازماندهی می کنند. هر جدول نشان دهنده یک موجودیت خاص مانند مشتریان یا محصولات است. ستون‌ها آپشن های این موجودیت‌ها را تعریف می‌کنند، مانند نام مشتری یا نام محصول.

مدل رابطه ای از زبان پرس و جو ساخت یافته (SQL) برای پرس و جو و مدیریت داده ها استفاده می کند. روابط بین جداول از طریق کلیدهای اصلی و خارجی برای اطمینان از یکپارچگی داده ها و کاهش افزونگی ایجاد می شود.

پایگاه داده های رابطه ای به دلیل استحکام، سازگاری و پشتیبانی از پرس و جوهای پیچیده معروف هستند. آنها برای برنامه هایی که نیاز به تراکنش های چند ردیفه دارند، مانند سیستم های مالی، نرم افزار برنامه ریزی منابع سازمانی (ERP) و سیستم های مدیریت ارتباط با مشتری (CRM) مناسب هستند.

نمونه هایی از پایگاه داده های رابطه ای MySQL، PostgreSQL و Microsoft SQL Server هستند.

پایگاه داده های غیر رابطه ای چیست؟

پایگاه داده های غیر رابطه ای داده ها را در قالب های انعطاف پذیر و بدون طرح واره مانند جفت های کلید-مقدار، اسناد، ستون های گسترده یا نمودارها ذخیره و مدیریت می کنند. آنها همچنین به عنوان پایگاه داده NoSQL شناخته می شوند زیرا از SQL مانند پایگاه داده های رابطه ای استفاده نمی کنند.

پایگاه داده های غیر رابطه ای برای مقیاس افقی طراحی شده اند، که آنها را برای پردازش داده های در مقیاس بزرگ و برنامه های وب بلادرنگ ایده آل می کند.

پایگاه داده های غیر رابطه ای آسان برای استفاده، مقیاس پذیر و در عین حال با کارایی بالا هستند. به همین دلیل، آنها اغلب درجه ای از سازگاری را به نفع در دسترس بودن و تحمل پارتیشن قربانی می کنند.

موارد استفاده متداول شامل تجزیه و تحلیل بلادرنگ، برنامه های وب بلادرنگ، و برنامه هایی است که نیاز به انتقال داده با سرعت بالا دارند.

MongoDB Atlas – نمونه ای از یک پایگاه داده غیر رابطه ای

MongoDB Atlas یک پایگاه داده غیررابطه ای است که داده ها را در قالب JSON مانند سند گرا به نام BSON (Binary JSON) ذخیره می کند. BSON مدل JSON را گسترش می دهد تا انواع داده های اضافی را ارائه دهد و برای رمزگذاری و رمزگشایی در زبان های برنامه نویسی مختلف کارآمد باشد.

MongoDB Atlas انعطاف پذیری و مقیاس پذیری MongoDB را با مزایای استقرار خودکار، پشتیبان گیری و نظارت ارائه می دهد. این به توسعه دهندگان اجازه می دهد تا بر روی ساخت برنامه های کاربردی بدون زحمت مدیریت پایگاه داده تمرکز کنند

MongoDB Atlas همچنین از ویژگی های پیشرفته ای مانند پارتیشن بندی داده ها، تکرار و توزیع جهانی پشتیبانی می کند. این باعث می شود که آن را به یک انتخاب قدرتمند برای برنامه های مدرن که به انعطاف پذیری و عملکرد نیاز دارند تبدیل کند.

نحوه نصب MongoDB برای PHP

قبل از اینکه بتوانید MongoDB را برای PHP نصب کنید، مطمئن شوید که خود PHP را به درستی نصب کرده اید.

در مک، می توانید PHP را با homebrew با اجرای brew install PHP نصب کنید. علاوه بر این، مطمئن شوید که آپاچی را با اجرای brew install httpd و شروع آن با اجرای brew services start httpd نصب کرده‌اید.

برای نصب MongoDB برای PHP در مک می توانید مراحل زیر را دنبال کنید.

مرحله 1: برنامه گفت نی MongoDB را با PECL (کتابخانه انجمن برنامه گفت نی PHP) نصب کنید

پسوند MongoDB را برای PHP با اجرای pecl install mongodb نصب کنید.

مرحله 2: فایل php.ini را طوری تغییر دهید که افزونه MongoDB را شامل شود

نصب پسوند MongoDB باید به طور خودکار تنظیمات لازم را به فایل php.ini اضافه کند. اما این کار را انجام نمی دهد، فایل php.ini را با اجرای دستور زیر پیدا کنید:

 $ php --ini Configuration File (php.ini) Path: /usr/local/etc/php/8.3

پس از آن، موارد زیر را در انتهای فایل php.ini قرار داده و آن را ذخیره کنید:

 extension=mongodb.so

پس از انجام این کار، Apache را با اجرای brew services restart httpd ریستارت کنید.

مرحله 3: نصب برنامه گفت نی MongoDB را تأیید کنید

دستور زیر را اجرا کنید تا ببینید که آیا پسوند PHP با موفقیت نصب شده است یا خیر:

 php -i | grep mongo

شما باید چیزی شبیه به این را در ترمینال ببینید:

اسکرین شات-2024-05-24-at-09.21.50

مرحله 4: یک خوشه Atlas MongoDB را راه اندازی کنید

برای آزمایش پسوند PHP که به تازگی نصب کرده اید، به یک پایگاه داده MongoDB نیاز دارید. اطلس این کار را برای شما آسان می کند زیرا حمل و نقل سنگین روی ابر انجام می شود.

1. وارد حساب MongoDB خود شوید

به https://cloud.mongodb.com/ سر بزنید و وارد حساب کاربری خود شوید. اگر حساب کاربری ندارید، می توانید به صورت رایگان یک حساب کاربری ایجاد کنید .

2. یک پروژه ایجاد کنید

اگر پروژه‌های موجود دارید، با کلیک بر روی فلش سمت راست در کنار پروژه فعلی و انتخاب «پروژه جدید» یک پروژه جدید ایجاد کنید.

اسکرین شات-2024-05-24-at-09.34.05

به پروژه خود یک نام بدهید و روی دکمه «بعدی» کلیک کنید.

اسکرین شات-2024-05-24-at-09.37.13

روی "ایجاد پروژه" کلیک کنید تا در نهایت پروژه ایجاد شود.

اسکرین شات-2024-05-24-at-09.38.29

3. یک خوشه ایجاد کنید

پس از ایجاد یک پروژه، باید از شما خواسته شود که یک کلاستر ایجاد کنید. اگر نیستید، مطمئن شوید که در برگه نمای کلی هستید. از آنجا، روی دکمه بزرگ "ایجاد" کلیک کنید:

create-giant-1

لایه رایگان "MO" را انتخاب کنید، به خوشه خود یک نام بدهید و روی دکمه "Create Deployment" کلیک کنید.

اسکرین شات-2024-05-24-at-09.44.11

من به خوشه نام movie-list را داده ام.

فقط به خاطر داشته باشید که با رشد پایگاه داده شما، ممکن است لازم باشد به یکی از سطوح پولی ارتقا دهید.

4. یک کاربر پایگاه داده ایجاد کنید

بلافاصله پس از ایجاد کلاستر، از شما خواسته می شود که یک کاربر پایگاه داده ایجاد کنید. نام کاربری و رمز عبور پایگاه داده خود را وارد کرده و روی دکمه «ایجاد کاربر پایگاه داده» کلیک کنید. سپس روی "انتخاب روش اتصال" کلیک کنید.

اسکرین شات-2024-05-24-at-09.50.54

مطمئن شوید رمز عبوری را وارد کرده‌اید که بتوانید آن را به خاطر بسپارید یا آن را در مدیریت رمز عبور ذخیره کنید.

5. یک روش اتصال را انتخاب کنید

پس از کلیک بر روی دکمه "انتخاب روش اتصال" چندین روش را مشاهده خواهید کرد که می توانید از آنها برای اتصال به خوشه استفاده کنید.

اسکرین شات-2024-05-24-at-09.56.37

Drivers را از فهرست انتخاب کنید.

اسکرین شات-2024-05-24-at-09.58.02

PHP را از فهرست انتخاب کنید و PHP Lib 1.9 + MongoDB 1.10 یا بالاتر را به عنوان نسخه مورد استفاده انتخاب کنید. سپس رشته اتصال را کپی کرده و روی دکمه «انجام شد» کلیک کنید.

اسکرین شات-2024-05-24-at-10.02.55

6. Access Network را انتخاب کنید

به برگه «دسترسی شبکه» بروید و « گفت ن آدرس IP» را انتخاب کنید، روی «Allow ACCESS FROM ANYWHERE» کلیک کنید و سپس روی دکمه «تأیید» کلیک کنید. بسته به جایی که برنامه شما در آن مستقر است، می‌توانید بعداً این مورد را تغییر دهید.

اسکرین شات-2024-05-24-at-10.05.03

به تب "پایگاه داده" برگردید و روی دکمه "مرور مجموعه ها" کلیک کنید.

اسکرین شات-2024-05-24-at-10.07.48

"بارگیری یک مجموعه داده نمونه" را انتخاب کنید تا مجبور نباشید داده های خود را اضافه کنید - حداقل در حال حاضر.

اسکرین شات-2024-05-24-at-10.24.54

اکنون باید پایگاه داده های زیر را مشاهده کنید:

اسکرین شات-2024-05-24-at-10.28.04

برای آزمایش اینکه برنامه گفت نی MongoDB شما برای PHP در حال اجرا است، می‌توانید هر یک از داده‌های آن پایگاه‌های داده را پرس و جو کنید. اما ابتدا باید کتابخانه PHP MongoDB را با composer نصب کنید. composer به شما امکان می دهد وابستگی ها را برای پروژه PHP خود مدیریت کنید.

مرحله 5: کتابخانه PHP MongoDB را نصب کنید

اگر composer نصب نکرده‌اید، با اجرای brew install composer آن را با homebrew نصب کنید.

پس از آن، یک پوشه ایجاد کنید و آن را با ویرایشگر متن خود باز کنید. اگر ویرایشگر متن شما یک ترمینال یکپارچه دارد، آن را باز کنید و دستور زیر را اجرا کنید:

 composer require mongodb/mongodb

اگر نصب با موفقیت انجام شود، یک پوشه vendor به همراه فایل های composer.json و composer.lock را در ریشه پروژه خود خواهید دید. همچنین موارد زیر را در ترمینال مشاهده خواهید کرد:

اسکرین شات-2024-05-24-at-10.36.29

اکنون باید هر داده ای را در پایگاه داده اطلس خود پرس و جو کنید و آنها را نمایش دهید.

یک فایل index.php ایجاد کنید و موارد زیر را داخل آن قرار دهید:

 <?php require_once __DIR__ . '/vendor/autoload.php'; // Your connection string $client = new MongoDB\Client( 'mongodb+srv://username:<password>@movie-list.s6r7qkr.mongodb.net/?retryWrites=true&w=majority&appName=movie-list' ); $movies = $client->selectCollection('sample_mflix', 'movies'); $document = $movies->findOne(['title' => 'Wild and Woolly']); echo '<pre>'; print_r($document);

کد بالا به شما امکان می دهد با تابع selectCollection() به پایگاه داده movies در مجموعه sample_mflix متصل شوید و فیلمی با عنوان "Wild and Bolly" را در آن جستجو کنید.

توجه : مطمئن شوید که رشته اتصال موجود را با رشته خود جایگزین کرده اید. شما این را در مورد 5 از مرحله 4 کپی کردید. همچنین مطمئن شوید که رمز عبور کاربر پایگاه داده خود را جایگزین <password> کرده اید.

پس از آن، برنامه PHP خود را اجرا کنید (با php -S localhost:8000 در مک در ترمینال). اگر همه چیز را به درستی تنظیم کرده اید، باید موارد زیر را در مرورگر مشاهده کنید:

اسکرین شات-2024-05-24-at-10.54.05

توجه : من داده ها را به خوبی قالب بندی کرده ام زیرا افزونه PHP View Chrome را نصب کرده ام. همه چیزهایی را که در تابع print_r() دارید به این صورت چاپ می کند.

عملیات CRUD با استفاده از PHP و MongoDB

با MongoDB Atlas برای مدیریت پایگاه داده و ماندگاری UI، و PHP برای منطق سمت سرور، می توانید برنامه ای بسازید که عملیات CRUD کامل را پیاده سازی کند - ایجاد، خواندن، به روز رسانی و حذف.

برنامه خاص CRUD که ما در حال ساخت آن هستیم یک فهرست فیلم است. پس مطمئن شوید که یک پایگاه داده Atlas برای آن راه اندازی کرده اید، همانطور که قبلا در این راهنما به آن پرداختیم.

حالا بیایید ببینیم که چگونه می توانید یک برنامه CRUD فهرست فیلم بسازید.

مرحله 1: کتابخانه MongoDB و بسته Dotenv را نصب کنید

مطمئن شوید که یک افزونه MongoDB و یک بسته Dotenv دارید تا با اجرای دستورات زیر به مدیریت متغیرهای .env خود کمک کند:

 composer require mongodb/mongodb composer require vlucas/phpdotenv

مرحله 2: یک فایل .env برای اعتبار MongoDB Atlas URI خود ایجاد کنید

یک فایل .env ایجاد کنید و موارد زیر را در آن اضافه کنید:

 MDB_URI="Your MongoDB Atlas connection string"

مرحله 3: یک فایل اتصال پایگاه داده ایجاد کنید

یک فایل mongo_atlas_setup.php برای اتصال پایگاه داده در ریشه ایجاد کنید و موارد زیر را در آن قرار دهید:

 <?php require_once __DIR__ . '/vendor/autoload.php'; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $client = new MongoDB\Client($_ENV['MDB_URI']); function getMongoClient() { global $client; return $client; } function getMongoCollection($database, $collection) { $client = getMongoClient(); return $client->selectCollection($database, $collection); }

با کد بالا، ما هستیم:

بارگذاری وابستگی های مورد نیاز برای پروژه

بارگذاری متغیر محیطی

با استفاده از یک تابع برای به دست آوردن پایگاه داده و مجموعه ای که در آن می خواهیم

وارد کردن فایل و فراخوانی getMongoCollection در آن با پایگاه داده و مجموعه موجود در آن به شما امکان می دهد به پایگاه داده و مجموعه متصل شوید.

مرحله 4: قسمت READ از CRUD

دوباره در root یک فایل index.php ایجاد کنید که از قسمت READ CRUD مراقبت می کند. موارد زیر را در فایل پیست کنید:

 <?php require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/mongo_atlas_setup.php'; $movies_list = getMongoCollection('movie_list', 'movies'); $movies = $movies_list->find([], ['sort' => ['_id' => -1]]); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Movie List CRUD App</title> <script src="https://cdn.tailwindcss.com"></script> </head> <body class="bg-gray-100 p-10"> <div class="max-w-4xl mx-auto bg-white p-6 rounded shadow"> <h1 class="text-3xl font-bold mb-4 text-center">Movie List CRUD App</h1> <?php include 'create.php' ?> <div class="space-y-4"> <?php foreach ($movies as $movie) : ?> <div class="p-4 border rounded shadow-sm bg-gray-50"> <h2 class="text-2xl font-semibold"><?= $movie['movie_title'] ?></h2> <p class="text-gray-700">Year: <?= $movie['movie_year'] ?></p> <div class="mt-2"> <a href="update.php?id=<?= $movie['_id'] ?>" class="bg-yellow-500 text-white py-1 px-3 rounded">Update</a> <a href="delete.php?id=<?= $movie['_id'] ?>" onclick="return confirm('Are you sure you want to delete this movie?')" class="bg-red-500 text-white py-1 px-3 rounded">Delete</a> </div> </div> <?php endforeach ?> </div> </div> </body> </html>

توجه داشته باشید که Update و Delete به یک update.php و یک فایل delete.php پیوند دارند که روی شناسه فیلم کلیک شده است. به این ترتیب، ما می دانیم که برای به روز رسانی یا حذف روی کدام فیلم کلیک شده است. همچنین یک عبارت include برای یک فایل create.php وجود دارد.

در حال حاضر، می توانید ادامه دهید و فایل های create.php ، update.php و delete.php را در ریشه ایجاد کنید.

در این مرحله، شما هنوز چیزی در رابط کاربری نخواهید دید زیرا باید عملکرد ایجاد را مدیریت کنید.

مرحله 5: CREATE بخشی از CRUD

یک فایل create.php در ریشه ایجاد کنید (اگر قبلاً این کار را نکرده اید) و در زیر قرار دهید:

 <?php require_once __DIR__ . '/mongo_atlas_setup.php'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $movies = getMongoCollection('movie_list', 'movies'); $newMovie = [ 'movie_title' => $_POST['movie-title'], 'movie_year' => (int)$_POST['movie-year'], ]; $result = $movies->insertOne($newMovie); if ($result->getInsertedCount() === 1) { // echo "Movie created successfully!"; header('Location: ' . '/'); } else { echo "Failed to create movie"; } } ?> <form method="POST" action="create.php" class="space-y-4 mb-6"> <div> <label class="block text-gray-700">Movie Title</label> <input type="text" name="movie-title" required class="w-full p-2 border rounded max-w-md"> </div> <div> <label class="block text-gray-700">Movie Year</label> <input type="text" name="movie-year" required class="w-full p-2 border rounded max-w-md"> </div> <button type="submit" class="bg-green-500 text-white py-2 px-4 rounded">Create</button> </form>

کد بالا حاوی فرم و عناصر ورودی برای ایجاد یک فیلم است. سپس از آپشن های نام در آن عناصر ورودی برای ایجاد درخواست POST استفاده می‌کنیم که به ما اجازه می‌دهد یک فیلم بسازیم و آن را در مجموعه movies یک پایگاه داده movie_list ذخیره کنیم.

مرحله 6: UPDATE بخشی از CRUD

برای انجام به روز رسانی، باید یک فایل جداگانه ایجاد کنیم و کاری مشابه نحوه ساخت فیلم انجام دهیم. استثنا این است که ما از فیلد id ( _id ) برای تعیین وجود فیلم استفاده می کنیم و سپس به جای ایجاد یک فیلم جدید، آن را به روز می کنیم.

برای انجام این کار، یک فایل update.php (اگر قبلاً این کار را نکرده اید) در ریشه ایجاد کنید و در قسمت زیر پیست کنید:

 <?php require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/mongo_atlas_setup.php'; use MongoDB\BSON\ObjectId; $movies_list = getMongoCollection('movie_list', 'movies'); $title = ''; $year = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $filter = ['_id' => new ObjectId($_POST['id'])]; $update = ['$set' => [ 'movie_title' => $_POST['movie-title'], 'movie_year' => (int)$_POST['movie-year'], ]]; $result = $movies_list->updateOne($filter, $update); if ($result->getModifiedCount() === 1) { // echo "Movie updated successfully!"; header('Location: ' . '/'); } else { echo "Failed to update movie."; } } else { if (isset($_GET['id'])) { $id = $_GET['id']; $movie = $movies_list->findOne(['_id' => new ObjectId($id)]); if ($movie) { $title = $movie['movie_title']; $year = $movie['movie_year']; } else { echo "Movie not found."; exit; } } else { echo "No movie ID provided."; exit; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="https://cdn.tailwindcss.com"></script> <title>Update Movie </title> </head> <body class="bg-gray-100 p-10"> <div class="max-w-4xl mx-auto bg-white p-6 rounded shadow"> <h1 class="text-3xl font-bold mb-4">Update <?= $title ?> </h1> <form method="POST" action="update.php" class="space-y-4"> <input type="hidden" name="id" value="<?php echo $id; ?>"> <div> <label class="block text-gray-700">Title</label> <input type="text" name="movie-title" value="<?= htmlspecialchars($title); ?>" required class="w-full p-2 border rounded" /> </div> <div> <label class="block text-gray-700">Release Year</label> <input type="number" name="movie-year" value="<?= htmlspecialchars($year); ?>" required class="w-full p-2 border rounded" /> </div> <button class=" bg-green-500 text-white py-2 px-4 rounded" type="submit">Update</button> </form> <div class="mt-4"> <a href="index.php" class="bg-gray-500 text-white py-2 px-4 rounded">Back to List</a> </div> </div> </body> </html>

مرحله 7: قسمت DELETE از CRUD

برای مدیریت قابلیت حذف، می‌توانیم فیلم را دریافت کنیم و از تابع deleteOne ارائه‌شده توسط MongoDB برای حذف آن استفاده کنیم. هنگامی که حذف انجام شد، مجدداً از تابع header() برای تغییر مسیر به صفحه اصلی استفاده می کنیم.

کد زیر را در فایل delete.php خود قرار دهید:

 <?php require_once __DIR__ . '/mongo_atlas_setup.php'; use MongoDB\BSON\ObjectId; if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['id'])) { $movies = getMongoCollection('movie_list', 'movies'); $filter = ['_id' => new ObjectId($_GET['id'])]; $result = $movies->deleteOne($filter); if ($result->getDeletedCount() === 1) { // echo "Movie deleted successfully!"; header('Location: ' . '/'); } else { echo "Failed to delete movie."; } } else { echo "No movie provided."; } ?>

اکنون برنامه CRUD باید به این صورت باشد:

CRUD-gif

تمام کدها در این مخزن GitHub هستند

پروژه: نحوه استفاده از PHP برای بازسازی کارت های تیم فوتبال پروژه برنامه درسی جاوا اسکریپت به روز شده

قبل از اینکه مراحل ساخت پروژه را شروع کنید، کد شروع پروژه را در شاخه شروع این مخزن GitHub بگیرید.

همچنین می توانید نگاهی به پروژه کارت های تیم فوتبال بیندازید تا بدانید ما در تلاش هستیم به چه چیزی برسیم.

مرحله 1: MongoDB Atlas را راه اندازی کنید

به حساب MongoDB Atlas خود وارد شوید و یک پایگاه داده football-team-cards ایجاد کنید. در صورت تمایل می توانید آن را در یک پروژه موجود یا یک پروژه جدید ایجاد کنید. در پایگاه داده football-team-cards ، یک مجموعه footballers ایجاد کنید.

در مجموعه footballers ، روی دکمه "درج سند" کلیک کنید.

اسکرین شات-2024-06-09-at-14.33.15

سپس محتوای فایل footballers.json را در شاخه شروع پروژه GitHub repo قرار دهید و روی «انجام شد» کلیک کنید.

اسکرین شات-2024-06-09-at-14.42.47

پس از آن، مجموعه footballers شما باید به شکل زیر باشد:

اسکرین شات-2024-06-09-at-14.44.59

مرحله 2: Project Dependencies را با Composer نصب کنید

یک پوشه football-team-cards-php در رایانه خود ایجاد کنید و آن را با ویرایشگر متن مورد علاقه خود باز کنید. همان پوشه را در ترمینال خود باز کنید و دستورات زیر را اجرا کنید:

 composer require vlucas/phpdotenv composer require mongodb/mongodb

مرحله 3: فایل های پروژه ایجاد کنید

در پوشه football-team-cards-php فایل های زیر را ایجاد کنید:

.env

mongo_atlas_php_setup.php

index.php

styles.css

در فایل .env باید MongoDB Atlas URI داشته باشید:

 MDB_URI="Your MongoDB Atlas connection string"

در فایل mongo_atlas_php_setup.php باید با این کد به دیتابیس متصل شوید:

 <?php require_once __DIR__ . '/vendor/autoload.php'; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); function getMongoClient() { return new MongoDB\Client($_ENV['MDB_URI']); } function getMongoCollection($database, $collection) { $client = getMongoClient(); return $client->selectCollection($database, $collection); }

در کد بالا، ما متغیرهای محیطی را بارگذاری می کنیم و از تابع getMongCollection برای اتصال پایگاه داده استفاده می کنیم. مطمئن شوید که رشته اتصال را با رشته خود جایگزین کرده اید.

اکنون، هر زمان که می‌خواهید به یک پایگاه داده متصل شوید، به فایل نیاز دارید، سپس پایگاه داده و نام مجموعه‌ها را به تابع getMongoCollection ارسال کنید.

محتوای فایل های index.html و styles.css را در شاخه شروع پروژه GitHub repo کپی کنید و آنها را در فایل های index.php و styles.css خود قرار دهید.

مرحله 4: برچسب select را در یک عنصر form قرار دهید

تگ select موجود را با موارد زیر جایگزین کنید:

 <form method="POST" action=""> <label class="options-label" for="players">Filter Teammates:</label> <select name="position" id="players" onchange="this.form.submit()"> <option value="all">All Players</option> <option value="nickname">Nicknames</option> <option value="forward">Position Forward</option> <option value="midfielder">Position Midfielder</option> <option value="defender">Position Defender</option> <option value="goalkeeper">Position Goalkeeper</option> </select> </form>

این به شما امکان می دهد یک درخواست POST با ویژگی name تنظیم شده روی position انجام دهید. و با ویژگی onchange this.form.submit() ، می‌توانید بازیکنان فوتبال را بر اساس هر یک از گزینه‌های انتخاب شده واکشی کنید. بیشتر در این مورد بعدا.

مرحله 5: منطق واکشی بازیکنان فوتبال از مجموعه footballers را ایجاد کنید

 require_once __DIR__ . '/mongo_atlas_php_setup.php'; $position = isset($_POST['position']) ? $_POST['position'] : 'all'; $collection = getMongoCollection('football-team-cards', 'footballers'); $team = $collection->findOne(['team' => 'Argentina']); $players = $team['players']->getArrayCopy();

با کد بالا، ما هستیم:

وارد کردن فایل اتصال پایگاه داده

تحلیل داده‌های POST با نام روی برچسب select و تنظیم مقدار پیش‌فرض all (اولین گزینه در عنصر انتخاب)

دریافت پایگاه داده و مجموعه در آن

با استفاده از روش findOne از MongoDB برای بدست آوردن تیم

و داده ها را به عنوان یک آرایه با getArraCopy() واکشی کنیم تا بتوانیم از طریق آن حلقه بزنیم

در این مرحله، می‌توانید متغیر $players با print_r() یا var_dump() چاپ کنید تا ببینید چه شکلی است. در نهایت، وقتی برنامه را با php -S localhost:4000 اجرا کردم، به نظر می رسد:

اسکرین شات-2024-06-09-at-16.24.47

مرحله 6: منطق فیلتر کردن بازیکنان فوتبال بر اساس موقعیت را ایجاد کنید

به یاد داشته باشید که ما باید بازیکنان را بر اساس دروازه بان، مدافع، هافبک یا مهاجم نمایش دهیم. برای این کار می توانیم از کد زیر استفاده کنیم:

 $filteredPlayers = $players; if ($position !== 'all') { if ($position === 'nickname') { $filteredPlayers = array_filter($players, function ($player) { return !empty($player['nickname']); }); } else { $filteredPlayers = array_filter($players, function ($player) use ($position) { return $player['position'] === $position; }); } }

در ابتدا، $filteredPlayers برای همه بازیکنان مقداردهی می کنیم. اگر موقعیت انتخاب شده all نباشد , بازیکنان را بر اساس nickname فیلتر می کنیم . و اگر موقعیت انتخاب شده nickname نباشد , بازیکنان را فیلتر می کنیم تا فقط آنهایی که موقعیت آنها با position انتخاب شده مطابقت داشته باشد .

مرحله 7: نمایش بازیکنان در صفحه بر اساس موقعیت انتخاب شده

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

در اینجا یک روش وجود دارد که می توانید مقدار هر option را بر روی selected تنظیم کنید:

 <option value="all" <?= $position === 'all' ? 'selected' : '' ?>>All Players</option> <option value="nickname" <?= $position === 'nickname' ? 'selected' : '' ?>>Nicknames</option> <option value="forward" <?= $position === 'forward' ? 'selected' : '' ?>>Forwards</option> <option value="midfielder" <?= $position === 'midfielder' ? 'selected' : '' ?>>Midfielders</option> <option value="defender" <?= $position === 'defender' ? 'selected' : '' ?>>Defenders</option> <option value="goalkeeper" <?= $position === 'goalkeeper' ? 'selected' : '' ?>>Goalkeepers</option>

و در اینجا نحوه استفاده از حلقه foreach برای نمایش بازیکنان انتخاب شده به شرح زیر است:

 <div class="cards" id="player-cards"> <?php if (empty($filteredPlayers)) : ?> <p>No players found for the selected position.</p> <?php else : ?> <?php foreach ($filteredPlayers as $players) : ?> <div class="player-card"> <h2><?= $players['name'] . ($players['isCaptain'] ? ' (Captain)' : '') ?></h2> <p>Position: <?= $players['position'] ?></p> <p>Number: <?= $players['number'] ?></p> <p>Nickname: <?= !empty($players['nickname']) ? $players['nickname'] : 'N/A' ?></p> </div> <?php endforeach ?> <?php endif ?> </div>

اکنون، همه چیز همانطور که پیش بینی می شود کار می کند:

کارت های تیم فوتبال

شما می توانید کد نهایی پروژه را در شعبه اصلی این مخزن GitHub دریافت کنید.

بسته بندی

بازسازی پروژه کارت های تیم فوتبال با PHP و MongoDB Atlas نشان می دهد که ترکیب اسکریپت های سمت سرور با پایگاه داده NoSQL مبتنی بر ابر چقدر می تواند قدرتمند و انعطاف پذیر باشد.

این پروژه نه تنها چگونگی کار روان PHP و MongoDB Atlas را برجسته می کند، بلکه مزایای استفاده از پایگاه داده مبتنی بر ابر مانند Atlas را نیز نشان می دهد. اطلس مقیاس پذیری، در دسترس بودن بالا و مدیریت آسان را ارائه می دهد که آن را به گزینه ای عالی برای برنامه های کاربردی وب مدرن تبدیل می کند.

هر برنامه مبتنی بر داده را که می‌سازید، این تکنیک‌هایی که در اینجا برای ساخت پروژه و برنامه اولیه CRUD استفاده کردیم، می‌توانند به شما کمک کنند.

کد نویسی مبارک!

خبرکاو

ارسال نظر




تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است