PDA

View Full Version : سوال: نحوه ایجاد خلاصه مطلب و خواندن آن از دیتابیس



esteftaats
چهارشنبه 22 مرداد 1393, 01:57 صبح
دوستان بعضی از سایت ها رو می بینیم که از هر مطلب یه خلاصه ای قرار میدن و کاربر وقتی روی ادامه مطلب کلیک می کنه مابقی یا کل اون مطلب رو می خونه مانند بلاگ ها و سایت های وردپرسی.

می خواستم بدونم برای اینکه برای خلاصه مطلب مثلا 100 کلمه اون پست رو از دیتابیس گرفت باید چکار کرد؟ دستور خاصی توی کوئری باید اضافه کرد؟

تشکر

css-man
چهارشنبه 22 مرداد 1393, 03:17 صبح
شما کوئری رو میزنی مطلبو میکشی بیرون بعد با تابعی مثل mb_substrیا هر تابع دیگه ای که این کار رو انجام میده هر تعداد کارکتری که خواستی رو میتونی جدا کنی و نمایش بدی

arash691
چهارشنبه 22 مرداد 1393, 08:53 صبح
یکم جستجو میکردی قبلا" در موردش صحبت شده ...

اینم لینک :
http://barnamenevis.org/showthread.php?215150-snippet-%D9%87%D8%A7%DB%8C-php&p=1034902&viewfull=1#post1034902

vahidqara
چهارشنبه 22 مرداد 1393, 09:26 صبح
درود .. میتونی یه فیلد به جدول مطلبت به نام abstract اضافه کنی که چکیده ای از مطلب رو توش قرار بدی و آن را نمایش بدی :لبخندساده:

arash691
چهارشنبه 22 مرداد 1393, 09:30 صبح
درود .. میتونی یه فیلد به جدول مطلبت به نام abstract اضافه کنی که چکیده ای از مطلب رو توش قرار بدی و آن را نمایش بدی :لبخندساده:

این روش بهینه نیست ! ذخیره فیلد اضافی تو جدول ، بالا رفتن زمان درج ( یکی درج خلاصه و دیگری متن اصلی )

esteftaats
چهارشنبه 22 مرداد 1393, 09:54 صبح
شما کوئری رو میزنی مطلبو میکشی بیرون بعد با تابعی مثل mb_substrیا هر تابع دیگه ای که این کار رو انجام میده هر تعداد کارکتری که خواستی رو میتونی جدا کنی و نمایش بدی


یکم جستجو میکردی قبلا" در موردش صحبت شده ...

اینم لینک :
http://barnamenevis.org/showthread.php?215150-snippet-%D9%87%D8%A7%DB%8C-php&p=1034902&viewfull=1#post1034902

مشکل اینه که اطلاعات مورد نظر از طریق ادیتور کد شده. مثلا اگه من محدودیت 200 کاراکتری رو تعریف بکنم به این دلیل که ممکنه هر چیزی توی این 200 کاراکتر باشه بنابراین تعداد کاراکترهای چاپ شده در مرورگر برای هر پست با پست های دیگر متفاوت است. مثالی می زنم :

پست اول : برای دانلود نرم افزار بر روی اینجا کلیک کنید.

پست دوم : برای دانلود نرم افزار بر روی <a href="dl.com/dl.zip"کلیک کنید</a>

خوب در مثال دوم می بینید که بخاطر وجود تگ a تعداد کاراکترها با اینکه متن اصلی تغییری نکرد بیشتر بود!!

درود .. میتونی یه فیلد به جدول مطلبت به نام abstract اضافه کنی که چکیده ای از مطلب رو توش قرار بدی و آن را نمایش بدی :لبخندساده:

اتفاقا از این روش استفاده می کنم ولی :

این روش بهینه نیست ! ذخیره فیلد اضافی تو جدول ، بالا رفتن زمان درج ( یکی درج خلاصه و دیگری متن اصلی )

