آرایه های پی اچ پی در عمل: نحوه بازسازی پروژه کارت های تیم فوتبال با PHP و MongoDB
این قسمت دوم کتاب راهنمای آرایه پی اچ پی من است. شما می توانید بخش اول را اینجا پیدا کنید ، جایی که من اصول اولیه آرایه را پوشش می دهم.
در قسمت اول با آرایه ها، نحوه ایجاد آرایه، توابع آرایه و نحوه حلقه زدن آرایه ها آشنا شدید.
این قسمت دوم به شما یاد می دهد که چگونه از 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 – نمونه ای از یک پایگاه داده غیر رابطه ای
مرحله 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
شما باید چیزی شبیه به این را در ترمینال ببینید:
مرحله 4: یک خوشه Atlas MongoDB را راه اندازی کنید
برای آزمایش پسوند PHP که به تازگی نصب کرده اید، به یک پایگاه داده MongoDB نیاز دارید. اطلس این کار را برای شما آسان می کند زیرا حمل و نقل سنگین روی ابر انجام می شود.
1. وارد حساب MongoDB خود شوید
به https://cloud.mongodb.com/ سر بزنید و وارد حساب کاربری خود شوید. اگر حساب کاربری ندارید، می توانید به صورت رایگان یک حساب کاربری ایجاد کنید .
2. یک پروژه ایجاد کنید
اگر پروژههای موجود دارید، با کلیک بر روی فلش سمت راست در کنار پروژه فعلی و انتخاب «پروژه جدید» یک پروژه جدید ایجاد کنید.
به پروژه خود یک نام بدهید و روی دکمه «بعدی» کلیک کنید.
روی "ایجاد پروژه" کلیک کنید تا در نهایت پروژه ایجاد شود.
3. یک خوشه ایجاد کنید
پس از ایجاد یک پروژه، باید از شما خواسته شود که یک کلاستر ایجاد کنید. اگر نیستید، مطمئن شوید که در برگه نمای کلی هستید. از آنجا، روی دکمه بزرگ "ایجاد" کلیک کنید:
لایه رایگان "MO" را انتخاب کنید، به خوشه خود یک نام بدهید و روی دکمه "Create Deployment" کلیک کنید.
من به خوشه نام movie-list
را داده ام.
فقط به خاطر داشته باشید که با رشد پایگاه داده شما، ممکن است لازم باشد به یکی از سطوح پولی ارتقا دهید.
4. یک کاربر پایگاه داده ایجاد کنید
بلافاصله پس از ایجاد کلاستر، از شما خواسته می شود که یک کاربر پایگاه داده ایجاد کنید. نام کاربری و رمز عبور پایگاه داده خود را وارد کرده و روی دکمه «ایجاد کاربر پایگاه داده» کلیک کنید. سپس روی "انتخاب روش اتصال" کلیک کنید.
مطمئن شوید رمز عبوری را وارد کردهاید که بتوانید آن را به خاطر بسپارید یا آن را در مدیریت رمز عبور ذخیره کنید.
5. یک روش اتصال را انتخاب کنید
پس از کلیک بر روی دکمه "انتخاب روش اتصال" چندین روش را مشاهده خواهید کرد که می توانید از آنها برای اتصال به خوشه استفاده کنید.
Drivers را از فهرست انتخاب کنید.
PHP را از فهرست انتخاب کنید و PHP Lib 1.9 + MongoDB 1.10 یا بالاتر را به عنوان نسخه مورد استفاده انتخاب کنید. سپس رشته اتصال را کپی کرده و روی دکمه «انجام شد» کلیک کنید.
6. Access Network را انتخاب کنید
به برگه «دسترسی شبکه» بروید و « گفت ن آدرس IP» را انتخاب کنید، روی «Allow ACCESS FROM ANYWHERE» کلیک کنید و سپس روی دکمه «تأیید» کلیک کنید. بسته به جایی که برنامه شما در آن مستقر است، میتوانید بعداً این مورد را تغییر دهید.
به تب "پایگاه داده" برگردید و روی دکمه "مرور مجموعه ها" کلیک کنید.
"بارگیری یک مجموعه داده نمونه" را انتخاب کنید تا مجبور نباشید داده های خود را اضافه کنید - حداقل در حال حاضر.
اکنون باید پایگاه داده های زیر را مشاهده کنید:
برای آزمایش اینکه برنامه گفت نی MongoDB شما برای PHP در حال اجرا است، میتوانید هر یک از دادههای آن پایگاههای داده را پرس و جو کنید. اما ابتدا باید کتابخانه PHP MongoDB را با composer
نصب کنید. composer
به شما امکان می دهد وابستگی ها را برای پروژه PHP خود مدیریت کنید.
مرحله 5: کتابخانه PHP MongoDB را نصب کنید
اگر composer
نصب نکردهاید، با اجرای brew install composer
آن را با homebrew نصب کنید.
پس از آن، یک پوشه ایجاد کنید و آن را با ویرایشگر متن خود باز کنید. اگر ویرایشگر متن شما یک ترمینال یکپارچه دارد، آن را باز کنید و دستور زیر را اجرا کنید:
composer require mongodb/mongodb
اگر نصب با موفقیت انجام شود، یک پوشه vendor
به همراه فایل های composer.json
و composer.lock
را در ریشه پروژه خود خواهید دید. همچنین موارد زیر را در ترمینال مشاهده خواهید کرد:
اکنون باید هر داده ای را در پایگاه داده اطلس خود پرس و جو کنید و آنها را نمایش دهید.
یک فایل 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
در مک در ترمینال). اگر همه چیز را به درستی تنظیم کرده اید، باید موارد زیر را در مرورگر مشاهده کنید:
توجه : من داده ها را به خوبی قالب بندی کرده ام زیرا افزونه 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 باید به این صورت باشد:
تمام کدها در این مخزن GitHub هستند
پروژه: نحوه استفاده از PHP برای بازسازی کارت های تیم فوتبال پروژه برنامه درسی جاوا اسکریپت به روز شده
قبل از اینکه مراحل ساخت پروژه را شروع کنید، کد شروع پروژه را در شاخه شروع این مخزن GitHub بگیرید.
همچنین می توانید نگاهی به پروژه کارت های تیم فوتبال بیندازید تا بدانید ما در تلاش هستیم به چه چیزی برسیم.
مرحله 1: MongoDB Atlas را راه اندازی کنید
به حساب MongoDB Atlas خود وارد شوید و یک پایگاه داده football-team-cards
ایجاد کنید. در صورت تمایل می توانید آن را در یک پروژه موجود یا یک پروژه جدید ایجاد کنید. در پایگاه داده football-team-cards
، یک مجموعه footballers
ایجاد کنید.
در مجموعه footballers
، روی دکمه "درج سند" کلیک کنید.
سپس محتوای فایل footballers.json
را در شاخه شروع پروژه GitHub repo قرار دهید و روی «انجام شد» کلیک کنید.
پس از آن، مجموعه footballers
شما باید به شکل زیر باشد:
مرحله 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
اجرا کردم، به نظر می رسد:
مرحله 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 استفاده کردیم، میتوانند به شما کمک کنند.
کد نویسی مبارک!
ارسال نظر