vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   Problem with RSS2: multiple rss in the same page (https://vborg.vbsupport.ru/showthread.php?t=251025)

Triky 09-23-2010 11:23 AM

Problem with RSS2: multiple rss in the same page
 
Hello, I'm using this code:

http://www.vbulletin.com/forum/showt...g-an-RSS2-feed

If I try to use it twice, I get this error:

Quote:

Fatal error: Cannot redeclare character_data() (previously declared in C:\Programmi\EasyPHP 3.0\www\**\**\**\a.php:25) in C:\Programmi\EasyPHP 3.0\www\**\**\**\b.php on line 53
Can you please help me? :)

Triky 09-26-2010 11:19 PM

No one can help me?

kh99 09-27-2010 12:39 AM

Each block like

Code:

function something()
{
...
...
}

defines a function and so only needs to (and only can) appear in the same code once. So, if you're using that code twice in the same php file, just leave out the function definition blocks the second time.

Triky 09-29-2010 10:26 AM

Thank you, now it works! I have just one problem. In the second list, I get also the results of the first website. How can I solve this?

kh99 09-29-2010 12:08 PM

You need to include

$rss2_output = '';

before you use the code the second time.

Varsh 01-22-2012 06:00 PM

Aaah I've been looking for this, I'm also on the same lines as Triky was with duplicating the results, not sure how to solve it even though you said that I need to include the output before re-using the code again.

What I have so far is this:
PHP Code:

<?php
$rss2_art_file 
'http://localhost:41648/forums/external.php?type=RSS2&forumids=8';
$rss2_games_file 'http://localhost:41648/forums/external.php?type=RSS2&forumids=5';

$is_item false;
$tag '';
$title '';
$description '';
$link '';
$date '';
$author '';

function 
character_data($parser$data) {
    global 
$is_item$tag$title$description$link$date$author;
    
    if (
$is_item) {
        switch (
$tag) {
            case 
"TITLE":
                
$title .= $data;
                break;
            case 
"DESCRIPTION":
                
$description .= $data;
                break;
            case 
"LINK":
                
$link .= $data;
                break;
            case 
"PUBDATE":
                
$date .= $data;
                break;
            case 
"AUTHOR":
                
$author .= $data;
                break;
        }
    }
}

function 
begin_element($parser$name) {
    global 
$is_item$tag;
    
    if (
$is_item) {
        
$tag $name;
    } else if (
$name == "ITEM") {
        
$is_item true;
    }
}

function 
end_element($parser$name) {
    global 
$is_item$title$description$link$date$author$rss2_art$rss2_games;
    
    if (
$name == "ITEM") {
        
$rss2_art .= "<b><a href='" trim($link) . "'>" htmlspecialchars(trim($title)) . "</a></b> - " htmlspecialchars(trim($date)) . "<br>";
        
$rss2_games .= "<b><a href='" trim($link) . "'>" htmlspecialchars(trim($title)) . "</a></b> - " htmlspecialchars(trim($date)) . "<br>";
        
$title "";
        
$description "";
        
$link "";
        
$date "";
        
$author "";
        
$is_item false;
    }
}

$parser xml_parser_create();

xml_set_element_handler($parser"begin_element""end_element");
xml_set_character_data_handler($parser"character_data");
$fp_art fopen($rss2_art_file,"r");
$fp_games fopen($rss2_games_file,"r");

while (
$data fread($fp_art4096)) {
    
xml_parse($parser$datafeof($fp_art));
}
while (
$data fread($fp_games4096)) {
    
xml_parse($parser$datafeof($fp_games));
}

fclose($fp_art);
fclose($fp_games);
xml_parser_free($parser);
?>

That is in a separate file required once into the page and have it echoed out, but like Triky had, I have a duplicate.

kh99 01-22-2012 06:17 PM

Try this:

PHP Code:

<?php
$rss2_art_file 
'http://localhost:41648/forums/external.php?type=RSS2&forumids=8';
$rss2_games_file 'http://localhost:41648/forums/external.php?type=RSS2&forumids=5';

$is_item false;
$tag '';
$title '';
$description '';
$link '';
$date '';
$author '';

function 
character_data($parser$data) {
    global 
$is_item$tag$title$description$link$date$author;
    
    if (
$is_item) {
        switch (
$tag) {
            case 
"TITLE":
                
$title .= $data;
                break;
            case 
"DESCRIPTION":
                
$description .= $data;
                break;
            case 
"LINK":
                
$link .= $data;
                break;
            case 
"PUBDATE":
                
$date .= $data;
                break;
            case 
"AUTHOR":
                
$author .= $data;
                break;
        }
    }
}

function 
begin_element($parser$name) {
    global 
$is_item$tag;
    
    if (
$is_item) {
        
$tag $name;
    } else if (
$name == "ITEM") {
        
$is_item true;
    }
}

function 
end_element($parser$name) {
    global 
$is_item$title$description$link$date$author$rss2_output;
    
    if (
$name == "ITEM") {
        
$rss2_output .= "<b><a href='" trim($link) . "'>" htmlspecialchars(trim($title)) . "</a></b> - " htmlspecialchars(trim($date)) . "<br>";
        
$title "";
        
$description "";
        
$link "";
        
$date "";
        
$author "";
        
$is_item false;
    }
}

$parser xml_parser_create();

xml_set_element_handler($parser"begin_element""end_element");
xml_set_character_data_handler($parser"character_data");
$fp_art fopen($rss2_art_file,"r");
$fp_games fopen($rss2_games_file,"r");

$rss2_output '';
while (
$data fread($fp_art4096)) {
    
xml_parse($parser$datafeof($fp_art));
}
$rss2_art $rss2_output;
$rss2_output '';
while (
$data fread($fp_games4096)) {
    
xml_parse($parser$datafeof($fp_games));
}
$rss2_games $rss2_output;

fclose($fp_art);
fclose($fp_games);
xml_parser_free($parser);
?>


It would be better to put the code in a function where you pass the file name and return the string, but this should work.


All times are GMT. The time now is 01:39 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01213 seconds
  • Memory Usage 1,789KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_code_printable
  • (2)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (7)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete