PDA

View Full Version : سوال: ساخت آرشیو خبری



soroush.r70
شنبه 26 اسفند 1391, 18:08 عصر
چطوری می تونم مطالب وب سایت به صورت آرشیو در بیارم

مثال :

دي - 1384
بهمن - 1384
اسفند - 1384
--------------------------------------------------------------------
فروردين - 1385
ارديبهشت - 1385
خرداد - 1385
تير - 1385
مرداد - 1385
شهريور - 1385
مهر - 1385
آبان - 1385
آذر - 1385
دي - 1385
بهمن - 1385
اسفند - 1385
--------------------------------------------------------------------
فروردين - 1386
ارديبهشت - 1386
خرداد - 1386
تير - 1386
مرداد - 1386
شهريور - 1386
مهر - 1386
آبان - 1386
آذر - 1386
دي - 1386
بهمن - 1386
اسفند - 1386

soroush.r70
شنبه 26 اسفند 1391, 18:42 عصر
ببنین رکورد ها درج می شه با تاریخ به این صورت 13910101 د رجدول حلا می خوام به صورت فرمت بالا در صفحه آرشیو اخبار را به صورت ماه به ماه جدا کنه و لینک ایجاد بشه

خیلی فوریه متشکرم...

T.R.G.T
شنبه 26 اسفند 1391, 19:03 عصر
خیلی ساده با توجه به تاریخ مطالب اونا رو دسته بندی کنید

soroush.r70
شنبه 26 اسفند 1391, 19:10 عصر
درسته ببین هر خبری که ثبت می شه یه تاریخی داره خوب که در صفحه اخبار درج می شه حالا شاید در یک ماه 1000 تا خبر درج بشه که می خوام این خبرها درصفحه آرشیو به صورت ماهیانه درج بشه و کاربر با کلیک روی مثلا فروردين - 1385 بره اخباری که در این ماه درج شده رو ببینه

T.R.G.T
شنبه 26 اسفند 1391, 20:09 عصر
اول مطالب رو بر اساس سال دسته بندی کنید
بعد براساس ماه بعد هم بر اساس ماه در قسمت ماه
چطور براساس سال تقسیم کنید
__تاریخ تمام مطالب رو بخونید بعد
___براساس تاریخ بزرگترین سال و کوچکترین سال رو دریافت کن یک آرایه بین این دوتاتاریخ ایجاد کن یعنی اگه بزرگترین تاریخ 10 بود و کوچکترین 1 یک آرایه با 10 عضو ایجاد کن و سال ها رو درون اون قرار بده
____با توجه به به سال ها مطالب رو جدا و در آرایه ای قرار بده(برسی کن اگه داده ... بین سال{سال ها رو از آرایه سال ها دریافت کن} ... و... قرار داشت داده رو به آرایه اضافه کن)نام آرایه را سال قراربده(یعنی اگه مطالب بین 1389 و 1390 قرار داشت نام آرایه را 1389 بزار)
_____با توجه به آرایه سال ها تاریخ مطالب{همان مطالبی که در خط 3 برای سال مربوطه دریافت کردید} رو بخون(بزرگترین ماه و کوچکترین ماه رو بخون بر اساس اون آرایه ای بین این دو تا ایجاد کن(درست مثل خط 2){کلید دسترسی آرایه رو سال انتخاب کن}
______با توجه به آرایه ماه و سال مطالب رو در آرایه ای قرار بده (مثلا اگه تاریخ داده ها بین 1389-4 و 1389-5 )بود مطالب رو داخل آرایه ای با نام ماه و سال قرار بده مانند {1389-4}

با این راه حل می تونی هم
مطال مربوط به یک سال
مطالب مربوط به هرماه
سال ها
ماه های هرسال
رو جدا کنی
این ساده ترین راه ممکنه یزره روش کار کنی الگوریتم بهتری هم میتونی پیدا کنی

soroush.r70
شنبه 26 اسفند 1391, 20:57 عصر
با تشکر چطوری می شه این گفته ها رو در سورس زیر اعمال کنم فقط تا فردا ظهر فرصت دارم

global $dbhost,$dbname,$dbuser,$dbpass,$tbl_name,$gdate2, $gdate,$op;
$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$link);
$sql="select * from `news` ";
$result=mysql_query($sql,$link);
if(mysql_affected_rows($link)>0)
{
while($row=mysql_fetch_assoc($result))
{


echo'
<center><a href="news1.php?id='.$row['id'].'">'.$row["pdate"]=get_jalali_date2($row["pdate"]).'</a></center>
';


}
}

$ M 3 H R D A D $
شنبه 26 اسفند 1391, 21:48 عصر
تاریخم به صورت 13911213 هست

