لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
استعلام لعرض المقالات الخاصة بكل يوم
السلام عليكم
أقوم بعمل سكريبت للمقالات لكن من نوع مختلف, و المشكل هو في الاستعلام لأنه استعلام و تكرار مرتين
أولا أنا عندي في قاعدة البيانات التالي
إسم قاعدة البيانات article
و محتوى الجداول

CREATE TABLE `article` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`title` VARCHAR( 200 ) NOT NULL ,
`text` TEXT NOT NULL ,
`date` VARCHAR( 200 ) NOT NULL
) ENGINE = MYISAM ;

عند العرض أنا عاوز يتم جلب مواضيع الشهر بأكمله بحيث يظهر في الأعلى اليوم و أسفل منه تظهر مواضيع اليوم ده مثل الصورة ذي أنا استعملت هذا
<?php
    

    
    $connectdb = @mysql_connect('localhost','root','root') or die ("not connect");
    $selectdb = @mysql_select_db('article',$connectdb) or die ("error database");
    
    //الشهر الحالي
    $mois_now = date(m,time());

    $qu = mysql_query("select * from article where date(m,date) = '$mois_now'");
    while($rows1 = mysql_fetch_assoc($qu)){
          $date = $rows1['date'];
          $day = date(d,$date);
          $mont = date(m,$date);
          $year = date(y,$date);

        echo"'$day','$mont','$year'<br/>" ;
        
    }
    
    
?>
المشكل أنه لا أعرف كيف أقوم بالتكرارالثاني داخل هذا التكرار و كذلك منع تكرار نفس اليوم
تاريخ البداية: 5 / فبراير / 2012 الساعة 16:50 اخر نشاط: 6 / فبراير / 2012 الساعة 19:15 php mysql

استخدم حلقة تكرار تقوم بطباعة اليوم والتاريخ
وداخل هذه الحلقة حلقة أخرى تقوم بطباعة الموايع في ذللك اليوم
5 / فبراير / 2012 الساعة 16:59

فعلت و التطبيق اسفله لكن لا نتيجة :S
5 / فبراير / 2012 الساعة 18:52

8 إجابات
انا فهمت قصدك
لذلك اولا عليك عمل حقل التاريخ و ليكن من نوع date
و ندخل فيه التاريخ هكذا 2012-01-07
و حقل آخر لتخزين الاشهر و السنوات هكذا 201201
أو يمكن استعمال حقل واحد من التاريخ و لكن للتسهيل استعمل حقلين

سنستعمل الدالة التالية لتحويل التاريخ الى ثواني ثم الى الى العربية

                  $dates = date_arabic(strtotime($r_date));
                function date_arabic($t){
    $days=array('الأحد','الاثنين','الثلاثاء','الأربعاء','الخميس','الجمعة','السبت');
    $months=array('','يناير','فبراير','مارس','أبريل','مايو','يونيو','يوليو','أغسطس','سبتمبر','أكتوبر','نوفمبر','ديسمبر');
    $date = getdate($t);
    return $days[$date['wday']].' '.$date['mday'].' '.$months[$date['mon']].' '.$date['year'];
}
المهم نبدأ نعرف الشهر الحالي
$mont_today = date("Ym");
نجلب عدد الايام بدون تكرار
$q = mysql_query("select distinct datecom from table.name where date = '$mont_today'") or die(mysql_error());
حقل datecom هو حقل date من نوع date و حقل date هو حقل التاريخ على شكل 201201 أو 201202 , السنة ثم التاريخ و الآن التكرار و طباعة الأيام
               while($r = mysql_fetch_assoc($q)){

        $r_date = $r["datecom"];
        $dates = date_arabic(strtotime($r_date));
        echo"{$dates}<br/>";
الآن الاستعلام و التكرار الثاني راح نجلب المواضيع التي في اليوم ده فقط
$m_q = mysql_query("SELECT * FROM table.name where datecom = '$r_date'") or die(mysql_error());
while($m_r = mysql_fetch_assoc($m_q)){
ثم نطبع عنوان الموضوع و الباقي و أخيراً نغلق التكرار الاول و الثاني
}

         }


و السلام عليكم

بواسطة: Imad
منذ: 6 / فبراير / 2012 الساعة 12:45

هذا ما كنت اريده بارك الله فيك
6 / فبراير / 2012 الساعة 13:3

متميز كالعادة يااخ عماد .. بارك الله فيك
6 / فبراير / 2012 الساعة 17:51

هذه فكرة العمل من كودك
<?php
    //هاذا كوودك ساضيف عليه 
 
     
    $connectdb = @mysql_connect('localhost','root','root') or die ("not connect");
    $selectdb = @mysql_select_db('article',$connectdb) or die ("error database");
     
   
	$dw=date(N);//this day of the week, numeric
	$d=date(j);//this date
	$m=date(m);//this month
	$y=date(o);//this year
	
 	for($i=1;$i<=$d;$i++){//هنا نبدء عمل لوب من اول يوم في الشهر الى يومنا هذا 
		echo $thisDay=date("l",mktime(0, 0, 0, $i, $m, $y));// هنا نطبع التاريخ
    	$qu = mysql_query("select * from article where date='$thisDay'");//نحضر مقالات اليوم من القاعده
		while($rows1 = mysql_fetch_assoc($qu)){
			  //هنا نطبع المفاله
			  echo $title = $rows1['id'];
			  echo $title = $rows1['title'];
			  
			 
		}// while
    }//for 
     
