در آموزش php پروژه محور قصد ما این است که به شما کمک کنیم اولین پروژۀ جدیتان با php را بسازید. طی این پروژه سعی خواهم کرد، به چند جنبۀ خیلی مهم که در پروژههای بزرگ مدام تکرار میشوند، اشاره کنم و در حد امکان آنها را برایتان تشریح کنم. لازم به ذکر است که مفروض من در این آموزش این است که شما از پیش اندکی با php آشنا هستید و آن را پیشاپیش روی کامپیوترتان نصب کردهاید و حداقل یکی دو دستور خیلی سادۀ php را از پیش در آن اجرا کردهاید.
پروژهای که در این آموزش به آن میپردازیم یک وبسایت دوصفحهای است که در واقع یک ماشینحساب آنلاین است. در صفحۀ اول این پروژه دو کادر ورود متن و یک کادر انتخاب در اختیار کاربر قرار میگیرد که میتواند اعدادی را در آن دو کادر متن وارد نماید. سپس بر روی دکمه محاسبه کلیک میکند و برنامه این اطلاعات را به سرور ارسال میکند.
در صفحۀ دوم این اطلاعات از کاربر دریافت میشود و توسط یک تابع پردازش میشود و باتوجهبه عملیات انتخاب شده توسط کاربر که شامل جمع و تفریق است، نتیجه را محاسبه کرده و چاپ میکند. پرواضح است که برای درک این پروژه و اساساً برای درک php ضرورت دارد که دستکم با html از پیش آشنا باشید. البته در طول این آموزش من سعی میکنیم، تگهای html استفاده شده را نیز در حد توان توضیح دهم. اگر احساس میکنید که در مورد php نیاز به مقدمات بیشتری دارید، آموزش برنامهنویسی پی اچ پی PHP از فرادرس را به شما توصیه میکنم.
- آموزش برنامهنویسی پی اچ پی PHP در فرادرس — کلیک کنید
آموزش php پروژه محور – ایجاد فرم دریافت داده ها از کاربر
در این بخش از آموزش php پروژه محور میخواهیم اولین صفحه از پروژۀ مان را ایجاد کنیم. تصویر زیر نمایی از فرمی را که قصد داریم بسازیم، پیشاپیش به شما نشان میدهد.
برای ایجاد این صفحه در حالت عادی، نیازی به هیچ دانش php ندارید و میتوانید صرفاً با اتکا به آموختههایتان در html آن را طراحی کنید. اما جایی که بحث ارسال داده به سمت سرور و سپس پردازش دادهها در سمت سرور پیش کشیده میشود، php ورود میکند و مسئولیتهایی را که html از انجامشان ناتوان است، بر عهده میگیرد.
یک فایل خالی در ویرایشگر کد مورد استفادۀ تان ایجاد کنید. توجه داشته باشید که الزامی به استفاده از ویرایشگر کد ندارید و در یک ویرایشگر متنی ساده هم میتوانید این کار را انجام دهید. سپس محتویات زیر را در آن تایپ کنید.
تا اینجای کار همه چیز صرفاً html است. چیزی که در تصویر بالا میبینید صرفاً بدنۀ خالی یک فایل html است. هم اکنون قصد داریم در قسمت body یک فرم که البته آنهم html است، ایجاد کنیم. تا همینجای کار میتوانید فایلی را که ایجاد کردهاید ذخیره کنید. نام آن را index.php بگذارید. توجه کنید که پسوند فایل حتماً php باشد و احیاناً پسوندش را html نگذارید.
در واقع برای اینکه کامپایلر php بتواند فایلها را پردازش کند ضرورت دارد که پسوندش را معتبر بشناسد. فایلهای php دقیقاً مانند فایلهای html کار میکنند و تمامی تواناییهای آن را دارند. علاوهبرآن این مزیت را نیز دارند که شما میتوانید لابهلای کدهای html کدهای مربوط به زبان برنامهنویسی php را نیز بگنجانید. دقت کنید که کدهای مربوط به ایجاد Form را باید دقیقاً در بین دو تگ body اضافه کنید. شکل زیر راهنمای شما جهت محل قرارگیری کدهای form است.
بیایید با هم اولین بخش از form را بسازیم.
کار form در html این است که امکان دریافت دادهها از کاربر را برای ما فراهم میسازد. هرآنچه که بین دو تگ آغازین و پایانی form قرار میگیرد، کنترلهای مربوط به دریافت اطلاعات از کاربر است. در پروژۀ فعلی ما این کنترلها شامل جعبه متنها و کادرهای انتخاب میشوند. در کد بالا ما یک جعبه متن را با تگ input اضافه کردهایم. ویژگی type که مقدار آن text است.
نشان میدهد که نوع ورودی، متن است. ویژگی name که مقدارش num01 است، نامی است که هنگام پردازش در سمت سرور مورداستفاده قرار میگیرد. دقت کنید که اسامی اختصاصدادهشده به کنترلهای یک فرم باید انحصاری باشند تا پردازش آنها در سمت سرور با مشکل مواجه نشود. ویژگی placeholder که با مقدار Number 1 پر شده است، یک متن راهنما است که به کاربر نشان میدهد در جعبه متن مربوطه باید چه چیزی را وارد کند. اینجا ما میخواهیم به کاربر بگوییم که اولین عدد را در این جعبه متن وارد کند.
در خود تگ form هم ویژگی action را داریم که با مقدار function.php پر شده است. در واقع این نام فایلی است که دادههای ارسالی ما به سمت سرور، مستقیماً به آن ارسال میشود. یعنی ما باید بعد از اتمام طراحی صفحۀ اول، به سراغ صفحۀ دوم برویم و فایلی با همین نام را در سرور ایجاد کنیم.
ویژگی method که با مقدار get پر شده است، نحوۀ ارسال دادهها به سرور را نشان میدهد. برای ارسال دادهها به سرور دو متد اصلی وجود دارد که یکی همین get و دیگری متد post است. تفاوت این دو در این است که در متد get دادههای ارسالی در لینک برای کاربر قابل نمایش هستند اما در post دادهها از دید کاربر مخفی میشوند و در لینک نمیآیند. اگر به دنبال مرجع کاملی جهت فراگیری php هستید، مجموعه آموزش PHP را به شما توصیه میکنم.
- مجموعه آموزش PHP — کلیک کنید
آموزش php پروژه محور – تکمیل کنترلهای فرم ورود اطلاعات
خوب تا اینجای آموزش php پروژه محور، اطلاعات بسیار مفیدی را که در ایجاد پروژههای بزرگ نیز برای ما کاربرد دارند آموختیم. بیایید این فرم را تکمیلتر کنیم. کدهای فرمتان را به شکل زیر تکمیل کنید. در ادامه به تشریح بقیه کدها میپردازیم.
تگ select در html در واقع همان کادرهای انتخاب است که لیستی را برای انتخاب به کاربر میدهند و کاربر از بین آنها گزینۀ مورد نظرش را انتخاب میکند. در تگ select نیز ویژگی name را جهت تخصیص نام oper استفاده کردهایم. منظور ما از oper همان operation به معنای عملیات است. در ادامه به کمک تگ option دو گزینۀ add و sub را به کاربر دادهایم.
گزینه add برای انجام عملیات جمع و گزینۀ sub برای انجام عملیات تفریق است. در واقع نام کامل آن subtract است. تگ label صرفاً برای ارائه توضیح به کاربر است که توضیح choose operation به معنای انتخاب عملیات را به او دادهایم. در ادامه تگ input دوم را قرار دادهایم که مشابه تگ input اول است و تفاوتش در این است که در اینجا برای گرفتن عدد دوم است. طبیعتاً نام آن هم باید متفاوت باشد که ما num02 را به آن اختصاص دادهایم.
در پایان یک تگ button داریم که نامش را Calculate یعنی محاسبه گذاشتهایم. این دکمه باید از نوع submit باشد. دکمههای از نوع submit دادهها را به سمت سرور ارسال میکنند. در واقع مکانیزم کلی این است که کاربر ابتدا عدد اول و عدد دوم را وارد میکند. سپس یکی از عملیاتهای جمع یا تفریق را انتخاب میکند و در پایان با این دکمه، دادهها را به سمت سرور ارسال میکند. در سمت سرور همصفحهٔ دوم ما که نامش function.php است این دادهها را دریافت کرده و پردازش میکند.
آموزش php پروژه محور – طراحی فرم دریافت دادهها در سمت سرور
در بخشهای پیشین از آموزش php پروژه محور، فرم ورود داده را ساختیم و آدرس فرم مقصد در سمت سرور جهت submit دادهها را نیز به آن دادیم. در این بخش میخواهیم فرم دوم یعنی function.php را بسازیم. ابتدا یک فایل با همین نام بسازید و سپس کدهای زیر را به آن اضافه کنید. نکتۀ مهمی که باید رعایت کنید این است که هر دو فایل index و function را در یک مسیر قرار دهید. اگر بخواهید مسیر آنها متفاوت باشد هم شدنی است، اما آنوقت باید آدرسدهیها را نیز متناسب با آن تغییر دهید. فعلاً طبق همین توصیۀ من پیش بروید.
کدهای بالا در واقع یک تابع است. نام این تابع myCalculator است و سه پارامتر ورودی دارد. اسامی این پارامترها در داخل یک جفت پرانتز بعد از نام تابع آمدهاند و با کاما از یکدیگر جدا شدهاند. در همان آغاز تابع متغیری با نام sum تعریف شده است. همانطور که احتمالاً میدانیم برای معرفی متغیرها در php کافی است یک علامت دلار $ قبل از نام متغیر قرار دهیم.
به همین سادگی متغیر معرفی میشود. البته در برخی از زبانهای برنامهنویسی باید الزاماً نوع دادۀ متغیر را نیز مشخص سازیم. اما php در این مورد کار ما را سادهتر کرده است. در واقع php بهصورت هوشمند باتوجهبه دادههایی که بعداً در طول کد به آن متغیر انتساب میدهیم، خودش نوع مناسبی برای آن تعیین میکند.
دستور switch با شکلی که در کد میبینید، در واقع مکانیزمی برای خلاصهنویسی چندین if بر روی یک شرط خاص است. در واقع switch بالا به زبان ساده میگوید، مقدار متغیر oper را بگیر. سپس با هرکدام از مقادیر موجود در caseها مقایسه کن. باتوجهبه مقدار متغیر oper آن case مربوطه را اجرا کن. اگر مقدار متغیر oper برابر با add باشد. عملیات جمع انجام میشود.
اگر مقدارش برابر با sub باشد، عملیات تفریق انجام میشود. اگر هم هیچ مقداری نداشته باشد، برنامه باید پیام دهد که خطایی پیشآمده است و مقدار صحیحی برای عملیات انتخاب نشده است. در نهایت دستور return مقدار بازگشتی تابع را مشخص میکند.
تا اینجا تابع محاسباتی ما آماده است. کار باقی مانده اینست که این تابع را فراخوانی کنیم. کد زیر این کار را برای ما انجام میدهد.
در اینجا سه متغیر تعریف کردهایم و آنها را به کمک تابع $_GET مقداردهی کردهایم. این تابع در واقع مقادیری را که از فرمها به سمت سرور پاس شدهاند را دریافت میکند و در متغیرهای ما مینشاند. اگر دقت کنید، اسامی استفاده شده بهعنوان پارامتر get همان اسامی داده شده در ویژگی name در فرم صفحۀ قبل ما بودند. برای همین هم بود که در آنجا تأکید داشتیم اسامی را باید غیرتکراری تعیین کنید.
در ادامه دستور echo مورداستفاده قرار گرفته است. حتماً میدانید این دستور چیست. اساساً در تمامی آموزشهای php اولین چیزی که به شما یاد میدهند دستور echo است که کارش چاپ دادهها در صفحه است. در داخل دستور echo تابع myCalculator با مقادیر دریافتی از فرم قبلی فراخوانی شدهاند. اگر دقت کنید در ابتدای تابع echo متن ثابت value: قرار گرفته است و با یک علامت نقطه به متن بعدی که از تابع بازمیگردد، پیوند خورده است. علامت نقطه در php برای متصل کردن متنها، یا بهتر است بگوییم مقادیر رشتهای، مورداستفاده قرار میگیرد.
اجرای برنامه و تست آن
تبریک میگوییم. شما به کمک آموزش php پروژه محور توانستید اولین پروژۀ phpتان را بنویسید. حالا کافی است برنامه را اجرا کنید و آن را تست کنید. اگر همۀ کارها را درست انجام داده باشید، نتایجی مشابه تصاویر زیر را خواهید دید.
نتیجۀ تأیید عملیات بالا را در ادامه میبینید. میتوانید با دادههای دیگری و البته با انتخاب عملیاتهای مختلف برنامه را تست کنید.
نتیجه گیری
هدف ما از این آموزش phpپروژه محور این بود که شما یک محیط واقعی پروژه نویسی را تجربه کنید. در پروژههای بسیار بزرگ هم رویه کلی کار همین است. فقط تفاوت در اینست که در آنجا حجم کار بیشتر است. حجم دادههای ورودی طبیعتاً بیشتر است. بهاحتمال زیاد حجم پردازشها بیشتر است و مجبور خواهید بود توابع پیچیدهتری بنویسید. همچنین تعداد فرمها نیز بسیار بیشتر است.
اما اصول کلی هیچ تغییری نمیکنند. شما باید دادهها را در قالب متدهای get یا post به سرور ارسال کنید. پردازش کنید. خروجی را با echo به سمت کاربر بازگردانید و البته بسته به پروژه، احتمالاً کلی کار ریزودرشت دیگر را نیز باید انجام دهید. به کمک منابع آموزشی معرفی شده در این آموزش میتوانید سطح دانش خودتان در ارتباط با php را ارتقاء بخشید. در پایان این مقاله مایلم منابع آموزشی زیر از فرادرس را با شما به اشتراک بگذارم.
- آموزش پروژه محور PHP و MySQL
- آموزش کار با ایجکس AJAX در پی اچ پی PHP و MySQL