<option value="0" selected="selected">لطفا انتخاب کنید</option>
<?php
$month_list = array('1'=>'فروردین','2'=>'اردیبهشت','3'=>'خرداد','4'=>'تیر','5'=>'مرداد','6'=>'شهریور','7'=>'مهر','8'=>'آبان','9'=>'آذر','10'=>'دی','11'=>'بهمن','12'=>'اسفند');

$archive = $obj->query_mysql('SELECT * FROM ( SELECT SUBSTRING( date, 1, 4 ) AS Y, SUBSTRING( date, 5, 2 ) AS M, SUBSTRING( date, 7, 2 ) AS D FROM news )news GROUP BY Y, M order by Y ');
while($archive_info = $obj->array_mysql($archive))
{
?>
<option <?php echo (isset($_SESSION['archive_select']) && $_SESSION['archive_select']!='0') && $_SESSION['archive_select']==$archive_info['Y'].$archive_info['M']?'selected="selected" ':''; ?> value="<?php echo $archive_info['Y'].$archive_info['M']; ?>"><?php echo 'اخبار '.$month_list[(int)$archive_info['M']].' '.$archive_info['Y']; ?></option>
<?php
}
?>
</select>

soroush.r70
یک شنبه 27 اسفند 1391, 00:21 صبح
متشکر

دوستان ببینین در واقع من خبرهامو از داخل ادمین با تاریخ درج می کنم و در صفحه اخبار نمایش می دم درسته حالا می خوام این اخبار در صفحه archive.php به صورت فرمت بالا که گفتم اخبارهای مربوط به هر ماه رو در داخل لینک خودش نشون بده به صورت آرشیو ماهیانه در مورد فرخوانی دستور چه کاری باید انجام بدم که اخبار های مربوط به مثلا ماه مهر 91 در لینک مهر 91 و .... نشون داده بشه.

$ M 3 H R D A D $
یک شنبه 27 اسفند 1391, 00:46 صبح
کد من دقیقا همون کارو میکنه مشکلتون چیه باهاش ؟

$ M 3 H R D A D $
یک شنبه 27 اسفند 1391, 00:47 صبح
http://babaei-babol.ir/main/?page=news_archive

soroush.r70
یک شنبه 27 اسفند 1391, 08:02 صبح
ممنونم در واقع می خوام به این صورت باشه

http://www.shomalnews.com/index.php?archive

و اینم تصویری از جدول اخبارم هست

http://upload7.ir/images/93389146047567071178.jpg

MMSHFE
یک شنبه 27 اسفند 1391, 10:01 صبح
کد archive.php :


<!doctype html>
<html dir="rtl">
<head>
<title>Archive</title>
<meta charset="utf-8"/>
<style type="text/css">
* {
text-decoration: none;
}
</style>
</head>
<body>
<?php
$months = array(
'فروردین', 'اردیبهشت', 'خرداد',
'تیر', 'مرداد', 'شهریور',
'مهر', 'آبان', 'آذر',
'دی', 'بهمن' , 'اسفند'
);
mysql_connect('localhost', 'root', 'ncis') or die('Connection error');
mysql_select_db('test') or die('Database error');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
if(!isset($_GET['year'], $_GET['month'])) {
$dates = mysql_query('SELECT DISTINCT SUBSTRING(`pdate`, 1, 6) AS `pdate` FROM `articles` ORDER BY `pdate`');
if($dates && mysql_num_rows($dates) > 0) {
while($date = mysql_fetch_assoc($dates)) {
$year = substr($date['pdate'], 0, 4);
$month = substr($date['pdate'], 4, 2);
echo '<a href="?year=' . $year . '&month=' . $month . '">' . $months[$month - 1] . ' - ' . $year . '</a><br/>' . PHP_EOL;
}
mysql_free_result($dates);
}
else {
echo '<p>مطلبی در آرشیو یافت نشد.</p>' . PHP_EOL;
}
}
else {
$year = mysql_real_escape_string($_GET['year']);
$month = mysql_real_escape_string($_GET['month']);
if($month < 10) {
$month = '0' . intval($month);
}
$articles = mysql_query("SELECT * FROM `articles` WHERE (SUBSTRING(`pdate`, 1, 6)='{$year}{$month}') ORDER BY `pdate`");
if($articles && mysql_num_rows($articles) > 0) {
while($article = mysql_fetch_assoc($articles)) {
echo '<a href="article.php?id=' . $article['id'] . '">' . $article['title'] . '</a><br/>' . PHP_EOL;
}
mysql_free_result($articles);
}
echo '<br/>' . PHP_EOL . '<a href="' . $_SERVER['SCRIPT_NAME'] . '">بازگشت به صفحه اصلی آرشیو</a>' . PHP_EOL;
}
?>
</body>
</html>