میخواهیم یک سامانهی رایگیری آنلاین با کمک پایگاه دادهی sqlite3
پیادهسازی کنیم.
بدین صورت که هر بازدید کننده از سایت با مشاهدهی صفحهی اصلی لیست گزینههای قابل رای دادن را ببیند و از بین آنها یکی را انتخاب کند، سپس به صفحهی ثبت رای متنقل شده و رای او ثبت شود.
همچنین یک بخش افزودن گزینه وجود داشته باشد که با کمک آن بتواند گزینهی جدید به رایگیری اضافه کرد.
سامانهی ما چند بخش اساسی دارد:
- بخش نصب که وظیفهی ساختن جدول مربوط به رایگیری در پایگاه داده را دارد.
- بخش افزودن گزینه که وظیفهی اضافه کردن یک گزینهی جدید به پایگاه داده را دارد.
- صفحهی اصلی که وظیفهی نمایش گزینههای موجود را دارد.
- رایدهی که وظیفهی ثبت رای رایدهندگان را دارد.
جزئیات
نصب
کدهای بخش نصب باید در فایل install.php
نوشته شود، در اولین بار مشاهدهی صفحهی نصب، باید پایگاه دادهای از نوع sqlite3
به نام
_db.sqlite
در همانجایی که فایل install.php
قرار دارد ساخته شود.
در این پایگاهداده باید یک جدول به نام options
وجود داشته باشد که ستونهای آن به شرح زیر است:
id
:integer PRIMARY KEY
subject
:text NOT NULL UNIQUE
count
:integer DEFAULT 0
همچنین اگر قبلا فرایند نصب انجام شده بود، خطای Already installed
نمایش داده شود.
افزودن گزینه
کدهای این بخش باید در فایل add_option.php
نوشته شود.
اگر ریکوئست به این صفحه از نوع GET
بود، باید فرمی برای اضافه کردن گزینهی جدید به کاربر نمایش داده شود که در کد اولیه این پیادهسازی انجام شدهاست.
اگر ریکوئست از نوع POST
بود، باید گزینهی جدید به پایگاه داده اضافه شود و پیغام اضافهشدن با موفقیت به او نمایش داده شود.
صفحهی اصلی
کدهای این بخش در فایل index.php
زده میشود.
کاربر با مشاهده این بخش باید لیست گزینههای موجود و تعداد رایهای داده شده به آنها را مشاهده کند. هر کدام از گزینهها باید یک لینک به صفحهی رایدهی باشند.
رایدهی
کدهای این بخش در فایل vote.php
زده میشود.
این صفحه با گرفتن id
گزینه از طریق GET
رای کاربر را به گزینهی مورد نظر ثبت میکند، دقت کنید هر کاربر باید حداکثر یکبار قابلیت رایدهی داشته باشد. (برای این موضوع، از کوکیها استفاده کنید.)
نکات
پروژهی اولیه در زیر قرار گرفتهاست، تنها قسمتهایی که کامنت TODO: implement
دارند را پیادهسازی کنید و تغییری در بقیهی قسمتهای کد ایجاد نکنید.
دقت کنید هر بخش به شکل جدا نمرهدهی میشود و با پیادهسازی قسمتی از سوال، میتوانید نمرهی آن قسمت را دریافت کنید.
بارگذاری
فایلهای
global.php
، index.php
، install.php
، add_option.php
و vote.php
را داخل یک فایل زیپ قرار داده و بارگذاری کنید.
ارسال پاسخ برای این سؤال