استعلام لعرض المقالات الخاصة بكل يوم
السلام عليكم
أقوم بعمل سكريبت للمقالات لكن من نوع مختلف, و المشكل هو في الاستعلام لأنه استعلام و تكرار مرتين أولا أنا عندي في قاعدة البيانات التالي إسم قاعدة البيانات 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/>" ; } ?>المشكل أنه لا أعرف كيف أقوم بالتكرارالثاني داخل هذا التكرار و كذلك منع تكرار نفس اليوم
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 2 من 2 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا هذا ما كنت اريده بارك الله فيك متميز كالعادة يااخ عماد .. بارك الله فيك
هذه فكرة العمل من كودك
<?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 تعديل: alf2ares 1 من 1 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا :S مواضيع الشهر و ليس اليوم فليس معقولا انه يتم طباعة مواضيع كل يوم لوحده ال for تقوم ب الدوران على ايام الشهر كامله من اليوم رقم 1 الى اليوم الحالي اما ال while تقوم باستخراج المقالات حسب اليوم
لا اريد أي جواب فالنت مليء بها يا ريث قراءة المشكل قبل الجواب جزاكم الله عنا ألف غير و الذي لم يعرف جزاه الله عنا الف خير المهم أنه حاول مساعدتنا , لكن لا تضعوا اي جواب و خلاص
انا مشكلتي الأساسية هي استخراج مواضيع الشهر الحالي يعني مثلا نحن في فبراير اريد استخرج مواضيع شهر فبراير و لكن عندي مشكل هنا //الشهر الحالي $mois_now = date(m,time()); $qu = mysql_query("select * from article where date(m,date) = '$mois_now'"); أما بالنسبة للباقي استطعت حله الحمد لله بواسطة: anass 1 من 1 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا
للترتيب على حسب اليوم استعمل صيغة 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 />"; } بواسطة: علاء تعديل: علاء 2 من 2 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا يا أخي علاء يا ريث لا تضع شيء غير منطقي و اقرأ السؤال قبل الجواب, لشو سأحتاج أنا الترتيب أنا عاوز أستخرج مقالات هذا الشهر
عندى حل ليس له علاقة بالمشكلة ولكنه قد يفيد ان اردتها فى هذا الشكل
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 3 من 3 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا
ستنفذ بطريقة مثل هذه
<?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 3 من 3 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا أحتاج الشكل الذي في الصورة + الأخ المدير غير الموضوع هذا ليس أرشيف
يجب أولاً تغير نوع date إلى إما DATE أو DATETIME
بواسطة: sikas 1 من 1 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا و ما دخل هذا لأنه date بالثواني و يمكن بسهولة التحويل من الثواني للشهور و السنوات......
لو ممكن الكود الي انت كتبته عشان نشوف الغلط فين لكن ماعرفه انك سوف تحتاج( 2 لوب) يعني حلقتين تكرارا متداخله
بواسطة: alf2ares 2 من 2 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا تطبيقي فوق إذا كنت تعرف الحل يا ريث تساعدني جزاك الله خيراً |
استخدم حلقة تكرار تقوم بطباعة اليوم والتاريخ
وداخل هذه الحلقة حلقة أخرى تقوم بطباعة الموايع في ذللك اليوم
5 / فبراير / 2012 الساعة 16:59
فعلت و التطبيق اسفله لكن لا نتيجة :S
5 / فبراير / 2012 الساعة 18:52