الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

فكرة برمجة موقع فندق بسيط ..

بدأه سيد الاحساس في 19 أغسطس 2010 · 7 رد · 1,282 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

لدي اسفسار حول برمجة بسيطة لموقع فندق بلغة الـ php ، طبعاً أنا صممت واجهات تسجيل مستخدم جديد وكذلك تسجيل الدخول و جزء بسيط من لوحة التحكم ..

الفندق عبارة عن موقع بسيط يستطيع أي زائر البحث عن غرف single+double لمدة معينة مثلاً 2 nights ولايسلتزم انشاء حساب مستخدم جديد ..

تسجيل مستخدم جديد create a new user أو تسجيل الدخول login مطلوب في حالة ان المستخدم أجرى البحث search ويرغب في حجز غرفة فقط ..

مثال:

http://www.etaphotel.com

طبعاً مع الأخذ بعين الاعتبار أن الفندق موجود في مدينة واحدة فقط ولايوجد له فروع (فكرة فندق بسيطة)

لدي عدة اسئلة:

- ماهي الجداول التي ينبغي عليها انشاؤها في قاعدة البيانات وماهي الحقول الأساسية التي يجب على كل جدول أن يحتويها ؟؟

مثلاً : customers, booking, rooms ?? الحقول؟؟

- كيفية تنظيم الغرف من ناحية عندما يبحث المستخدم عن غرفة single بتاريخ معين يظهر له كل الغرف المتاحة available ..

- اريد فكرة عن كيفية ربط غرفة معينة بحيث تكون محجوزة booked لمدة معينة check out .. ماهي الفكرة الأساسية هنا؟

- ماهي أهم الاشياء التي يجب أن تتضمنها لوحة التحكم بالنسبة للموظفين في الفندق staff ؟

دمتم بـ ود ،،

#2

وعليكم السلام

انظر الصورة التالية

post-7008-026801200%201282266411.png

لدينا جدولين العلاقة فيما بينهما one-to-many

حيث يمكن لزبون واحد أن يقوم بحجز عدة غرف باسمه

لكن لا يمكن أن نجد غرفة محجوزة من قبل عدة أشخاص

ID في جدول customers هي عبارة عن مفتاح رئيسي Primary Key لا يمكن أن يتكرر فهو خاص بكل زبون على حدة.

resident في جدول customers عبارة عن حقل تحمل قيمة 0 أو 1 مثلاً (بحيث تشير إلى كون الزبون مقيم في الفندق - أي قام بحجز غرفة ما - أو غير مقيم) وهي طريقة أسهل للحصول على قائمة بأسماء الزبائن الموجودين في الفندق حالياً بسهولة.

booked في جدول rooms عبارة عن حقل مشابه لـ resident يحمل القيمة 0 أو 1 بحيث يشير إلى كون الغرفة محجوزة أو لا وهي طريقة أسهل لتحديد الغرف المحجوزة/غير المحجوزة مباشرة.

nNights تحدد عدد الليالي التي يتم فيها حجز الغرفة (يجب أن يحتوي الحقل Booked في هذه الحالة على القيمة 1 فبدونه ستهمل أي قيمة في الحقل nNights)

room_type تحدد الغرفة single أو double.

هذه هي الحقول الأولية التي تخطر في الذهن وليس بالضرورة أن يكون هذا هو التصميم الأمثل للقاعدة أو الاختيار الأمثل للحقول. سأترك تحديد نمط الحقول لك فهو مجرد مثال توضيحي.

اقتباس
كيفية تنظيم الغرف من ناحية عندما يبحث المستخدم عن غرفة single بتاريخ معين يظهر له كل الغرف المتاحة available ..

سيتم البحث عن الغرف booked = 0 و room_type = single

select room_number from rooms where booked = 0 and room_type = 'single'

ولو اردت اضافة التاريخ إلى الاستعلام (مثال: زبون يبحث عن غرفة فارغة بعد يومين من الآن) ستقوم بدمج استعلام اضافي إلى الناتج السابق

union select room_number from rooms where booked = 1 and room_type = 'single' and --compare dates two days from now

اقتباس
- اريد فكرة عن كيفية ربط غرفة معينة بحيث تكون محجوزة booked لمدة معينة check out .. ماهي الفكرة الأساسية هنا؟

وضح أكثر. هل المثال السابق لا يكفي ؟

اقتباس
- ماهي أهم الاشياء التي يجب أن تتضمنها لوحة التحكم بالنسبة للموظفين في الفندق staff ؟

من هو كادر الموظفين المعني بالعملية.. المسؤولين عن ترتيب حجز الغرف ؟

post-7008-026801200 1282266411_thumb.png

المرفقات
untitled.PNG

تم تعديل هذه المشاركة بواسطة Xacker في 20 أغسطس 2010 في 04:13

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

بالنسبة للحقول والعلاقة بين الجدولين .. أشوف انه منطقي جداً ..

بس فيه سؤال هنا:

- هل لابد أن اضيف حقلين وهما from , to الى جدول الـ rooms لكي اتمكن من تحديد الـ check in و check out وهما عبارة عن تاريخ الوصول والمغادرة للمستخدم .. بحيث أن تكون الغرفة مشغولة ولايستطيع اي شخص آخر حجز الغرفة في التاريخ المحدد بل يمكن حجزها بعد تاريخ الـ check out

