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

السؤال

نشر

السلام عليكم ورحمة الله وبركاته

عندي موقع لعرض الاخبار... يتم كتابة المقالة في لوحة التحكم وارسالها لقاعدة البيانات ويتضمن محتوى المقالة (العنوان, المحتوى, صورة المقالة, القسم, الكلمات المفتاحية) ويتم ارسال عنوان id الكاتب تلقائيا داخل صف المقالة عن طريق ارسال id الحساب المسجل حاليا للكاتب. وعندي جدول آخر للكاتبين يتضمن الاسم والصورة والوصف ورقم id 

في لوحة التحكم أريد عرض جميع مقالات الموقع عن طريق: 

$get_articles_q = $connection->prepare("SELECT title, image, date, author FROM articles ORDER BY id DESC LIMIT 12");
$get_articles_q->execute();
$get_articles_d = $get_articles_q->fetchAll();

ويتم عمل loop داخل $get_articles_d لجلب جميع المقالات.

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

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

فهل من حل؟

إذا لم تفهم من فضلك إسألني في التعليقات

Recommended Posts

  • 0
نشر

حسب ما فهمت تريد عرض معلومات من جدول author مع المقالات

يمكن عمل ذلك بإستخدام left join في أمر الإستعلام.

 

SELECT articles.title, articles.image, articles.date, articles.author, author.name, author.photo
FROM articles 
LEFT JOIN author ON articles.author = author.id
ORDER BY id DESC LIMIT 12

هكذا يكون لديك معلومات المقالة وإسم الكاتب وصورته و أي حقل تريده من جدول author

بالتوفيق أخي.

 

  • 0
نشر

تقنيا وحتى تبرمج بطريقة إحترافية يجب عليك أن تقوم بربط جدول articles بجدول authors وذلك من خلال إضافة التحديث التالي على جدول articles في قاعدة البيانات:

ALTER TABLE articles
ADD FOREIGN KEY (author_id) REFERENCES Authros(id);

حيث أن author_id عبارة عن column جديدة في جدول articles هي من تربط جدول articles بجدول authors

وبعدها فقط ستحتاج لل inner join في الإستعلام على PHP بالشكل التالي:

SELECT *
FROM articles
INNER JOIN authors
WHERE articles.author_id = authors.id;

ليصبح الإستعلام على الشكل التالي في كود PHP:

$get_articles_q = $connection->prepare("SELECT * FROM articles
INNER JOIN authors WHERE articles.author_id = authors.id ORDER BY articles.id DESC LIMIT 12");
$get_articles_q->execute();
$get_articles_d = $get_articles_q->fetchAll();

تحياتي.

  • 0
نشر

عليك تضمين id المؤلف مع المقالة في قاعدة البيانات للمستخدم المسجل (و تأكد من عمل insert  لـ id عند إضافة مقالة )

اتبع الخطوات هنا:

// add id to query and the DB table
$get_articles_q = $connection->prepare("SELECT id, title, image, date, author FROM articles ORDER BY id DESC LIMIT 12");
$get_articles_q->execute();
$get_articles_d = $get_articles_q->fetchAll();



loop on $get_articles_q  {
    // GET auther info
	// id = $get_articles_q[index].id;
	$get_author_q = $connection->prepare("SELECT name, image FROM author where id = my_id");
	$get_author_q->execute();
	
	//TODO
	//merge your data

}

بالتوفيق

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...