vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   PHP loading at the top of the page when using direct execution? (https://vborg.vbsupport.ru/showthread.php?t=241890)

redhawk89 05-05-2010 04:28 AM

PHP loading at the top of the page when using direct execution?
 
I can't figure out what in this code is making it break its widget and load at the very top of the page.

It's supposed to take the XKCD info and toss it in a widget, but it breaks out.

Here is the code. It's a carbon copy of what gets displayed at http://www.saskforum.ca/xkcd/newest.php

HTML Code:

<?php
function getNewestXKCD() {
  $document = new DOMDocument();
  // Load the HTML document from xkcd.com. The '@' is to suppress error messages (since there is one!).
  $load = @$document->
loadHTMLFile('http://www.xkcd.com/');
 
  $src = '';
  $title = '';
  $alt = '';
 
  // If we can connect to the site:
  if ($load) {
      // Make an array of all of the image tags in the page.
      $images = $document->getElementsByTagName('img');
 
      // Go through each image tag to until we find the comic.
      foreach ($images as $image) {
        // If it's the one with the comic:
        if (substr($image->getAttribute('src'), 0, 28) == 'http://imgs.xkcd.com/comics/') {
            $src = $image->getAttribute('src');
            $title = $image->getAttribute('title');
            $alt = $image->getAttribute('alt');
            break; // We don't need to look anymore.
        }
      }
 
      // Create output (no need to use the DOM for this part):
      $return = '<div id="newKXCD" style="text-align:center;"><h1 style="font-size:20px;font-variant:small-caps;font-

family:Lucida, sans-serif;font-weight:bold;"
>
'.$alt.'</h1>';
      $return .= '<a href="http://www.xkcd.com" style="size:14pt;color:black;text-decoration:none;"><img src="'.$src.'"

title="'.$title.'" alt="'.$alt.'" border="0" />
</a></div>';
  }
  // If we cannot connect to the site, print an error message.
  else $return = '<div id="newKXCD" style="text-align:center"><a href="http://www.xkcd.com">Newest XKCD Comic cannot be

accessed<br>at this time, please try again later!</a></div>';
  return $return;

} // End function

// Call the function which returns the HTML to display the image
echo getNewestXKCD();

// Oh and: Unexpected end tag : a in http://www.xkcd.com/, line: 48
?>

I left it as is so you can check it out.

What will it take to make this load within the widget box?

--------------- Added [DATE]1273101133[/DATE] at [TIME]1273101133[/TIME] ---------------

bump

redhawk89 05-06-2010 11:08 PM

nobody?

redhawk89 05-11-2010 12:33 AM

bump, will pay $10 via paypal for anyone who can help lead me to a fix here.

Jaxel 05-11-2010 01:11 AM

ECHO always gets called IMMEDIATELY.

vBulletin is built within variables which are called at the end. Because you are using echo, your widget is being printed first. What you should do instead is call the function through a variable, and then call the variable in the appropriate spot on your page.

ragtek 05-11-2010 05:17 AM

1. create a new php direct execution widget
2. add this code:
PHP Code:

<?php
ob_start
();
function 
getNewestXKCD() {
   
$document = new DOMDocument();
   
// Load the HTML document from xkcd.com. The '@' is to suppress error messages (since there is one!).
   
$load = @$document->loadHTMLFile('http://www.xkcd.com/');
   
   
$src '';
   
$title '';
   
$alt '';
   
   
// If we can connect to the site:
   
if ($load) {
      
// Make an array of all of the image tags in the page.
      
$images $document->getElementsByTagName('img');
   
      
// Go through each image tag to until we find the comic.
      
foreach ($images as $image) {
         
// If it's the one with the comic:
         
if (substr($image->getAttribute('src'), 028) == 'http://imgs.xkcd.com/comics/') {
            
$src $image->getAttribute('src');
            
$title $image->getAttribute('title');
            
$alt $image->getAttribute('alt');
            break; 
// We don't need to look anymore.
         
}
      }
   
      
// Create output (no need to use the DOM for this part):
      
$return '<div id="newKXCD" style="text-align:center;"><h1 style="font-size:20px;font-variant:small-caps;font-

family:Lucida, sans-serif;font-weight:bold;">'
.$alt.'</h1>';
      
$return .= '<a href="http://www.xkcd.com" style="size:14pt;color:black;text-decoration:none;"><img src="'.$src.'" 

title="'
.$title.'" alt="'.$alt.'" border="0" /></a></div>';
   }
   
// If we cannot connect to the site, print an error message.
   
else $return '<div id="newKXCD" style="text-align:center"><a href="http://www.xkcd.com">Newest XKCD Comic cannot be 

accessed<br>at this time, please try again later!</a></div>'
;
   return 
$return;

// End function

// Call the function which returns the HTML to display the image
$output getNewestXKCD();

// Oh and: Unexpected end tag : a in http://www.xkcd.com/, line: 48
?>

I changed only echo getNewestXKCD(); to $output = getNewestXKCD(); because $output is the standard outputvariable in the widgets;)

redhawk89 05-12-2010 01:09 AM

Thanks! PM me where you'd like the donation sent!


All times are GMT. The time now is 07:02 PM.

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.01050 seconds
  • Memory Usage 1,751KB
  • 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_html_printable
  • (1)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (6)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