(لازال هذا السؤال يراودني!!)

والتي يمكن أن يتعلق بالبحث عن غرفة في تاريخ معين ..

اقتباس

ولو اردت اضافة التاريخ إلى الاستعلام (مثال: زبون يبحث عن غرفة فارغة بعد يومين من الآن) ستقوم بدمج استعلام اضافي إلى الناتج السابق

union select room_number from rooms where booked = 1 and room_type = 'single' and --compare dates two days from now

اقتباس

من هو كادر الموظفين المعني بالعملية.. المسؤولين عن ترتيب حجز الغرف ؟

نعم أخوي ...

#4
سيد الاحساس كتب:

- هل لابد أن اضيف حقلين وهما from , to الى جدول الـ rooms لكي اتمكن من تحديد الـ check in و check out وهما عبارة عن تاريخ الوصول والمغادرة للمستخدم .. بحيث أن تكون الغرفة مشغولة ولايستطيع اي شخص آخر حجز الغرفة في التاريخ المحدد بل يمكن حجزها بعد تاريخ الـ check out

نعم قم بإضافة الحقلين from, to بدلاً من nNights

ستتمكن من خلالهما من البحث عن زبون في فترة (من - إلى) حتى في المستقبل لتعلم متى دخل وخرج فلان (ربما لأسباب أمنية مثلاً)

أيضاً يخطر في ذهني الآن أن تقوم بإضافة حقل خاص بكلفة استئجار الغرفة، فقد تكون هناك غرف مفردة لكن يختلف سعرها حسب موقعها واطلالتها الخ الخ..

بالنسبة لكادر الفندق، أقترح أن توفر أي شئ يمكن البحث عنه.

فالقاعدة في النهاية لا تحوي إلا على الأمور الضرورية لهم.

مثلاً البحث عن زبون باستخدام أي من الحقول المتوفرة (اسمه الأول، الكنية، اسم الأب، الرقم الوطني... إلخ)

هل هو مقيم أم لا ؟

البحث عن الغرف الشاغرة من أي نوع.

البحث عن الغرف الشاغرة من نوع محدد.

البحث عن الغرف الشاغرة بتاريخ كذا.

البحث عن الغرف التي تكون كلفتها بين كذا وكذا.

تستطيع التفكير بالكثير من الأمور الأخرى لخيارات البحث ... بالمختصر قم باستغلال أي تركيبة بحث يمكن أن تفيد موظف استقبال في فندق، أو اسأل أحدهم :)

تم تعديل هذه المشاركة بواسطة Xacker في 20 أغسطس 2010 في 13:37

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#5

الله يعطيك العافية أخوي Xacker

هل يلزمنا استحداث جدول آخر خاص بالحجز لنسمه مثلاً booking وهو لربط حجز الغرف بالمستخدمين وكذلك التحكم في الخيارات الأخرى؟

لكن ليس لدي فكرة واضحة عما قد يحتويه الجدول من حقول مطلوبة ..

أفدت و أجدت ..

لك مني دعوة في هذا الشهر الفضيل ..

دمت بـ ود ،،

#6

نعم من الممكن.

قم بإنشائه وليحتوي على:

1- ID الزبون

2- ID الغرفة

3- fromDate

4- toDate

نستطيع القول أن ID الغرفة هو ذاته room_number لأنه رقم فريد unique حيث لا يمكن أن يكون هناك غرفتين بذات الرقم، بالتالي تستطيع حذف الحقل room_number.

هل من أفكار أخرى نتباحثها ؟

تم تعديل هذه المشاركة بواسطة Xacker في 20 أغسطس 2010 في 15:20

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#7

معليش اخوي Xacker كثرت عليك والله بس ..

بالنسبة لجدول الغرف rooms اذا بغيت اضيف له حقول الخدمات الموجودة مثلاً TV, internet and A/C بحيث ان بعض الغرف تكون فيها هالخدمات وبعضها لاتوجد فيها ... سؤالي مانوعية الحقول هنا ؟؟ هل اضعها tinyint أم ؟؟؟؟ لأن الخدمة مثلاُ TV تكون لها قيمتين لاغير True or flase ..

===================================

قمت بإنشاء جدول booking وفيه الحقول التالية : مرفق...

طبعاً الحقول :

id خاص بجدول المستخدم وهو foreign key

roomNo خاص بجدول الغرف وهو foreign key ايضاً

بالنسبة للأفكار الأخرى:

- هل يعتبر الجدول والحقول هذه كافية في حالة تغيير / كنسلة الحجز change/cancel reservation من قبل المستخدم بحيث ان مايصير فيه مشكلة بعدين ?

- هل اضيف حقل يبين حالة الحجز booking status يأخذ قيمتين 0 , 1

- كيف اضع فكرة ان المستخدم يستطيع تغيير او كنسلة الحجز قبل الـ check in بـ 24 ساعة مثلاً ؟ وهل فكرة انه عند التغيير او الكنسلة يلزم موافقة الموظف confirm ?

post-67983-073954200 1282318257_thumb.jp

المرفقات
tttttttt.jpg

تم تعديل هذه المشاركة بواسطة سيد الاحساس في 20 أغسطس 2010 في 18:49

#8

ممكن احد يرد او يطرح فكرة الله يعافيكم ...

مواضيع مشابهة