PDA

View Full Version : چگونه آرشیو ماهانه درست کنم ؟



3nitro
پنج شنبه 05 خرداد 1384, 10:37 صبح
فرض کنید من یک سیستم وبلاگ نویسی دارم . حالا میخوام یک لیست از ماه / سال کنار وبلاگم باشه که اگه کاربر روی اون کلیک کرد مطالب مربوط به اون ماه / سال رو بیاره . البته طوری باشه که فقط از اولین پست شروع بشه تا آخرین پست . اگه هم در ماهی مطلبی نیست اون ماه رو اصلا نشون نده . اینجوری مثلا :
فروردین 84
اردیبهشت 84
مرداد 84

M-Gheibi
پنج شنبه 05 خرداد 1384, 18:26 عصر
فکر کنم سخت ترین بخش کار (!) نمایش ماه های موجود در بانک هست (بخش نمایش اطلاعات رو فکر نکنم مشکلی داشته باشید).
چند راه به ذهنم رسید که راحت ترین راهش این بود:
موقع اضافه کردن مطالب (مثلا پست در وبلاگ) در یک فیلد مجزا ماه و سال جاری را اضافه کنید. مقدار وارد شده در بانک باید به این شکل باشد :

yyyy/mm
به این ترتیب می تونید با استفاده از کد زیر چیزی که نیاز دارید رو بدست بیارید:


<%filepath = server.MapPath("database.mdb")
set conn = Server.CreateObject("ADODB.Connection")
conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath
Set rs = conn.Execute("Select DISTINCT fldmonthandyear from tblweblog")
On Error GoTo 0
rs.MoveFirst
do while Not rs.eof
x = MonthName(mid(rs("fldmonthandyear"),6,2)) & " " & left(rs("fldmonthandyear"),4)
response.write(x & "<BR>")
rs.movenext
loop
%>
که در اینجا مقادیر ذکر شده در جدول tblweblog و در فیلد fldmonthandyear ذخیره شده اند.

استفاده از این روش نسبت به راه های دیگه ای که به ذهنم رسید این هست که امکان انجام چنین کاری در تاریخ های هجری شمسی رو در اختیار شما میگذارد. تنها کافیست به هنگام ذخیره اطلاعات شماره سال و ماه در تاریخ شمسی را وارد کنید و یه تغییر کوچک در کد بالا بدید (ماه های سال شمسی را تعریف کنید و با یک عبارت شرطی به جای نمایش شماره ماه نام آن را نمایش دهید).


البته احتملا راه دیگه ای هم باشه ولی از من فقط همین بر میومد. اگه دوستان چیز دیگه ای می دونند دریغ نکنند.

روز خوش

3nitro
پنج شنبه 05 خرداد 1384, 21:32 عصر
خیلی ممنون . این هم یک روشی است . :flower:

تکمیل : (6 خرداد)

یافتم . البته باید اقرار کنم ایده اینکه یک فیلد دیگه داشته باشیم از آقای غیبی بود . :تشویق:
این روشی که دیشب یه دفعه موقع خواب به ذهنم خطور کرد :

تاریخی که ارسال میشه قسمت ماه و سالش با Mid مثلا جدا بشه بعد با قسمت ماه و سال دیگر پست ها سنجیده بشه . اگر همچین تاریخی بود یعنی توی اون ماه قبلا یک پست داشتیم و در فیلد جدیدی که واسه آخرین پست می زنیم مقدار false قرار می گیره . اگه هم تاریخی مثل اون پیدا نشد یعنی اولین پست ما در این ماه هست و مقدار فیلد جدید اون پست true میشه . بعد در آخر هم لیست تمام فیلدهایی که true هستند رو میگیریم . اگر هم در یک ماهی مطلبی ارسال نکنیم اصلا مشکلی ایجاد نمیشه .

فکر کنم حله ( ! ) البته بگمونم . باز هم ممنون از جناب آقای غیبی