vahidqara
چهارشنبه 22 مرداد 1393, 09:59 صبح
به هر حال هر روشی یه سری معایب و یک سری مزایا داره.. :لبخندساده:

بهزاد علی محمدزاده
چهارشنبه 22 مرداد 1393, 10:15 صبح
این روش بهینه نیست ! ذخیره فیلد اضافی تو جدول ، بالا رفتن زمان درج

مگر می خواد شبکه اجتماعی طراجی کنه ؟ . ذخیره چکیده مطالب اونم برای یه cms که طرف شاید هفته ایی یه بار هم مطلبی بذاره شاید هم نذاره, دیگه اینقدر هم نیاز به بهینه فکر کردن نیست و زمان درج رو هم بالا نمیبره . یعنی سیستم ها کنونی اینقدر پیشرفت کردن که چکیده مطالب اصلا به حساب نیاد .

حالا ما اگر متن اصلی و واکشی کنیم و بعد بدیم به یه تابع که یه تعداد کاراکتر و ازش جدا کنه , این بهینه است ؟! . یعنی در صفحه ایی که 20 مطلب نمایش داده میشه . ما همه رو بصورت کامل واکشی کنیم و بعد ازش ببریم ؟

چیکده مطلب و از Editor نگیر . خب یه textarea ساده هم میشه براش گذاشت . اگر هم editor هست دیگه نباید کاربر هرچیزی رو توی چیکده بیاره . باید بدونه که ساختار طراحی به هم میریزه .

مهرداد سیف زاده
چهارشنبه 22 مرداد 1393, 10:24 صبح
برای خلاصه مطالب بستگی به ماهیت سایت و پروژه داره
مثلا یه سایت خبری سرو کار زیادی با خلاصه مطالب داشت تعداد کاربران زیادی هر لحظه کوئری میزدن و خلاصه مطالب باید براشون لود میشد غیر از این که rss و صفحه اول و ارسال به ایمیل و پیامک هم در میان بود و این بود که تصمیم گرفتم خلاصه مطالب یه فیلد جداگانه باشه و همچنین تعداد کاراکتر رو هم بشموره چون قرار ارسال پیامکی هم بشه
ولی در مورد cms های ساده نه. خلاصه مطالب میتونه همون فیلد مطلب باشه برای مشکل تگها هم تابع trip_tags (http://php.net/manual/en/function.strip-tags.php) استفاده کن که کل تگهای html رو پاک میکنه و متن خالی بهت میده
البته برای یک cms بیشتر تکنیک ادامه مطلب بکار برده میشه. به این صورت که در ادیتور متن رشته ای جا گزاری میشه که اگر در محتوای مطلب اون رشته وجود داشته باشه در صفحه اول فقط از ابتدای مطلب تا اون رشته رو چاپ میکنه و بجای بقیه لینکی میزاره که کاربر رو به صفحه نمایش کامل مطلب هدایت میکنه سایت همکدی مطلبی درباره این کار نوشته بود hamcodi.ir

css-man
چهارشنبه 22 مرداد 1393, 12:22 عصر
یه تالعی در php ست برای اینجور وقتا بدر میخوره
یکی htmlentities و یکی هم
html_entity_decode

برای ذخیره اطلاعات تودیتابیس از اولی و موقع خوندش هم از دومی استفاده کن درست میشه

esteftaats
چهارشنبه 22 مرداد 1393, 15:15 عصر
با تشکر از تمامی دوستان.

فکر می کنم بهترین راه حل برای من این یکیه :



چیکده مطلب و از Editor نگیر . خب یه textarea ساده هم میشه براش گذاشت . اگر هم editor هست دیگه نباید کاربر هرچیزی رو توی چیکده بیاره . باید بدونه که ساختار طراحی به هم میریزه .

البته شاید حجم داده ها رو بیشتر کنه که می کنه ولی چیزی که به نظر من مهم تره سرعته. شاید توی یک صفحه 50 تا صفحه باید خونده بشه اگه هر کدوم بخواد با تابع فلان کوتاه بشه به نظرم بهینه نیست