لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
سحب rss في وحفظة في القاعدة
السلام عليكم

اخواني تعبت كثير ما عرفت كيف اسحب rss بالبرمجه واحفظها بالقاعدة واستعرضها في موقعي
اريد سحب هذا الرابط
http://news.google.com.sa/news?pz=1&cf=all&ned=ar_sa&hl=ar&output=rss

اولا ناخد كل ما فى الرابط ثم نحفظه فى قاعدة البينات ثم نعرضه مع تعدد صفحات
وعند الضغط على احدهما يحول على صفحة اولا وبعد ذلك يوجد رابط يحولنى على الحبر بطريقة غير مباشر
ياليت احد يتكرم على ويفيدني جزاكم الله خير
تاريخ البداية: 21 / سبتمبر / 2011 الساعة 12:45 اخر نشاط: 21 / يوليو / 2013 الساعة 15:2 rss
3 إجابات
شكررررررررررررررررررررررررررررررررررررا

بواسطة: mrcode
منذ: 6 / مارس / 2013 الساعة 21:52

تعديل: mrcode
منذ: 10 / مارس / 2013 الساعة 19:28

ان كنت تريد الاستغناء عن قواعد البينات وعرض 3 خلايات فى الصف ومع نظام الكاش اليك هذا الكود:
<?php
include \"core/RSS.php\";

    $rss = new lastRSS;
    $rss->cp = \'UTF-8\';
    $rss->cache_dir = \'cache\';
    $rss->cache_time = 1200;
    
    header(\'Content-Type: text/html; charset=UTF-8\');

if ($rs = $rss->get(\'http://news.google.com.sa/news?pz=1&cf=all&ned=ar_sa&hl=ar&output=rss\')) {
    $i =1;
    echo \"<table dir=\'rtl\' align=\'right\'><tr>\";
        foreach ($rs[\'items\'] as $item) { 
                
    $url = html_entity_decode($item[\'link\']);
    $parts = parse_url($url);
    parse_str($parts[\'query\'],$params);
?>
    <td valign=\"top\">
        <table width=\"100%\">
            <tr>
                <td>
                    <a href=\"<?php echo $params[\'url\'];?>\">
                        <?php echo $item[\'title\'];?>
                    </a>
                </td>
            </tr>
            <tr>
                <td>
                <?php echo html_entity_decode($item[\'description\']); ?>
                </td>
            </tr>
        </table>    
    </td>
 <?php
        if (($i % 3) == 0) {
            echo \"</tr><tr>\";
        }  
        $i++;
    }
    echo \"</tr></table>\";

}
?>
وفى هذا الكود
    $rss->cache_dir = \'cache\';
    $rss->cache_time = 1200;

الجملة دى معاناها ان لابد من عمل مجلد اسمهcache لوضع فيه التغذية بدل ما تجيبها كل رفرش و تقدر تحدد تجدد كل كام دقيقة او كام ساعة

بواسطة: MacOS
منذ: 21 / سبتمبر / 2011 الساعة 12:45

طريقة اكثر من رائعة واعجبتنى كثيرا طريقتك فى تقسم الخلايا
21 / سبتمبر / 2011 الساعة 12:45

اليك شرح كل شى,
اولا ستقوم بتحميل هذا الكلاس لجبل المحتوى من التغذية وهذه الدالة لتعدد الصفحات ثم عمل ملف يحتوى على اعدادت القاعدة ثم انشاء مجلد لوضع الكلاسات والدوال لنفرض اننا سنسميه core
اذن التكوين سيكون كالتالى
core/db.php
core/pagination.php
core/RSS.php
index.php
work.php
الأن اليك الاسكربت صفحة صفحة اولا صفحة الاتصال بقاعدة البينات:
    $db = @mysql_connect(\'localhost\', \'root\', \'\') or die(\"لا نستطيع الاتصال بالسرفر\");
      @mysql_select_db(\'GoogleKSA\', $db) or die(\"Could not select database\");
طبعا سوف تنشى قاعدة بينات باسم GoogleKSA كمثال وتكوينها كالتالى
CREATE TABLE `googleksa` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `url` varchar(255) NOT NULL,
  `content` text NOT NULL,
  PRIMARY KEY (`id`)
);
ناتى لصفحة عرض وجلب الاخبار وهذا تكوينها الكلى:
include \"core/db.php\";
include \"core/RSS.php\";
include \"core/pagination.php\";

    $rss = new lastRSS;
    $rss->cp = \'UTF-8\';

if ($rs = $rss->get(\'http://news.google.com.sa/news?pz=1&cf=all&ned=ar_sa&hl=ar&output=rss\')) {
    foreach ($rs[\'items\'] as $item) {
        if (!mysql_fetch_array(
                mysql_query(\"SELECT id FROM 
                                `GoogleKSA` where
                                     `title` = \'\".$item[\'title\'].\"\'\")
                    )) {
        $url = html_entity_decode($item[\'link\']);
        $parts = parse_url($url);
        parse_str($parts[\'query\'],$params);
                       
        mysql_query(\"INSERT INTO `GoogleKSA` (
                            `title` ,
                            `url` ,
                            `content`
                        )
                        VALUES (
                             \'\".$item[\'title\'].\"\',
                             \'\".$params[\'url\'].\"\',
                             \'\".html_entity_decode($item[\'description\']).\"\'
                        )\");
        }            
    }

}

    $page = (int) (!isset($_GET[\"page\"]) ? 1 : $_GET[\"page\"]);
    $page = ($page == 0 ? 1 : $page);
    $perpage = 5;
    $startpoint = ($page * $perpage) - $perpage;

    
    $sql = @mysql_query(\"select * FROM `GoogleKSA`
                             order by id asc LIMIT $startpoint,$perpage\");
        while($Row = mysql_fetch_array($sql)) {
            echo \'<p>
                    <a target=\"_blank\" href=\"work.php?show=\'.$Row[\'id\'].\'\">
                    \'.$Row[\'title\'].\'
                    </a>
                 </p>\';
        }

    echo Pages(\"GoogleKSA\",$perpage,\"index.php?\");
  • اولا استدعينا كلاس جلب التغذية ودالة تقسيم الصفحات وطبعا ملف قاعدة البينات
  • بعد ذلك سنضع ترميز التغذية \'UTF-8\'
  • بعد ذلك سنجلب الاخبار من الرابط بالستخدام الكلاس كما موضح بالاعلى
  • الان بعد ان اتينا بجميع الاخبار جاء دور وضعها فى قاعدة البينات ,اولا سنفحص هل يوجد خبر بهذا العنوان لو فى هنتجاهل هذا التكرار لو ما فى هنضيف مدخل جديد بحتوى على اولا عنوان المقال والرابط والمحتوى
  • بعد ذلك سوف نعرض الاخبار المضافة انا اخترت ان نعرض فى كل صفحة 5 اخبار

الاعدادات

اولا انا استعملت هذا الكود
        $url = html_entity_decode($item[\'link\']);
        $parts = parse_url($url);
        parse_str($parts[\'query\'],$params);
للاتيان بمتغيرات الرابط لكى نختار منه الرابط المباشر كالتالى $params[\'url\'] بعد ذلك
$perpage = 5;
هذا هو عدد الاخبار فى كل صفحة الان صفحة work.php هذه الصفحة التى سيعرض فيها التفاصيل القصيرة للخبر وايضا التى ستحولك للرابط

التكوين الكامل:

<?php

include \"core/db.php\"; if (isset($_GET[\'show\'])) { $new_id = intval($_GET[\'show\']); $sql = mysql_query(\"select * FROM `GoogleKSA` where `id` = \'$new_id\'\"); if(!$row = mysql_fetch_assoc($sql)){ exit( \'غير موجود\' ); } ?> <table align=\"right\" width=\"100%\"> <tr> <td align=\"right\"> <a href=\"work.php?go=<?php echo $row[\'id\']?>\"> <?php echo $row[\'title\']?> </a> </td> </tr> <tr> <td> <?php echo $row[\'content\']?> </td> </tr> </table> <?php } elseif (isset($_GET[\'go\'])) { $new_id = intval($_GET[\'go\']); $sql = mysql_query(\"select * FROM `GoogleKSA` where `id` = \'$new_id\'\"); if(!$row = mysql_fetch_assoc($sql)){ exit( \'غير موجود\' ); } header(\"Location: \".urldecode($row[\'url\'])); } ?>
هنا وضعت شرطين

اولا

لو وجد متغير show يحمل الـid تبع الخبر سوف نعرض الخبر مع التفاصيل مع الرابط المباشر

ثانيا

لو جد متغير go يحمل نفس الـid سوف ناتى بالعنوان المباشر ونحول له وهذا غير مهم بامكانك وضع الرابط المباشر فى اول مرة بتغير:
                    <a href=\"work.php?go=<?php echo $row[\'id\']?>\">
                        <?php echo $row[\'title\']?>
                    </a>
الى
                    <a href=\"<?php echo $row[\'url\']?>\">
                        <?php echo $row[\'title\']?>
                    </a>

بواسطة: MacOS
منذ: 21 / سبتمبر / 2011 الساعة 12:45

شرح ممتاز وبوركت عليه,,

لكن كيف يتم استخراج ما في العنصر enclosure

<enclosure url="www.jpg" length="123456789" type="image/jpeg" />

اريد استخراج رابط الصورة من enclosure
21 / يوليو / 2013 الساعة 15:2

أنشر اجابتك

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