?>

بواسطة: alf2ares
منذ: 6 / فبراير / 2012 الساعة 7:46

تعديل: alf2ares
منذ: 6 / فبراير / 2012 الساعة 7:59

:S مواضيع الشهر و ليس اليوم فليس معقولا انه يتم طباعة مواضيع كل يوم لوحده
6 / فبراير / 2012 الساعة 12:22

ال for تقوم ب الدوران على ايام الشهر كامله من اليوم رقم 1 الى اليوم الحالي اما ال while تقوم باستخراج المقالات حسب اليوم
6 / فبراير / 2012 الساعة 19:15

لا اريد أي جواب فالنت مليء بها يا ريث قراءة المشكل قبل الجواب جزاكم الله عنا ألف غير و الذي لم يعرف جزاه الله عنا الف خير المهم أنه حاول مساعدتنا , لكن لا تضعوا اي جواب و خلاص
انا مشكلتي الأساسية هي استخراج مواضيع الشهر الحالي
يعني مثلا نحن في فبراير اريد استخرج مواضيع شهر فبراير
و لكن عندي مشكل هنا

    //الشهر الحالي
    $mois_now = date(m,time());
 
    $qu = mysql_query("select * from article where date(m,date) = '$mois_now'");


أما بالنسبة للباقي استطعت حله الحمد لله

بواسطة: anass
منذ: 6 / فبراير / 2012 الساعة 2:42

للترتيب على حسب اليوم استعمل صيغة ORDER BY date كالتالى
$sql = "SELECT *
FROM article
ORDER BY date;"; 
$date = null;
while ($row = mysql_fetch_array($result)) 
{
   if ($row['date'] != $date)
   {       
      $date = $row['date'];
      echo "تمت اضافتهم فى " . $date . "<br />";
   }
   echo $row['title'] . "<br />";
}

بواسطة: علاء
منذ: 5 / فبراير / 2012 الساعة 20:25

تعديل: علاء
منذ: 5 / فبراير / 2012 الساعة 20:27

يا أخي علاء يا ريث لا تضع شيء غير منطقي و اقرأ السؤال قبل الجواب, لشو سأحتاج أنا الترتيب أنا عاوز أستخرج مقالات هذا الشهر
6 / فبراير / 2012 الساعة 2:36

عندى حل ليس له علاقة بالمشكلة ولكنه قد يفيد ان اردتها فى هذا الشكل
September 2007 (3 articles)
August 2007 (2 articles)
July 2007 (4 articles)
وان كان لديك هيكل مثل
CREATE TABLE `news` (
`ID` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`intro` text NOT NULL,
`body` text NOT NULL,
`date` datetime default NULL,
`lastupdate` datetime default NULL,
`active` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
استعمل
$r = mysql_query("SELECT COUNT(ID) AS count, MONTH(date) AS f_month, YEAR(date) AS f_year FROM news GROUP BY YEAR(date), MONTH(date) ORDER by date DESC") or die(mysql_error());

while($row = mysql_fetch_array($r)) {
echo $months[$row['f_month']-1] . ' ' . $row['f_year'] . ' (' . $row['count'] . ')<br>';

}

بواسطة: molhm
منذ: 5 / فبراير / 2012 الساعة 20:21

ستنفذ بطريقة مثل هذه
<?php
$q = "SELECT id, title, text, date, DATE_FORMAT(date,'%d %M, %Y') as sd FROM article ORDER BY date DESC LIMIT 4";
$sql = mysql_query($q);
$archive = array();
if (mysql_num_rows($sql) > 0)
{
  // We have records
  while ($row = mysql_fetch_assoc($sql))
  {
    $ts = strtotime($row['date']);
    list($year, $month) = explode('-', date('Y-F', $ts));
    $archive[$year][$month][] = $row;
  }
}

foreach ($archive as $year => $months)
{
  echo "<h1>$year</h1>\n";
  foreach ($months as $month => $art)
  {
    echo "<h2>$month</h2>\n";
    echo "<ul>\n";
    foreach ($art as $record)
    {
      echo "<li>{$record['title']} - كتب فى {$record['sd']}</li>\n";
    }
    echo "</ul>\n";
  }
}
?>

بواسطة: MacOS
منذ: 5 / فبراير / 2012 الساعة 20:15

أحتاج الشكل الذي في الصورة + الأخ المدير غير الموضوع هذا ليس أرشيف
6 / فبراير / 2012 الساعة 0:11

يجب أولاً تغير نوع date إلى إما DATE أو DATETIME

بواسطة: sikas
منذ: 5 / فبراير / 2012 الساعة 17:30

و ما دخل هذا لأنه date بالثواني و يمكن بسهولة التحويل من الثواني للشهور و السنوات......
5 / فبراير / 2012 الساعة 18:9

لو ممكن الكود الي انت كتبته عشان نشوف الغلط فين لكن ماعرفه انك سوف تحتاج( 2 لوب) يعني حلقتين تكرارا متداخله

بواسطة: alf2ares
منذ: 5 / فبراير / 2012 الساعة 17:8

تطبيقي فوق إذا كنت تعرف الحل يا ريث تساعدني جزاك الله خيراً
5 / فبراير / 2012 الساعة 18:8

أنشر اجابتك

xهل تريد الاجابة عن هذا السؤال؟ من فضلك سجل دخول او اشترك لتتمكن من الاجابة