Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 09-23-2010, 11:23 AM
Triky's Avatar
Triky Triky is offline
 
Join Date: Mar 2007
Location: [Italy]
Posts: 728
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default 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?
Reply With Quote
  #2  
Old 09-26-2010, 11:19 PM
Triky's Avatar
Triky Triky is offline
 
Join Date: Mar 2007
Location: [Italy]
Posts: 728
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No one can help me?
Reply With Quote
  #3  
Old 09-27-2010, 12:39 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #4  
Old 09-29-2010, 10:26 AM
Triky's Avatar
Triky Triky is offline
 
Join Date: Mar 2007
Location: [Italy]
Posts: 728
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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?
Reply With Quote
  #5  
Old 09-29-2010, 12:08 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You need to include

$rss2_output = '';

before you use the code the second time.
Reply With Quote
  #6  
Old 01-22-2012, 06:00 PM
Varsh's Avatar
Varsh Varsh is offline
 
Join Date: Aug 2006
Location: UK
Posts: 98
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #7  
Old 01-22-2012, 06:17 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 04:49 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.09701 seconds
  • Memory Usage 2,286KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_code
  • (2)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (7)post_thanks_box
  • (7)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (7)post_thanks_postbit_info
  • (7)postbit
  • (7)postbit_onlinestatus
  • (7)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete