سیستم رای‌دهی


می‌خواهیم یک سامانه‌ی رای‌گیری آن‌‌لاین با کمک پایگاه داده‌ی sqlite3 پیاده‌سازی کنیم.

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

همچنین یک بخش افزودن گزینه وجود داشته باشد که با کمک آن بتواند گزینه‌ی جدید به رای‌گیری اضافه کرد.

سامانه‌ی ما چند بخش اساسی دارد:

  1. بخش نصب که وظیفه‌ی ساختن جدول مربوط به رای‌گیری در پایگاه داده را دارد.
  2. بخش افزودن گزینه که وظیفه‌ی اضافه کردن یک گزینه‌ی جدید به پایگاه داده را دارد.
  3. صفحه‌ی اصلی که وظیفه‌ی نمایش گزینه‌های موجود را دارد.
  4. رای‌دهی که وظیفه‌ی ثبت رای رای‌دهندگان را دارد.

جزئیات🔗

نصب🔗

کد‌های بخش نصب باید در فایل 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 را داخل یک فایل زیپ قرار داده و بارگذاری کنید.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.