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

السؤال

نشر

اعمل على فكرة اول تجربه لي من خلالها ..

ما احاول القيام به كالتالي:انشاء رسائل خاصة بين الاعضاء.

على سبيل المثال لدي مستخدم اسمه احمد ومستخدم اسمه محمد

محمد قام بنشر موضوع بعنوان : كيف نتعلم البرمجة .

ياتي احمد ويقوم بتواصل لدى محمد عن طريق الرسائل الخاصة

اول رسالة : كم احتاج وقت حتى اتعلم البرمجة؟

الرسالة الثانية : هل يمكنني التعلم خلال شهر واحد؟

الرسالة الثالثه: ما الفرق بين flutter  و java ?

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

كيف اقوم بجلب اول رسالة قام بارسالها احمد الى محمد وعرضها في list  مع امكانية لو محمد رغب بشاهدة باقي المحتوى يقوم بضغط على الرسالة الظاهره ثم ينتقل الى صفحه مختلفه ليتم عرض المحادثه كامله من خلالها ؟

ايضا لو كان في مستخدمين مختلفين غير احمد وقام بارسال رسائل مختلفه الى محمد على نفس الموضوع

Recommended Posts

  • 0
نشر

ستقوم بتخزين id محمد و تخزين id للرسائل بحيث عند إرسال الرسالة يتم حفظها, ويكون الاستعلام بهذا الشكل 

$sql = "SELECT * FROM messages WHERE user_id = {$user_id} and msg_id = {$msg_id}";
$sql = mysqli_query("معرف الاتصال", $sql);

وهكذا تستطيع عمل Loop خاصة للرسائل الخاصة بمحمد و الخاصة بالرسائل.

الفكرة بعمل جدول للإعضاء و جدول للرسائل و جدول للمحادثات داخل كل رسالة.

أو يمكنك إرفاق ملفات مشروعك هنا لنساعدك في حلها.

  • 2
نشر (معدل)

الفكرة كالتالى اخى الكريم سنقوم بعمل جدول خاص بالمواضيع : 

CREATE TABLE subjects (
    id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(30) NOT NULL,
    description VARCHAR(30) NOT NULL,
    user_id bigint UNSIGNED,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

ونقوم بعمل جدول يسمى المحادثات ويكون كالتالى : 

CREATE TABLE conversations (
    id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    subject_id bigint UNSIGNED,
    tile VARCHAR(190) NOT NULL,
    user_id bigint UNSIGNED,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

بحيث ان تكون المحادثة مربوطة بالموضوع وال user_id هنا يكون اليوزر الذى يريد ان يتحدث مع صاحب الموضوع بحيث اذا اراد اى مستخدم التحدث مع صاحب الموضوع نقوم بعمل محادثة له فى جدول ال conversations ومجرد عنوان ابتدائى للمحادثة 

ومن ثم نقوم بعمل جدول نقوم بتخزين الرسائل فية ويكون بالشكل التالى : 

CREATE TABLE messages (
    id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    conversation_id bigint UNSIGNED,
    msg text NOT NULL,
    user_id bigint UNSIGNED,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
subjects table :

---------------------
id | title | user_id
---------------------
1  | title | 5


conversations table : 

--------------------------------------------------------------
id | subject_id | user_id | title
---------------------------------------------------------------
1  | 1          | 1       | مرحبا لدى عدة اسئله على هذا الموضوع
---------------------------------------------------------------
2  | 1          | 2       | مرحبا اخى الكريم هل لديك وقت كافى  


messages table : 

-----------------------------------------------------------------
id | conversation_id | user_id | title
-----------------------------------------------------------------
1  | 1               | 1       | كم احتاج وقت حتى اتعلم البرمجة؟
-----------------------------------------------------------------
2  | 1               | 5       | تحتاج خمس شهور  

واخيرا اذا اردت ان تسترجع الشات لست يمكن تنفيذ هذه الكويرى : 

SELECT conversations.* FROM `conversations` 
JOIN subjects on subjects.id = conversations.subject_id
WHERE subjects.user_id = 5

وشكرا .

تم التعديل في بواسطة يوسف احمد9
  • 0
نشر
بتاريخ 11 ساعات قال بلال زيادة:

ستقوم بتخزين id محمد و تخزين id للرسائل بحيث عند إرسال الرسالة يتم حفظها, ويكون الاستعلام بهذا الشكل 


$sql = "SELECT * FROM messages WHERE user_id = {$user_id} and msg_id = {$msg_id}";
$sql = mysqli_query("معرف الاتصال", $sql);

وهكذا تستطيع عمل Loop خاصة للرسائل الخاصة بمحمد و الخاصة بالرسائل.

الفكرة بعمل جدول للإعضاء و جدول للرسائل و جدول للمحادثات داخل كل رسالة.

أو يمكنك إرفاق ملفات مشروعك هنا لنساعدك في حلها.

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

لقد فهمت الفكره ساحاول تطبيق ذلك 

كل الشكر لك 

بتاريخ 8 ساعات قال يوسف احمد9:

الفكرة كالتالى اخى الكريم سنقوم بعمل جدول خاص بالمواضيع : 


CREATE TABLE subjects (
    id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(30) NOT NULL,
    description VARCHAR(30) NOT NULL,
    user_id bigint UNSIGNED,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

ونقوم بعمل جدول يسمى المحادثات ويكون كالتالى : 


CREATE TABLE conversations (
    id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    subject_id bigint UNSIGNED,
    tile VARCHAR(190) NOT NULL,
    user_id bigint UNSIGNED,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

بحيث ان تكون المحادثة مربوطة بالموضوع وال user_id هنا يكون اليوزر الذى يريد ان يتحدث مع صاحب الموضوع بحيث اذا اراد اى مستخدم التحدث مع صاحب الموضوع نقوم بعمل محادثة له فى جدول ال conversations ومجرد عنوان ابتدائى للمحادثة 

ومن ثم نقوم بعمل جدول نقوم بتخزين الرسائل فية ويكون بالشكل التالى : 


CREATE TABLE messages (
    id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    conversation_id bigint UNSIGNED,
    msg text NOT NULL,
    user_id bigint UNSIGNED,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

subjects table :

---------------------
id | title | user_id
---------------------
1  | title | 5


conversations table : 

--------------------------------------------------------------
id | subject_id | user_id | title
---------------------------------------------------------------
1  | 1          | 1       | مرحبا لدى عدة اسئله على هذا الموضوع
---------------------------------------------------------------
2  | 1          | 2       | مرحبا اخى الكريم هل لديك وقت كافى  


messages table : 

-----------------------------------------------------------------
id | conversation_id | user_id | title
-----------------------------------------------------------------
1  | 1               | 1       | كم احتاج وقت حتى اتعلم البرمجة؟
-----------------------------------------------------------------
2  | 1               | 5       | تحتاج خمس شهور  

واخيرا اذا اردت ان تسترجع الشات لست يمكن تنفيذ هذه الكويرى : 


SELECT conversations.* FROM `conversations` 
JOIN subjects on subjects.id = conversations.subject_id
WHERE subjects.user_id = 5

وشكرا .

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

لقد فهمت الفكره وشرحك كافي ووافي لقد تم ايضاح الفكره بشكل كامل

جزاك الله الف خير 

بتاريخ 13 ساعات قال Nuhla Almasri:

هل يمكنك ارسال السكيما schema لقاعدة البينات حتى اتعرف اكثر كيف قمت بربط المحادثة مع الاشخاص ؟

شكرا لك لقد تم حل المشكله واعتذر على تاخر ردي

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...