vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   Help With My Addon to Top X (https://vborg.vbsupport.ru/showthread.php?t=67137)

gfxhavenowner 07-13-2004 05:48 PM

Help With My Addon to Top X
 
This is my first hack, so try and help in as least complicated words as possible :). J/k.

Thanks to Zero Tolerence for giving me some guidence as well.

Here's my code so far.

Code:

<?php

// ######################### ERROR REPORTING #############################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('GET_EDIT_TEMPLATES', true);
define('THIS_SCRIPT', 'topxadmin');

require_once('./global.php');
require_once('./includes/functions_misc.php');

$DB=$DB_site;

// ###################### Edit Settings ########################
if ($_GET['act'] == "update")
{
print_cp_header("Top X Control Panel");

$excludedforums=$DB->query_first("SELECT excludedforums FROM topx_admin");

print_form_header('topxadmin', 'do_update_topxsetting');
        print_table_header("Top X Settings");
        print_input_row("Forums to exclude", 'exclude_forums',$excludedforums['exclude_forums']);
        print_submit_row("Update Top X Settings", 0);
}
       
if($_POST['do']=="do_update_topxsetting")
{
$DB->query("UPDATE topx_admin SET excludedforums='{$_POST['excludedforums']}'");
//Redirect
define('CP_REDIRECT', 'topxadmin.php?act=update');
print_stop_message('excluded_forums_updated');

}       

?>

As you can see, my field name is excludedforums, my table name is topx_admin. excludedforums is a varchar(255), not null, with a blank default. It is the only field in the table.

The page builds everything alright. My AdminCP link is:

Code:

construct_nav_option("Forum Display Settings", 'topxadmin.php?act=update', '<br />');
which works fine.

excluded_forums_admin is a VB phrase. It contains the text "Excluded forums have been updated." and is a global phrase.

In the index.php of the main page(not AdminCP) I replaced the original Top X code of

Code:

$excludedforums = "9,10,11,12,26,58"; // forums to be excluded from latest threads. Format "0,5,7"
with my new code of

Code:

$excludedforums=$DB_site->("SELECT excludedforums FROM topx_admin");
Problem 1.

When I click the Update button in the AdminCP, I get "Could not find phrase 'excluded_forums_updated'."

Problem 2.

After replacing the original Top X code with mine, and going through the AdminCP and typing in any value, I get this error.

Code:

Parse error: parse error, unexpected '(', expecting T_STRING or T_VARIABLE or '{' or '$' in /home/.yardan/gfxhaven/gfxhaven.com/forums/index.php on line 423
Line 423 is the line my code is on.

Sorry for taking up so much space lol, if anyone could help me I would greatly apprieciate it and would glady give you credit.

Dark_Wizard 07-13-2004 10:02 PM

First off change this:
PHP Code:

$DB->query("UPDATE topx_admin SET excludedforums='{$_POST['excludedforums']}'"); 

to this:
PHP Code:

$DB->query("
UPDATE topx_admin 
SET excludedforums = 
$excludedforums
"
); 

Then add your phrase to the "Control Panel Stop" phrases group

Dark_Wizard 07-13-2004 10:22 PM

Also...add an id field to that table and call it "topx_adminid" as well and set it to autoincrement and set it as primary.

gfxhavenowner 07-13-2004 10:23 PM

That fixed the phrase problem, thanks.

However, I still get the parse error.

Code:

Parse error: parse error, unexpected '(', expecting T_STRING or T_VARIABLE or '{' or '$' in /home/.yardan/gfxhaven/gfxhaven.com/forums/index.php on line 423

Dark_Wizard 07-13-2004 10:31 PM

Well your script is missing some code and doesn't know what to update since you are not defining what to update, another words if you add an id field as I stated in my other post, this line:

PHP Code:

$excludedforums=$DB->query_first("SELECT excludedforums FROM topx_admin"); 

should be changed to this:
PHP Code:

$excludedforums $DB->query_first("SELECT excludedforums FROM topx_admin WHERE id = $id"); 

Then you should globalize id after this:
PHP Code:

if ($_GET['act'] == "update")



and while your at it change the above:
PHP Code:

if ($_GET['act'] == "update")


to this:
PHP Code:

if ($_REQUEST['do'] == "update")


and when you link it with a url set it like this:
Code:

topxadmin.php?do=update&amp;id=$id
also get rid of this:
$DB=$DB_site;
and just use $DB_site

hmmm...I keep finding more...

take this:
PHP Code:

print_cp_header("Top X Control Panel"); 

and move it to where $DB=$DB_site; was

gfxhavenowner 07-13-2004 10:44 PM

LOL, damn, didn't my code was so bad lol.

Anyways, here's the new code:

Code:

<?php

// ######################### ERROR REPORTING #############################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('GET_EDIT_TEMPLATES', true);
define('THIS_SCRIPT', 'topxadmin');

require_once('./global.php');
require_once('./includes/functions_misc.php');

print_cp_header("Top X Control Panel");

// ###################### Edit Settings ########################
if ($_REQUEST['do'] == "update")
{

$excludedforums=$DB_site->query_first("SELECT excludedforums FROM topx_admin WHERE id = $topx_adminid");

print_form_header('topxadmin', 'do_update_topxsetting');
        print_table_header("Top X Settings");
        print_input_row("Forums to exclude", 'exclude_forums',$excludedforums['exclude_forums']);
        print_submit_row("Update Top X Settings", 0);
}
       
if($_POST['do']=="do_update_topxsetting")
{
$DB_site->query(" UPDATE topx_admin SET excludedforums = '" . $_POST['excludedforums'] . "' ");

define('CP_REDIRECT', 'topxadmin.php?act=update');
print_stop_message('excluded_forums_updated');

}
       
       

?>

And here's the error I get when clicking the link.

Code:

Database error in vBulletin 3.0.3:

Invalid SQL: SELECT excludedforums FROM topx_admin WHERE id =
mysql error: You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

mysql error number: 1064


Andreas 07-13-2004 10:47 PM

Quote:

Originally Posted by Dark_Wizard
to this:
PHP Code:

$DB->query("
UPDATE topx_admin 
SET excludedforums = '" 
$_POST['excludedforums'] . "'
"
); 


Never-ever should one use a variable from an URL or user input unquoted in an SQL-query!

Dark_Wizard 07-13-2004 10:53 PM

Quote:

Originally Posted by KirbyDE
Never-ever should one use a variable from an URL or user input unquoted in an SQL-query!


Agreed...just went through this very fast without wanting to rewrite all of his code...

gfxhavenowner 07-13-2004 10:54 PM

Quote:

Originally Posted by Dark_Wizard
Agreed...just went through this very fast without wanting to rewrite all of his code...

:( I'm getting the feeling like I should just cut my losses now lol.

Dark_Wizard 07-13-2004 10:58 PM

Quote:

Originally Posted by gfxhavenowner
:( I'm getting the feeling like I should just cut my losses now lol.

Your code is missing alot unless your not posting all of it. May I make a suggestion...check out how vb does it and get your ideas from that...if your still having problems let me know offline instead of posting everything back and forth in a thread and getting you more confused.

I really didn't want to rewrite your code for you as this would be a good learning experience for you and at the same time gets you more familiar with php as the dev's a vb.com have done an excellent job on vb 3.x......


All times are GMT. The time now is 07:01 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.02578 seconds
  • Memory Usage 1,772KB
  • 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
  • (9)bbcode_code_printable
  • (9)bbcode_php_printable
  • (4)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)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
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete