اذهب إلى المحتوى

السؤال

نشر

تحيه طيبه للجميع 

لدي استفسار لو تكرمتم 

لمن سبق وان عمل على هذا الخاصية على موقع او تطبيق هاتف نقال انا قمت بعمل جدول في قاعدة من نوع MySQL  يحتوي على الـ Body + title+ date لحفظ اشعارات التطبيق العامة التي يتم ارسالها من قبل إدارة التطبيق مثل التهنئة في حالة المناسبات او التنبيهات العامة وما شابه .. الخ.

المشكلة الان : هذا الاشعارات تصل الى جميع مستعملين التطبيق وانا ارغب بعمل خاصية IsWatched + Badges بحيث يكون فيه تنبيه للمستخدم لو لم يقم بمشاهدة هذا الاشعار الجديد ولكن المشكلة ان هذا الاشعار تم ارساله الى جميع المستعملين كيف ممكن اسجل او احفظ من قام بمشاهدة هذا التنبيه كيف هيا الفكرة العامة حتى أقوم بإدارة هذا الامر؟

ك مثال في حالة ارسال اشعار الى مستخدم واحد كان الامر بسيط ممكن إضافة خانة مرتبطة بمعرف المستخدم + IsWatched وينتهي الامر ولكن كيف نعمل في الحالة أعلاه مع مستخدمين متعددين؟ ما هيا الحلول المتوفره؟

 

شكرا لكم

Recommended Posts

  • 1
نشر

بما أنه لدينا إشعارات و مستخدمين، و هناك إشعارات تصل إلى عدة عملاء  و عملاء يتلقون أكثر من إشعار، فإنه لدينا هنا علاقة متعدد لمتعدد.

بالتالي أفضل طريقة للقيام بذلك هو إنشاء جدول لهذه العلاقة بحيث تحوي على المفتاح الرئيسي الذي يمثل العميل (أي المفتاح الرئيسي لجدول العملاء) بالإضافة للمفتاح الرئيسي لجدول الإشعارات، و بالتالي يمكننا في هذا الجدول تخزين هذه المعلومات.

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

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

طريقة أخرى أن تخزن في هذا الجدول كافة الإشعارات، و عندما يرى مستخدم إشعار ما، تقوم بحذف السطر الذي يوافق المفتاح الرئيسي للمستخدم و المفتاح الرئيسي للإشعار.

في كلتا الطريقتين الجدول الذي ستقوم بإنشاءه سيكون المفتاح الرئيسي له مركب من العمود الذي يمثل المفتاح الرئيسي للمستخدم و العمود الذي يمثل المفتاح الرئيسي للإشعار.

  • 0
نشر
بتاريخ 1 ساعة قال Kais Hasan:

بما أنه لدينا إشعارات و مستخدمين، و هناك إشعارات تصل إلى عدة عملاء  و عملاء يتلقون أكثر من إشعار، فإنه لدينا هنا علاقة متعدد لمتعدد.

بالتالي أفضل طريقة للقيام بذلك هو إنشاء جدول لهذه العلاقة بحيث تحوي على المفتاح الرئيسي الذي يمثل العميل (أي المفتاح الرئيسي لجدول العملاء) بالإضافة للمفتاح الرئيسي لجدول الإشعارات، و بالتالي يمكننا في هذا الجدول تخزين هذه المعلومات.

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

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

طريقة أخرى أن تخزن في هذا الجدول كافة الإشعارات، و عندما يرى مستخدم إشعار ما، تقوم بحذف السطر الذي يوافق المفتاح الرئيسي للمستخدم و المفتاح الرئيسي للإشعار.

في كلتا الطريقتين الجدول الذي ستقوم بإنشاءه سيكون المفتاح الرئيسي له مركب من العمود الذي يمثل المفتاح الرئيسي للمستخدم و العمود الذي يمثل المفتاح الرئيسي للإشعار.

مرحبا اخي الكريم

شاكر لك ردك عزيزي

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

اذا كانت لديك فكره في الاستعلامات هل يمكنك مساعدتي في هذا السطر لو تكرمت:

$sql = "SELECT * FROM Notifications 

LEFT JOIN IsWatchedNotifications ON Notifications.NotificationsID = IsWatchedNotifications.NotificationsID

where  ";

مع العلم ان جدول الاشعارات الأساسي هو Notifications وهو يحتوي فقط تفاصيل الاشعارات العامة

اما الجدول الثاني هو IsWatchedNotifications  وهو يحتوي على id المستخدم + id الاشعارات 

كيف يمكنني جمع العلاقة الان بينهم اذا كانت لديك فكره في هذا الامر

  • 0
نشر
بتاريخ 2 ساعات قال Kais Hasan:

بما أنه لدينا إشعارات و مستخدمين، و هناك إشعارات تصل إلى عدة عملاء  و عملاء يتلقون أكثر من إشعار، فإنه لدينا هنا علاقة متعدد لمتعدد.

بالتالي أفضل طريقة للقيام بذلك هو إنشاء جدول لهذه العلاقة بحيث تحوي على المفتاح الرئيسي الذي يمثل العميل (أي المفتاح الرئيسي لجدول العملاء) بالإضافة للمفتاح الرئيسي لجدول الإشعارات، و بالتالي يمكننا في هذا الجدول تخزين هذه المعلومات.

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

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

طريقة أخرى أن تخزن في هذا الجدول كافة الإشعارات، و عندما يرى مستخدم إشعار ما، تقوم بحذف السطر الذي يوافق المفتاح الرئيسي للمستخدم و المفتاح الرئيسي للإشعار.

في كلتا الطريقتين الجدول الذي ستقوم بإنشاءه سيكون المفتاح الرئيسي له مركب من العمود الذي يمثل المفتاح الرئيسي للمستخدم و العمود الذي يمثل المفتاح الرئيسي للإشعار.

لقد نجح الامر كل الشكر لك اخي الكريم

أيضا تم حل المشكلة السابقة ولكني لا استطيع حذف مشاركتي

كل الشكر لك اخي

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...