vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Trying to add PHP to my forums (https://vborg.vbsupport.ru/showthread.php?t=213335)

visitangeles 05-10-2009 05:07 PM

Trying to add PHP to my forums
 
I am trying to add this simple PHP code to scrape the latest currency to my forums. What is the best and easiest way? thanks,

<?php
$today = date('Y-m-d');
$con = mysql_connect('localhost', 'user', 'passwd'); # please put appropriate values here
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("currency", $con); # please replace 'mydb' with your database name.
$query = "SELECT cur_rate FROM currency WHERE cur_date = '$today' AND cur_code = 'PHP'";
$result = mysql_query($query)
or die(mysql_error());
$row = mysql_fetch_array( $result );
$php = $row['cur_rate'];

echo $php;

?>

i tried to write a plugin and used global_start as the hook and it worked one time and then went away and never came back. PLEASE HELP!

also, while i am at it, how would one format the number that it outputs so it is only 2 decimal places?

thanks in advance

Dismounted 05-11-2009 04:38 AM

Method 1 Including External Files

Method 2 Place the code inside a plugin (no PHP start/end tags), and grab the information into a variable. Do not echo it, just use that variable in a template.

visitangeles 05-11-2009 04:51 AM

Quote:

Originally Posted by Dismounted (Post 1808415)
Method 1 Including External Files

Method 2 Place the code inside a plugin (no PHP start/end tags), and grab the information into a variable. Do not echo it, just use that variable in a template.

i did that in method B. it worked just the one time. i used global_start as the hook.

is there a better hook or how would you create a better hook?

i would imagine that if i used global start, it just does it the one time - showing the currency.

any ideas?

thanks.

Cip 05-11-2009 07:18 AM

Plugins don't just disappear. Make sure that you didn't add the plugin in a product that you later uninstalled. Other than that I would recommend Method B, echoing has a tendency not to show up because the template system overwrites all your previous output.

For bugtesting I would make a plugin in global_start (in product vBulletin) that looked something like this:
PHP Code:

if (isset($_REQUEST['testing'])){
   
//Fetch latest Coke prices from coke.com
   
getLatestCurrencyCode();

   
//350 litres gives you 2 gold coins.
   
echo $CokeToGoldRatio;

   
//Make sure that we don't let vBulletin continue
   //(to prevent the template from writing over your echo)
   
exit;



Lynne 05-11-2009 02:00 PM

What do you mean that it worked just one time? You mean only the first time you hit the site? First time you hit that page? I don't understand what you mean.

visitangeles 05-11-2009 02:12 PM

Quote:

Originally Posted by Lynne (Post 1808685)
What do you mean that it worked just one time? You mean only the first time you hit the site? First time you hit that page? I don't understand what you mean.

yes. i finally got it to work. it showed the currency. i refreshed and it was gone! :(

so i thought it was the hook - global_start - like it will deal with global commands but just on the start or one time. it is my first plugin attempt.

not sure what i am doing.

could someone walk me through the whole thing? that wud be even better. maybe there is a better vbulletin hook to use than global_start? not sure.

thanks.

Lynne 05-11-2009 02:37 PM

Post your exact plugin code, please, and your template edit (a few lines above and below and tell us what template it is).

visitangeles 05-11-2009 03:48 PM

Quote:

Originally Posted by Lynne (Post 1808725)
Post your exact plugin code, please, and your template edit (a few lines above and below and tell us what template it is).

original code is this:

<?php
$today = date('Y-m-d');
$con = mysql_connect('localhost', 'username', 'passwd1'); # please put appropriate values here
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dbname_currency", $con); # please replace 'mydb' with your database name.
$query = "SELECT cur_rate FROM currency WHERE cur_date = '$today' AND cur_code = 'PHP'";
$result = mysql_query($query)
or die(mysql_error());
$row = mysql_fetch_array( $result );
$php = $row['cur_rate'];

echo "<p style=\"font-size:70%;\"><b>1 USD = PHP $php</b></p>";?>

//end orignal code

i set up a plugin called currency using vbulletin and global_start and did this:

$today = date('Y-m-d');
$con = mysql_connect('localhost', 'username', 'passwd1');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dbname_currency", $con);
$query = "SELECT cur_rate FROM currency WHERE cur_date = '$today' AND cur_code = 'PHP'";
$result = mysql_query($query)
or die(mysql_error());
$row = mysql_fetch_array($result);
$php = $row['cur_rate'];

then i save this as currency (plugin)

and then go to the header to insert the information i wanted:

echo "<p style=\"font-size:70%;\"><b>1 USD = PHP $php</b></p>";

what am i doing wrong?

thanks.

Lynne 05-11-2009 04:20 PM

Please use the html/php tags. It is very difficult to read code when you don't use those.

Don't use echo. Put the variable into the template or use a template_hook. Also, it is probably not a good idea to use a variable named $php.

visitangeles 05-11-2009 05:08 PM

Quote:

Originally Posted by Lynne (Post 1808793)
Please use the html/php tags. It is very difficult to read code when you don't use those.

Don't use echo. Put the variable into the template or use a template_hook. Also, it is probably not a good idea to use a variable named $php.


ok.

original code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
$today = date('Y-m-d');
$con = mysql_connect('localhost', 'username', 'passwd1'); # please put appropriate values here
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dbname_currency", $con); # please replace 'mydb' with your database name.
$query = "SELECT cur_rate FROM currency WHERE cur_date = '$today' AND cur_code = 'PHP'";
$result = mysql_query($query)
or die(mysql_error());
$row = mysql_fetch_array( $result );
$php = $row['cur_rate'];

echo "<p style=\"font-size:70%;\"><b>1 USD = PHP $php</b></p>";?>
</body>
</html>

and then the plugin using vbulletin and global_start


$today = date('Y-m-d');
$con = mysql_connect('localhost', 'username', 'passwd1'); # please put appropriate values here
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dbname_currency", $con); # please replace 'mydb' with your database name.
$query = "SELECT cur_rate FROM currency WHERE cur_date = '$today' AND cur_code = 'PHP'";
$result = mysql_query($query)
or die(mysql_error());
$row = mysql_fetch_array( $result );
$php = $row['cur_rate'];


then in the header:
echo "<p style=\"font-size:70%;\"><b>1 USD = PHP $php</b></p>

$php is scraping philippine peso and is standard at yahoo for that currency so i cannot change it unfortunately.

is this what you wanted?

can you help me now?

Lynne 05-11-2009 05:30 PM

I'll repeat... Please use the html/php tags. It is very difficult to read code when you don't use those. They are right here in the Quick Reply box - very easy to use. I don't care about your original code, I just want to see the code in your plugin. And, again, I'll repeat that you should be putting the *variable* name into a template. You CANNOT use php in a template, which means you CANNOT do an echo statement. You need to simply put the variable in there - and I would NOT name it php (I don't know that that variable named is reserved, but it sounds like it should be).

visitangeles 05-12-2009 01:00 AM

Quote:

Originally Posted by Lynne (Post 1808845)
I'll repeat... Please use the html/php tags. It is very difficult to read code when you don't use those. They are right here in the Quick Reply box - very easy to use. I don't care about your original code, I just want to see the code in your plugin. And, again, I'll repeat that you should be putting the *variable* name into a template. You CANNOT use php in a template, which means you CANNOT do an echo statement. You need to simply put the variable in there - and I would NOT name it php (I don't know that that variable named is reserved, but it sounds like it should be).

i dont understand. i dont use any html or php tags in the plugin. $php is taken from the yahoo site that i scrape the financial data.

i thought you were not suppose to use php or html in the plugins?. again, i simply use vb 3.8.1 and set up a plugin called currency using vbulletin and global_start as the hook i guess and inserted this code below only:

PHP Code:

$today date('Y-m-d');
$con mysql_connect('localhost''username''passwd1');
if (!
$con)
{
die(
'Could not connect: ' mysql_error());
}
mysql_select_db("dbname_currency"$con);
$query "SELECT cur_rate FROM currency WHERE cur_date = '$today' AND cur_code = 'PHP'";
$result mysql_query($query)
or die(
mysql_error());
$row mysql_fetch_array($result);
$php $row['cur_rate']; 

then in the header template, i used the variable

HTML Code:

    <td align="$stylevar[right]" id="header_right_cell">
                <if condition="$ad_location['ad_header_logo']">$ad_location[ad_header_logo]<else />&nbsp;</if>
        </td>
    <td>

<center>

1 USD = PHP $php

</center>

  </tr>
</table>
</fieldset>

to produce the philippine peso rate to show on the page. it worked, but then after you refresh the page, it goes away. i just thought it was because of using global_start as the hook and maybe there is a better hook to use? or what is the problem? is this the info u needed?

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

its working now. lol. not sure what was wrong before but in the future, is there a better hook to use than global_start or does it matter?

or should you create your own hook? how hard is that?

Lynne 05-12-2009 03:05 AM

When I was talking about the php/html tags, I'm talking about the tags on this site (that you used to surround your code in your last post). Thank you - it's much easier to read.

This is the line I think you may want to rename your variable in:
PHP Code:

$php $row['cur_rate']; 

And then this is going to cause problems because it is invalid html:
HTML Code:

    <td>

<center>

1 USD = PHP $php

</center>

  </tr>
</table>

You need an </td> in there before the </tr>.

Are you only trying to show this on the forumhome (index.php) page? I would pick a plugin that is just on that page, if so - forumhome_start maybe.

Cryo 05-12-2009 01:11 PM

You should rename $php to something like $currency_php or similar. As Lynne suggested, $php is confusing because PHP is also the language you're coding in.

As far as hook location goes, I'd go with forumhome_start (as Lynne also suggested) or if you need it on every page, global_complete.


All times are GMT. The time now is 05:48 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.01693 seconds
  • Memory Usage 1,794KB
  • 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
  • (2)bbcode_html_printable
  • (3)bbcode_php_printable
  • (5)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (14)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