سؤال

أنا آسف حقًا إذا تم طرح هذا السؤال أو الإجابة عليه بالفعل، لكن يبدو أنني لا أستطيع العثور على ما أحتاج إليه.

لقد قمت ببناء كل جزء آخر من هذا، وسؤالي الوحيد هو التعليقات المضمنة المحيطة.أود أن أفعل شيئًا مشابهًا لما يفعله Facebook حيث يعرضون تعليقات x باستخدام زر لعرض جميع التعليقات y.

ومع ذلك، فإن الطريقتين الوحيدتين اللتين يمكنني رؤيتهما للقيام بذلك هما:

  1. إجراء تحديد في الحلقة التي تعرض كل عنصر (أعتقد أن أي شخص قد يكون لديه إجابة لهذا سيوافقني على أن هذا قرار فظيع)
  2. إجراء تحديد كبير واحد لسحب جميع التعليقات حيث يوجد news_id في مجموعة فرعية معينة، ثم استخدم PHP للتكرار عليها، وحدد x الأحدث، وتجاهل الباقي.

لا يبدو أن أياً من هذه الحلول هو الحل الجيد؛ومع ذلك، لأن كلاهما ينطوي على هدر كبير للموارد.

هل لدى أي شخص اقتراح محتمل لتنفيذ ذلك؟

هل كانت مفيدة؟

المحلول

giveacodicetagpre.

هذا هو استعلام بسيط للغاية ولكنه قوي للتعليقات.

الرمز الفعلي giveacodicetagpre.

نصائح أخرى

كنت أستخدم تحديد بحد أقصى إضافة إلى الفقرة، طلب "معرف" في DESC.شيء مثل .. "حدد * من التعليقات الحد 3 DESC"

عندما ينقر المستخدم على زر "تحميل المزيد من التعليقات"، قم بتنفيذ نوع من طلب AJAX مع استعلام مشابه ل .. "SELECT * من Comments Limit X و 3 Desc"

سأفعل JOIN, ، وفرز البيانات بعد ذلك.شيء مثل:

SELECT articles.id, articles.text, articles.date, 
       comments.id, comments.text, comments.date
FROM articles LEFT JOIN comments ON (comments.article_id = articles.id)
WHERE {some criteria} ORDER BY articles.date, comments.date

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

إذا كنت تريد فقط أفضل 40 مشاركة، فسيتعين عليك إضافة هذا الشرط إلى عبارة المكان (في الواقع، يمكنك تغليف أي عملية تصفية تقوم بها أيضًا):

WHERE articles.id IN (SELECT id FROM articles ORDER by articles.date LIMIT 40)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top