FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Unable to connect to database server!
Show: Today's Messages :: Polls :: Message Navigator
Switch to threaded view of this topic Create a new topic Submit Reply
Unable to connect to database server! [message #172081] Sun, 30 January 2011 11:43 Go to next message
netsurfer802 is currently offline  netsurfer802
Messages: 1
Registered: January 2011
Karma: 0
Junior Member
I AM POSTING SOME OF THIS IN ALL CAPS TO HAVE WHAT I'M WRITING
PERSONALLY IN

THIS POST FROM WHAT I'M COPYING (EXAMPLE FOR CONTENTS ON MY WEB HOST
AS WELL

AS THE INSTRUCTIONS I WAS GIVEN TO HAVE PHP FILES WORK WITH MY MYSQL

DATABASE.)
I KEEP GETTING THE ERROR "UNABLE TO CONNECT TO DATABASE SERVER!"
WHENEVER I

GO TO MY HOMEPAGE WHICH IS WORKING OFF THE /HTDOCS/ADMIN/
CATEGORIES.PHP FILE.

WHY? WHAT CAN I DO TO CORRECT THIS? THE INSTRUCTIONS SAY TO GO TO
THE

/ADMIN FOLDER OF MY WEBHOST AND THEN TO CLICK ON THE LINK TO LOG IN
WHICH

AUTOMATICALLY "CALLS UP" THE /HTDOCS/ADMIN/CATEGORIES.PHP FILE THAT I
KEEP

GETTING THE ERROR WITH. FIRST I'LL INCLUDE THE INSTRUCTIONS THAT I
WAS GIVEN

AND HAD FOLLOWED TO THE BEST THAT I KNEW TO...AND THEN I'LL PASTE ALL
THE

CODE IN THE FOLLOWING FILES:


/htdocs/includes/configure.php
/htdocs/admin/includes/configure.php
/htdocs/admin/categories.php

PLEASE ADVISE ON WHAT I CAN DO TO BYPASS GETTING THIS ERROR EVERY
TIME.

PLEASE FIRST READ BELOW. IF YOU CAN'T SEE ALSO WHY I MIGHT BE GETTING
THIS

ERROR AND YOU NEED MORE INFORMATION PLEASE DON'T HESITATE TO ASK WHAT
YOU

NEED TO KNOW...

THANKS VERY MUCH IN ADVANCED FOR ANY HELPFUL RESPONSE.
------------------------------------------------------------------------

INSTRUCTIONS I WAS GIVEN:

Create a mysql DB
Login into your hosting control panel and click on My SQL and create
a
database called ebookstore. You now need to create a database
username
and password and give the user full (or all) permissions to the
database you
have just created. Remember the details as you will need them later
on.
Populate the MySql Tables
From within the MySql page of you hosting account click on
phpMyAdmin.
From the next page select the database you have just created and then
click
on SQL. Copy the contents of \sql\storetabels.txt into the box called
Run
SQL query/queries on database and then click go, this will create the
tables
required for your database.
Upload Your Files To Your WebServer
You now need to upload the contents of the folder called “files to
upload” to
your webserver.
Edit the configuration files
You need to edit 2 files that you have uploaded to your webserver,
they are:

-
Includes/configure.php
Admin/includes/configure.php
On both files you need to edit the sections that says CHANGEME.

Fully Automated eBook Store Installation Instructions
Change Permissions
You can change the permissions using the file manager within your
hosting
control panel. You need to change the permissions (chmod) on the
following
files: -
Admin/backups – 777
Admin/images/graphs – 777
Admin/includes/graphs – 777
Download – 777
Pub – 777
Images – 777
Images/banners – 777
Stylesheet.css – 777
Password Protect Your Admin Folder
From within your hosting control panel you need to password protect
your
admin folder so that only you can access it.
Change your settings
Browse to http://yourdomainname.com/admin and click on Click here for
admin, then click on every link on the left hand side and change the
settings
as required, check the settings on EVERY page, full instructions are
detailed
at the bottom of each page.
You will see an error when you click on Orders – this is because there
are
none, orders will appear here when you have sold items.
You will need to add the € symbol and the £ symbol on the currencies
page
Upload your own Logo
To replace the default logo you need to create a logo of your own and
save it
as mylogo.gif. You then need to upload the file to the images folder.

Upload all the zipped ebooks into the "download" folder.


----------------------------------------------------------------------

CONTENTS OF THIS FILE ARE LISTED BELOW: /htdocs/includes/configure.php

php /* Big Fat Ebook Webstore http://www.netsurfer802.byethost17.com
*/

// Define the webserver and path parameters
// * DIR_FS_* = Filesystem directories (local/physical)
// * DIR_WS_* = Webserver directories (virtual/URL)


// add your database and website details to the variables below

define('DB_SERVER_USERNAME', 'b17_6763068');
// your username that you use to log into your web server
define('DB_SERVER_PASSWORD', '3f82f8');
// your password that you use to log into your web server
define('DB_DATABASE', 'b17_6763068_ebookstore');
// replace username with your web server username
define('DIR_FS_CATALOG', '/home/netsurfer802.byethost17.com
/htdocs/');

define('HTTP_SERVER', 'http://netsurfer802.byethost17.com
');
define('HTTP_COOKIE_DOMAIN', '.netsurfer802.byethost17.com
');
// do not include the www





// you do not need to change anything below

define('DB_SERVER', 'localhost');
define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/');

define('DIR_FS_DOWNLOAD', DIR_FS_CATALOG . 'download/');

define('HTTPS_COOKIE_DOMAIN', '');

define('HTTP_COOKIE_PATH', '/');

define('HTTPS_COOKIE_PATH', '');

define('DIR_WS_HTTP_CATALOG', '/');

define('DIR_WS_HTTPS_CATALOG', '');

define('DIR_WS_IMAGES', 'images/');

define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/');

define('DIR_WS_INCLUDES', 'includes/');

define('DIR_WS_BOXES', DIR_WS_INCLUDES . 'boxes/');

define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/');

define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/');

define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/');

define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/');


define('HTTPS_SERVER', '');
define('ENABLE_SSL', false);
define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/');

define('USE_PCONNECT', 'false');
define('STORE_SESSIONS', 'mysql');
?>

CONTENTS OF THIS FILE ARE LISTED BELOW: /htdocs/admin/includes/
configure.php


<?php
/*

*/

// Define the webserver and path parameters
// * DIR_FS_* = Filesystem directories (local/physical)
// * DIR_WS_* = Webserver directories (virtual/URL)


// add your database and website details to the variables below

define('DB_SERVER_USERNAME', 'b17_6763068');
// your username that you use to log into your web server
define('DB_SERVER_PASSWORD', '3f82f8');
// your password that you use to log into your web server
define('DB_DATABASE', 'b17_6763068_ebookstore');
// replace username with your web server username
define('DIR_FS_ADMIN', '/home/netsurfer802.byethost17.com/htdocs/
admin/');

// replace username with your web server username
define('DIR_FS_CATALOG', '/home/netsurfer802.byethost17.com/
htdocs/');
define('DIR_FS_DOCUMENT_ROOT', '/home/netsurfer802.byethost17.com/
htdocs');
define('SITE', 'www.netsurfer802.byethost17.com');
define('WWW', 'http://www.netsurfer802.byethost17.com');
define('HTTP_SERVER', 'http://www.netsurfer802.byethost17.com');
define('HTTP_CATALOG_SERVER', 'http://
www.netsurfer802.byethost17.com');






// you do not need to change anything below


define('DB_SERVER', 'localhost');
define('DIR_WS_ADMIN', '/admin/');
define('DIR_WS_CATALOG', '/');
define('DIR_WS_IMAGES', 'images/');

define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/');

define('DIR_WS_CATALOG_IMAGES', DIR_WS_CATALOG . 'images/');

define('DIR_WS_INCLUDES', 'includes/');

define('DIR_WS_BOXES', DIR_WS_INCLUDES . 'boxes/');

define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/');

define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/');

define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/');

define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/');

define('DIR_WS_CATALOG_LANGUAGES', DIR_WS_CATALOG . 'includes/
languages/');

define('DIR_FS_CATALOG_LANGUAGES', DIR_FS_CATALOG . 'includes/
languages/');

define('DIR_FS_CATALOG_IMAGES', DIR_FS_CATALOG . 'images/');

define('DIR_FS_CATALOG_MODULES', DIR_FS_CATALOG . 'includes/
modules/');

define('DIR_FS_BACKUP', DIR_FS_ADMIN . 'backups/');


define('HTTPS_CATALOG_SERVER', '');

define('ENABLE_SSL_CATALOG', 'false');
define('USE_PCONNECT', 'false');
define('STORE_SESSIONS', 'mysql');
?>

CONTENTS OF THIS FILE ARE LISTED BELOW: /htdocs/admin/categories.php

<?php
/*

*/

require('includes/application_top.php');

require(DIR_WS_CLASSES . 'currencies.php');
$currencies = new currencies();

$action = (isset($HTTP_GET_VARS['action']) ?
$HTTP_GET_VARS['action'] :

'');

if (tep_not_null($action)) {
switch ($action) {
case 'setflag':
if ( ($HTTP_GET_VARS['flag'] == '0') ||
($HTTP_GET_VARS['flag'] ==

'1') ) {
if (isset($HTTP_GET_VARS['pID'])) {
tep_set_product_status($HTTP_GET_VARS['pID'],

$HTTP_GET_VARS['flag']);
}

if (USE_CACHE == 'true') {
tep_reset_cache_block('categories');
tep_reset_cache_block('also_purchased');
}
}

tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' .

$HTTP_GET_VARS['cPath'] . '&pID=' . $HTTP_GET_VARS['pID']));
break;
case 'insert_category':
case 'update_category':
if (isset($HTTP_POST_VARS['categories_id'])) $categories_id =

tep_db_prepare_input($HTTP_POST_VARS['categories_id']);
$sort_order =
tep_db_prepare_input($HTTP_POST_VARS['sort_order']);

$sql_data_array = array('sort_order' => $sort_order);

if ($action == 'insert_category') {
$insert_sql_data = array('parent_id' =>
$current_category_id,
'date_added' => 'now()');

$sql_data_array = array_merge($sql_data_array,
$insert_sql_data);

tep_db_perform(TABLE_CATEGORIES, $sql_data_array);

$categories_id = tep_db_insert_id();
} elseif ($action == 'update_category') {
$update_sql_data = array('last_modified' => 'now()');

$sql_data_array = array_merge($sql_data_array,
$update_sql_data);

tep_db_perform(TABLE_CATEGORIES, $sql_data_array, 'update',

"categories_id = '" . (int)$categories_id . "'");
}

$languages = tep_get_languages();
for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
$categories_name_array = $HTTP_POST_VARS['categories_name'];

$language_id = $languages[$i]['id'];

$sql_data_array = array('categories_name' =>

tep_db_prepare_input($categories_name_array[$language_id]));

if ($action == 'insert_category') {
$insert_sql_data = array('categories_id' =>
$categories_id,
'language_id' => $languages[$i]
['id']);

$sql_data_array = array_merge($sql_data_array,
$insert_sql_data);

tep_db_perform(TABLE_CATEGORIES_DESCRIPTION,
$sql_data_array);
} elseif ($action == 'update_category') {
tep_db_perform(TABLE_CATEGORIES_DESCRIPTION,
$sql_data_array,

'update', "categories_id = '" . (int)$categories_id . "' and
language_id = '"

.. (int)$languages[$i]['id'] . "'");
}
}

if ($categories_image = new upload('categories_image',

DIR_FS_CATALOG_IMAGES)) {
tep_db_query("update " . TABLE_CATEGORIES . " set
categories_image

= '" . tep_db_input($categories_image->filename) . "' where
categories_id =

'" . (int)$categories_id . "'");
}

if (USE_CACHE == 'true') {
tep_reset_cache_block('categories');
tep_reset_cache_block('also_purchased');
}

tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' .
$cPath .

'&cID=' . $categories_id));
break;
case 'delete_category_confirm':
if (isset($HTTP_POST_VARS['categories_id'])) {
$categories_id =

tep_db_prepare_input($HTTP_POST_VARS['categories_id']);

$categories = tep_get_category_tree($categories_id, '', '0',
'',

true);
$products = array();
$products_delete = array();

for ($i=0, $n=sizeof($categories); $i<$n; $i++) {
$product_ids_query = tep_db_query("select products_id from
" .

TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" .

(int)$categories[$i]['id'] . "'");

while ($product_ids =
tep_db_fetch_array($product_ids_query)) {
$products[$product_ids['products_id']]['categories'][]
=

$categories[$i]['id'];
}
}

reset($products);
while (list($key, $value) = each($products)) {
$category_ids = '';

for ($i=0, $n=sizeof($value['categories']); $i<$n; $i++) {
$category_ids .= "'" . (int)$value['categories'][$i] .
"', ";
}
$category_ids = substr($category_ids, 0, -2);

$check_query = tep_db_query("select count(*) as total from
" .

TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$key .
"' and

categories_id not in (" . $category_ids . ")");
$check = tep_db_fetch_array($check_query);
if ($check['total'] < '1') {
$products_delete[$key] = $key;
}
}

// removing categories can be a lengthy process
tep_set_time_limit(0);
for ($i=0, $n=sizeof($categories); $i<$n; $i++) {
tep_remove_category($categories[$i]['id']);
}

reset($products_delete);
while (list($key) = each($products_delete)) {
tep_remove_product($key);
}
}

if (USE_CACHE == 'true') {
tep_reset_cache_block('categories');
tep_reset_cache_block('also_purchased');
}

tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' .
$cPath));
break;
case 'delete_product_confirm':
if (isset($HTTP_POST_VARS['products_id']) &&

isset($HTTP_POST_VARS['product_categories']) &&

is_array($HTTP_POST_VARS['product_categories'])) {
$product_id =
tep_db_prepare_input($HTTP_POST_VARS['products_id']);
$product_categories = $HTTP_POST_VARS['product_categories'];

for ($i=0, $n=sizeof($product_categories); $i<$n; $i++) {
tep_db_query("delete from " .
TABLE_PRODUCTS_TO_CATEGORIES . "

where products_id = '" . (int)$product_id . "' and categories_id =
'" .

(int)$product_categories[$i] . "'");
}

$product_categories_query = tep_db_query("select count(*) as
total

from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" .

(int)$product_id . "'");
$product_categories =

tep_db_fetch_array($product_categories_query);

if ($product_categories['total'] == '0') {
tep_remove_product($product_id);
}
}

if (USE_CACHE == 'true') {
tep_reset_cache_block('categories');
tep_reset_cache_block('also_purchased');
}

tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' .
$cPath));
break;
case 'move_category_confirm':
if (isset($HTTP_POST_VARS['categories_id']) &&

($HTTP_POST_VARS['categories_id'] !=
$HTTP_POST_VARS['move_to_category_id']))

{
$categories_id =

tep_db_prepare_input($HTTP_POST_VARS['categories_id']);
$new_parent_id =

tep_db_prepare_input($HTTP_POST_VARS['move_to_category_id']);

$path = explode('_',

tep_get_generated_category_path_ids($new_parent_id));

if (in_array($categories_id, $path)) {
$messageStack-
> add_session(ERROR_CANNOT_MOVE_CATEGORY_TO_PARENT,

'error');

tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' .
$cPath

.. '&cID=' . $categories_id));
} else {
tep_db_query("update " . TABLE_CATEGORIES . " set
parent_id = '"

.. (int)$new_parent_id . "', last_modified = now() where categories_id
= '" .

(int)$categories_id . "'");

if (USE_CACHE == 'true') {
tep_reset_cache_block('categories');
tep_reset_cache_block('also_purchased');
}

tep_redirect(tep_href_link(FILENAME_CATEGORIES,
'cPath=' .

$new_parent_id . '&cID=' . $categories_id));
}
}

break;
case 'move_product_confirm':
$products_id =
tep_db_prepare_input($HTTP_POST_VARS['products_id']);
$new_parent_id =

tep_db_prepare_input($HTTP_POST_VARS['move_to_category_id']);

$duplicate_check_query = tep_db_query("select count(*) as
total from

" . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" .

(int)$products_id . "' and categories_id = '" . (int)$new_parent_id .
"'");
$duplicate_check = tep_db_fetch_array($duplicate_check_query);
if ($duplicate_check['total'] < 1) tep_db_query("update " .

TABLE_PRODUCTS_TO_CATEGORIES . " set categories_id = '" . (int)
$new_parent_id

.. "' where products_id = '" . (int)$products_id . "' and categories_id
= '" .

(int)$current_category_id . "'");

if (USE_CACHE == 'true') {
tep_reset_cache_block('categories');
tep_reset_cache_block('also_purchased');
}

tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' .

$new_parent_id . '&pID=' . $products_id));
break;
case 'insert_product':
case 'update_product':
if (isset($HTTP_POST_VARS['edit_x']) ||

isset($HTTP_POST_VARS['edit_y'])) {
$action = 'new_product';
} else {
if (isset($HTTP_GET_VARS['pID'])) $products_id =

tep_db_prepare_input($HTTP_GET_VARS['pID']);
$products_date_available =

tep_db_prepare_input($HTTP_POST_VARS['products_date_available']);

$products_date_available = (date('Y-m-d') <

$products_date_available) ? $products_date_available : 'null';

$sql_data_array = array('products_quantity' =>

tep_db_prepare_input($HTTP_POST_VARS['products_quantity']),
'products_model' =>

tep_db_prepare_input($HTTP_POST_VARS['products_model']),
'products_price' =>

tep_db_prepare_input($HTTP_POST_VARS['products_price']),
'products_date_available' =>

$products_date_available,
'products_weight' =>

tep_db_prepare_input($HTTP_POST_VARS['products_weight']),
'products_status' =>

tep_db_prepare_input($HTTP_POST_VARS['products_status']),
'products_tax_class_id' =>

tep_db_prepare_input($HTTP_POST_VARS['products_tax_class_id']),
'manufacturers_id' =>

tep_db_prepare_input($HTTP_POST_VARS['manufacturers_id']));

if (isset($HTTP_POST_VARS['products_image']) &&

tep_not_null($HTTP_POST_VARS['products_image']) &&

($HTTP_POST_VARS['products_image'] != 'none')) {
$sql_data_array['products_image'] =

tep_db_prepare_input($HTTP_POST_VARS['products_image']);
}

if ($action == 'insert_product') {
$insert_sql_data = array('products_date_added' =>
'now()');

$sql_data_array = array_merge($sql_data_array,
$insert_sql_data);

tep_db_perform(TABLE_PRODUCTS, $sql_data_array);
$products_id = tep_db_insert_id();

tep_db_query("insert into " .
TABLE_PRODUCTS_TO_CATEGORIES . "

(products_id, categories_id) values ('" . (int)$products_id . "',
'" .

(int)$current_category_id . "')");
} elseif ($action == 'update_product') {
$update_sql_data = array('products_last_modified' =>
'now()');

$sql_data_array = array_merge($sql_data_array,
$update_sql_data);

tep_db_perform(TABLE_PRODUCTS, $sql_data_array, 'update',

"products_id = '" . (int)$products_id . "'");
}

$languages = tep_get_languages();
for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
$language_id = $languages[$i]['id'];

$sql_data_array = array('products_name' =>

tep_db_prepare_input($HTTP_POST_VARS['products_name'][$language_id]),
'products_info' =>

tep_db_prepare_input($HTTP_POST_VARS['products_info'][$language_id]),
'products_description' =>

tep_db_prepare_input($HTTP_POST_VARS['products_description']
[$language_id]),
'products_url' =>

tep_db_prepare_input($HTTP_POST_VARS['products_url'][$language_id]));

if ($action == 'insert_product') {
$insert_sql_data = array('products_id' => $products_id,
'language_id' => $language_id);

$sql_data_array = array_merge($sql_data_array,

$insert_sql_data);

tep_db_perform(TABLE_PRODUCTS_DESCRIPTION,
$sql_data_array);
} elseif ($action == 'update_product') {
tep_db_perform(TABLE_PRODUCTS_DESCRIPTION,
$sql_data_array,

'update', "products_id = '" . (int)$products_id . "' and language_id =
'" .

(int)$language_id . "'");
}
}

if (USE_CACHE == 'true') {
tep_reset_cache_block('categories');
tep_reset_cache_block('also_purchased');
}

tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' .
$cPath .

'&pID=' . $products_id));
}
break;
case 'copy_to_confirm':
if (isset($HTTP_POST_VARS['products_id']) &&

isset($HTTP_POST_VARS['categories_id'])) {
$products_id =

tep_db_prepare_input($HTTP_POST_VARS['products_id']);
$categories_id =

tep_db_prepare_input($HTTP_POST_VARS['categories_id']);

if ($HTTP_POST_VARS['copy_as'] == 'link') {
if ($categories_id != $current_category_id) {
$check_query = tep_db_query("select count(*) as total
from " .

TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)
$products_id .

"' and categories_id = '" . (int)$categories_id . "'");
$check = tep_db_fetch_array($check_query);
if ($check['total'] < '1') {
tep_db_query("insert into " .
TABLE_PRODUCTS_TO_CATEGORIES .

" (products_id, categories_id) values ('" . (int)$products_id . "',
'" .

(int)$categories_id . "')");
}
} else {
$messageStack-
> add_session(ERROR_CANNOT_LINK_TO_SAME_CATEGORY,

'error');
}
} elseif ($HTTP_POST_VARS['copy_as'] == 'duplicate') {
$product_query = tep_db_query("select products_quantity,

products_model, products_image, products_price,
products_date_available,

products_weight, products_tax_class_id, manufacturers_id from " .

TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");
$product = tep_db_fetch_array($product_query);

tep_db_query("insert into " . TABLE_PRODUCTS . "

(products_quantity, products_model,products_image, products_price,

products_date_added, products_date_available, products_weight,

products_status, products_tax_class_id, manufacturers_id) values
('" .

tep_db_input($product['products_quantity']) . "', '" .

tep_db_input($product['products_model']) . "', '" .

tep_db_input($product['products_image']) . "', '" .

tep_db_input($product['products_price']) . "', now(), '" .

tep_db_input($product['products_date_available']) . "', '" .

tep_db_input($product['products_weight']) . "', '0', '" .

(int)$product['products_tax_class_id'] . "', '" .

(int)$product['manufacturers_id'] . "')");
$dup_products_id = tep_db_insert_id();

$description_query = tep_db_query("select language_id,

products_name, products_info, products_description, products_url from
" .

TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)
$products_id .

"'");
while ($description =
tep_db_fetch_array($description_query)) {
tep_db_query("insert into " .
TABLE_PRODUCTS_DESCRIPTION . "

(products_id, language_id, products_name, products_info,

products_description, products_url, products_viewed) values ('" .

(int)$dup_products_id . "', '" . (int)$description['language_id'] .
"', '" .

tep_db_input($description['products_name']) . "', '" .

tep_db_input($description['products_description']) . "', '" .

tep_db_input($description['products_url']) . "', '0')");
}

tep_db_query("insert into " .
TABLE_PRODUCTS_TO_CATEGORIES . "

(products_id, categories_id) values ('" . (int)$dup_products_id . "',
'" .

(int)$categories_id . "')");
$products_id = $dup_products_id;
}

if (USE_CACHE == 'true') {
tep_reset_cache_block('categories');
tep_reset_cache_block('also_purchased');
}
}

tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' .

$categories_id . '&pID=' . $products_id));
break;
case 'new_product_preview':
// copy image only if modified
$products_image = new upload('products_image');
$products_image->set_destination(DIR_FS_CATALOG_IMAGES);
if ($products_image->parse() && $products_image->save()) {
$products_image_name = $products_image->filename;
} else {
$products_image_name =

(isset($HTTP_POST_VARS['products_previous_image']) ?

$HTTP_POST_VARS['products_previous_image'] : '');
}
break;
}
}

// check if the catalog image directory exists
if (is_dir(DIR_FS_CATALOG_IMAGES)) {
if (!is_writeable(DIR_FS_CATALOG_IMAGES))

$messageStack->add(ERROR_CATALOG_IMAGE_DIRECTORY_NOT_WRITEABLE,
'error');
} else {
$messageStack->add(ERROR_CATALOG_IMAGE_DIRECTORY_DOES_NOT_EXIST,

'error');
}
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php
echo

CHARSET; ?>">
<title><?php echo TITLE; ?></title>
<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
<script language="javascript" src="includes/general.js"></script>
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0"

leftmargin="0" rightmargin="0" bgcolor="#FFFFFF" onload="SetFocus();">
<div id="spiffycalendar" class="text"></div>
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->

<!-- body //-->
<table border="0" width="100%" cellspacing="2" cellpadding="2">
<tr>
<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table
border="0"

width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1"

class="columnLeft">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
</table></td>
<!-- body_text //-->
<td width="100%" valign="top">
<?php
if ($action == 'new_product') {
$parameters = array('products_name' => '',
'products_info' => '',
'products_description' => '',
'products_url' => '',
'products_id' => '',
'products_quantity' => '',
'products_model' => '',
'products_image' => '',
'products_price' => '',
'products_weight' => '',
'products_date_added' => '',
'products_last_modified' => '',
'products_date_available' => '',
'products_status' => '',
'products_tax_class_id' => '',
'manufacturers_id' => '');

$pInfo = new objectInfo($parameters);

if (isset($HTTP_GET_VARS['pID']) && empty($HTTP_POST_VARS)) {
$product_query = tep_db_query("select pd.products_name,

pd.products_description, pd.products_url, p.products_id,
p.products_quantity,

p.products_model, p.products_image, p.products_price,
p.products_weight,

p.products_date_added, p.products_last_modified,

date_format(p.products_date_available, '%Y-%m-%d') as

products_date_available, p.products_status, p.products_tax_class_id,

p.manufacturers_id from " . TABLE_PRODUCTS . " p, " .

TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" .

(int)$HTTP_GET_VARS['pID'] . "' and p.products_id = pd.products_id
and

pd.language_id = '" . (int)$languages_id . "'");
$product = tep_db_fetch_array($product_query);

$pInfo->objectInfo($product);
} elseif (tep_not_null($HTTP_POST_VARS)) {
$pInfo->objectInfo($HTTP_POST_VARS);
$products_name = $HTTP_POST_VARS['products_name'];
$products_info = $HTTP_POST_VARS['products_info'];
$products_description = $HTTP_POST_VARS['products_description'];
$products_url = $HTTP_POST_VARS['products_url'];
}

$manufacturers_array = array(array('id' => '', 'text' =>
TEXT_NONE));
$manufacturers_query = tep_db_query("select manufacturers_id,

manufacturers_name from " . TABLE_MANUFACTURERS . " order by

manufacturers_name");
while ($manufacturers = tep_db_fetch_array($manufacturers_query))
{
$manufacturers_array[] = array('id' =>

$manufacturers['manufacturers_id'],
'text' =>

$manufacturers['manufacturers_name']);
}

$tax_class_array = array(array('id' => '0', 'text' => TEXT_NONE));
$tax_class_query = tep_db_query("select tax_class_id,
tax_class_title

from " . TABLE_TAX_CLASS . " order by tax_class_title");
while ($tax_class = tep_db_fetch_array($tax_class_query)) {
$tax_class_array[] = array('id' => $tax_class['tax_class_id'],
'text' =>
$tax_class['tax_class_title']);
}

$languages = tep_get_languages();

if (!isset($pInfo->products_status)) $pInfo->products_status =
'1';
switch ($pInfo->products_status) {
case '0': $in_status = false; $out_status = true; break;
case '1':
default: $in_status = true; $out_status = false;
}
?>
<link rel="stylesheet" type="text/css"

href="includes/javascript/spiffyCal/spiffyCal_v2_1.css">
<script language="JavaScript"

src="includes/javascript/spiffyCal/spiffyCal_v2_1.js"></script>
<script language="javascript"><!--
var dateAvailable = new ctlSpiffyCalendarBox("dateAvailable",

"new_product", "products_date_available","btnDate1","<?php echo

$pInfo->products_date_available; ?>",scBTNMODE_CUSTOMBLUE);
//--></script>
<script language="javascript"><!--
var tax_rates = new Array();
<?php
for ($i=0, $n=sizeof($tax_class_array); $i<$n; $i++) {
if ($tax_class_array[$i]['id'] > 0) {
echo 'tax_rates["' . $tax_class_array[$i]['id'] . '"] = ' .

tep_get_tax_rate_value($tax_class_array[$i]['id']) . ';' . "\n";
}
}
?>

function doRound(x, places) {
return Math.round(x * Math.pow(10, places)) / Math.pow(10, places);
}

function getTaxRate() {
var selected_value =

document.forms["new_product"].products_tax_class_id.selectedIndex;
var parameterVal =

document.forms["new_product"].products_tax_class_id[selected_value].value;

if ( (parameterVal > 0) && (tax_rates[parameterVal] > 0) ) {
return tax_rates[parameterVal];
} else {
return 0;
}
}

function updateGross() {
var taxRate = getTaxRate();
var grossValue = document.forms["new_product"].products_price.value;

if (taxRate > 0) {
grossValue = grossValue * ((taxRate / 100) + 1);
}

document.forms["new_product"].products_price_gross.value =

doRound(grossValue, 4);
}

function updateNet() {
var taxRate = getTaxRate();
var netValue =
document.forms["new_product"].products_price_gross.value;

if (taxRate > 0) {
netValue = netValue / ((taxRate / 100) + 1);
}

document.forms["new_product"].products_price.value =
doRound(netValue, 4);
}
//--></script>
<?php echo tep_draw_form('new_product', FILENAME_CATEGORIES,
'cPath=' .

$cPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' .
$HTTP_GET_VARS['pID'] :

'') . '&action=new_product_preview', 'post',

'enctype="multipart/form-data"'); ?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td><table border="0" width="100%" cellspacing="0"
cellpadding="0">
<tr>
<td class="pageHeading"><?php echo
sprintf(TEXT_NEW_PRODUCT,

tep_output_generated_category_path($current_category_id)); ?></td>
<td class="pageHeading" align="right"><?php echo

tep_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH,

HEADING_IMAGE_HEIGHT); ?></td>
</tr>
</table></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '1',
'10');

?></td>
</tr>
<tr>
<td><table border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="main"><?php echo TEXT_PRODUCTS_STATUS; ?></td>
<td class="main"><?php echo
tep_draw_separator('pixel_trans.gif',

'24', '15') . '&nbsp;' . tep_draw_radio_field('products_status', '1',

$in_status) . '&nbsp;' . TEXT_PRODUCT_AVAILABLE . '&nbsp;' .

tep_draw_radio_field('products_status', '0', $out_status) .
'&nbsp;' .

TEXT_PRODUCT_NOT_AVAILABLE; ?></td>
</tr>
<tr>

<td colspan="2"><?php echo
tep_draw_separator('pixel_trans.gif',

'1', '10'); ?></td>

</tr>
<?php
for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
?>
<tr>
<td class="main"><?php if ($i == 0) echo
TEXT_PRODUCTS_NAME;

?></td>
<td class="main"><?php echo

tep_draw_input_field('products_name[' . $languages[$i]['id'] . ']',

(isset($products_name[$languages[$i]['id']]) ?

$products_name[$languages[$i]['id']] :

tep_get_products_name($pInfo->products_id, $languages[$i]['id']))); ?
> </td>
</tr>
<?php
}
?>
<tr>
<td colspan="2"><?php echo
tep_draw_separator('pixel_trans.gif',

'1', '10'); ?></td>
</tr>
<tr>
<td class="main"><?php echo TEXT_PRODUCTS_TAX_CLASS; ?></
td>
<td class="main"><?php echo
tep_draw_separator('pixel_trans.gif',

'24', '15') . '&nbsp;' .
tep_draw_pull_down_menu('products_tax_class_id',

$tax_class_array, $pInfo->products_tax_class_id,
'onchange="updateGross()"');

?></td>
</tr>
<tr>
<td class="main"><?php echo TEXT_PRODUCTS_PRICE_NET; ?></
td>
<td class="main"><?php echo
tep_draw_separator('pixel_trans.gif',

'24', '15') . '&nbsp;' . tep_draw_input_field('products_price',

$pInfo->products_price, 'onKeyUp="updateGross()"'); ?></td>
</tr>
<tr>
<td class="main"><?php echo TEXT_PRODUCTS_PRICE_GROSS; ?></
td>
<td class="main"><?php echo
tep_draw_separator('pixel_trans.gif',

'24', '15') . '&nbsp;' . tep_draw_input_field('products_price_gross',

$pInfo->products_price, 'OnKeyUp="updateNet()"'); ?></td>
</tr>
<tr>
<td colspan="2"><?php echo
tep_draw_separator('pixel_trans.gif',

'1', '10'); ?></td>
</tr>
<script language="javascript"><!--
updateGross();
//--></script>

<?php
for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
?>
<tr>
<td class="main" valign="top"><?php if ($i == 0) echo

TEXT_PRODUCTS_INFO; ?></td>
<td><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="main" valign="top"></td>
<td class="main"><?php echo

tep_draw_textarea_field('products_info[' . $languages[$i]['id'] .
']',

'soft', '70', '3', (isset($products_info[$languages[$i]['id']]) ?

$products_info[$languages[$i]['id']] :

tep_get_products_info($pInfo->products_id, $languages[$i]['id']))); ?
> </td>
</tr>
</table></td>
</tr>
<?php
}
?>


<?php
for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
?>
<tr>
<td class="main" valign="top"><?php if ($i == 0) echo

TEXT_PRODUCTS_DESCRIPTION; ?></td>
<td><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="main" valign="top"><?php echo

tep_draw_textarea_field('products_description[' . $languages[$i]
['id'] . ']',

'soft', '70', '30', (isset($products_description[$languages[$i]
['id']]) ?

$products_description[$languages[$i]['id']] :

tep_get_products_description($pInfo->products_id, $languages[$i]
['id'])));

?></td>
</tr>
</table></td>
</tr>
<?php
}
?>
<tr>
<td colspan="2"><?php echo
tep_draw_separator('pixel_trans.gif',

'1', '10'); ?></td>
</tr>
<tr>
<td class="main"><?php echo TEXT_PRODUCTS_QUANTITY; ?></
td>
<td class="main"><?php echo
tep_draw_separator('pixel_trans.gif',

'24', '15') . '&nbsp;' . tep_draw_input_field('products_quantity',

$pInfo->products_quantity); ?></td>
</tr>
<tr>


<td colspan="2"><?php echo
tep_draw_separator('pixel_trans.gif',

'1', '10'); ?></td>
</tr>
<tr>
<td class="main"><?php echo TEXT_PRODUCTS_IMAGE; ?></td>
<td class="main"><?php echo
tep_draw_separator('pixel_trans.gif',

'24', '15') . '&nbsp;' . tep_draw_file_field('products_image') .
'<br>' .

tep_draw_separator('pixel_trans.gif', '24', '15') . '&nbsp;' .

$pInfo->products_image .
tep_draw_hidden_field('products_previous_image',

$pInfo->products_image); ?></td>
</tr>


</table></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '1',
'10');

?></td>
</tr>
<tr>
<td class="main" align="right"><?php echo

tep_draw_hidden_field('products_date_added',

(tep_not_null($pInfo->products_date_added) ? $pInfo-
> products_date_added :

date('Y-m-d'))) . tep_image_submit('button_preview.gif',
IMAGE_PREVIEW) .

'&nbsp;&nbsp;<a href="' . tep_href_link(FILENAME_CATEGORIES,
'cPath=' .

$cPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' .
$HTTP_GET_VARS['pID'] :

'')) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</
a>';

?></td>
</tr>
</table></form>
<?php
} elseif ($action == 'new_product_preview') {
if (tep_not_null($HTTP_POST_VARS)) {
$pInfo = new objectInfo($HTTP_POST_VARS);
$products_name = $HTTP_POST_VARS['products_name'];
$products_info = $HTTP_POST_VARS['products_info'];
$products_description = $HTTP_POST_VARS['products_description'];
$products_url = $HTTP_POST_VARS['products_url'];
} else {
$product_query = tep_db_query("select p.products_id,
pd.language_id,

pd.products_name, pd.products_info, pd.products_description,
pd.products_url,

p.products_quantity, p.products_model, p.products_image,
p.products_price,

p.products_weight, p.products_date_added, p.products_last_modified,

p.products_date_available, p.products_status, p.manufacturers_id from
" .

TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where

p.products_id = pd.products_id and p.products_id = '" .

(int)$HTTP_GET_VARS['pID'] . "'");
$product = tep_db_fetch_array($product_query);

$pInfo = new objectInfo($product);
$products_image_name = $pInfo->products_image;
}

$form_action = (isset($HTTP_GET_VARS['pID'])) ?
'update_product' :

'insert_product';

echo tep_draw_form($form_action, FILENAME_CATEGORIES, 'cPath=' .
$cPath .

(isset($HTTP_GET_VARS['pID']) ? '&pID=' . $HTTP_GET_VARS['pID'] :
'') .

'&action=' . $form_action, 'post', 'enctype="multipart/form-data"');

$languages = tep_get_languages();
for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
if (isset($HTTP_GET_VARS['read']) && ($HTTP_GET_VARS['read'] ==

'only')) {
$pInfo->products_name = tep_get_products_name($pInfo-
> products_id,

$languages[$i]['id']);
$pInfo->products_info = tep_get_products_info($pInfo->products_id,

$languages[$i]['id']);
$pInfo->products_description =

tep_get_products_description($pInfo->products_id, $languages[$i]
['id']);
$pInfo->products_url = tep_get_products_url($pInfo-
> products_id,

$languages[$i]['id']);
} else {
$pInfo->products_name =

tep_db_prepare_input($products_name[$languages[$i]['id']]);
$pInfo->products_info =

tep_db_prepare_input($products_info[$languages[$i]['id']]);
$pInfo->products_description =

tep_db_prepare_input($products_description[$languages[$i]['id']]);
$pInfo->products_url =

tep_db_prepare_input($products_url[$languages[$i]['id']]);
}
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td><table border="0" width="100%" cellspacing="0"
cellpadding="0">
<tr>
<td class="pageHeading"><?php echo $pInfo->products_name; ?
> </td>
<td class="pageHeading" align="right"><?php echo

$currencies->format($pInfo->products_price); ?></td>
</tr>
</table></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '1',
'10');

?></td>
</tr>
<tr>
<td class="main"><?php echo tep_image(DIR_WS_CATALOG_IMAGES .

$products_image_name, $pInfo->products_name, SMALL_IMAGE_WIDTH,

SMALL_IMAGE_HEIGHT, 'align="right" hspace="5" vspace="5"') .

$pInfo->products_description; ?></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '1',
'10');

?></td>
</tr>



<?php
if ($pInfo->products_url) {
?>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '1',
'10');

?></td>
</tr>
<tr>
<td class="main"><?php echo
sprintf(TEXT_PRODUCT_MORE_INFORMATION,

$pInfo->products_url); ?></td>
</tr>
<?php
}
?>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '1',
'10');

?></td>
</tr>
<?php
if ($pInfo->products_date_available > date('Y-m-d')) {
?>
<tr>
<td align="center" class="smallText"><?php echo

sprintf(TEXT_PRODUCT_DATE_AVAILABLE,

tep_date_long($pInfo->products_date_available)); ?></td>
</tr>
<?php
} else {
?>
<tr>
<td align="center" class="smallText"><?php echo

sprintf(TEXT_PRODUCT_DATE_ADDED, tep_date_long($pInfo-
> products_date_added));

?></td>
</tr>
<?php
}
?>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '1',
'10');

?></td>
</tr>
<?php
}

if (isset($HTTP_GET_VARS['read']) && ($HTTP_GET_VARS['read'] ==
'only'))

{
if (isset($HTTP_GET_VARS['origin'])) {
$pos_params = strpos($HTTP_GET_VARS['origin'], '?', 0);
if ($pos_params != false) {
$back_url = substr($HTTP_GET_VARS['origin'], 0,
$pos_params);
$back_url_params = substr($HTTP_GET_VARS['origin'],
$pos_params +

1);
} else {
$back_url = $HTTP_GET_VARS['origin'];
$back_url_params = '';
}
} else {
$back_url = FILENAME_CATEGORIES;
$back_url_params = 'cPath=' . $cPath . '&pID=' . $pInfo-
> products_id;
}
?>
<tr>
<td align="right"></td>
</tr>
<?php
} else {
?>
<tr>
<td align="right" class="smallText">
<?php
/* Re-Post all POST'ed variables */
reset($HTTP_POST_VARS);
while (list($key, $value) = each($HTTP_POST_VARS)) {
if (!is_array($HTTP_POST_VARS[$key])) {
echo tep_draw_hidden_field($key,

htmlspecialchars(stripslashes($value)));
}
}
$languages = tep_get_languages();
for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
echo tep_draw_hidden_field('products_name[' . $languages[$i]
['id'] .

']', htmlspecialchars(stripslashes($products_name[$languages[$i]
['id']])));
echo tep_draw_hidden_field('products_info[' . $languages[$i]['id'] .
']',

htmlspecialchars(stripslashes($products_info[$languages[$i]['id']])));
echo tep_draw_hidden_field('products_description[' .

$languages[$i]['id'] . ']',

htmlspecialchars(stripslashes($products_description[$languages[$i]
['id']])));
echo tep_draw_hidden_field('products_url[' . $languages[$i]
['id'] .

']', htmlspecialchars(stripslashes($products_url[$languages[$i]
['id']])));
}
echo tep_draw_hidden_field('products_image',

stripslashes($products_image_name));

if (isset($HTTP_GET_VARS['pID'])) {
echo tep_image_submit('button_update.gif', IMAGE_UPDATE);
} else {
echo tep_image_submit('button_insert.gif', IMAGE_INSERT);
}
echo '&nbsp;&nbsp;<a href="' .
tep_href_link(FILENAME_CATEGORIES,

'cPath=' . $cPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' .

$HTTP_GET_VARS['pID'] : '')) . '">' .
tep_image_button('button_cancel.gif',

IMAGE_CANCEL) . '</a>';
?></td>
</tr>
</table></form>
<table width="100%" border="0" cellpadding="4" cellspacing="4">
<tr>
<td class="main" valign="top">
<hr>
<b>IMPORTANT</b><BR>
After clicking on <B>Update</b> you then click on <b>My Catalogue</b>
then

click on <b>Set Download Files</b> to set the download options for
the

product.<br>
You should have already uploaded your product ZIP folder to the

<b>download</b> folder on your web server using your FTP Programme or
by

clicking on the <b>File Manager</b> link at the top of this page.
(Instructions for uploading files can be found at the bottom of the

Categories/Products page.)<br>
Your product can't be downloaded by customers unless you do these
things.<p>
</TD></TR></TABLE>
<?php
}
} else {
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td><table border="0" width="100%" cellspacing="0"
cellpadding="0">
<tr>
<td class="pageHeading"><?php echo HEADING_TITLE; ?><br>
</td>
<td class="main" align="right"><?php echo

tep_draw_separator('pixel_trans.gif', 1, HEADING_IMAGE_HEIGHT); ?></
td>
<td align="right"><table border="0" width="100%"
cellspacing="0"

cellpadding="0">
<tr>
<td class="smallText" align="right">
<?php
echo tep_draw_form('search', FILENAME_CATEGORIES, '', 'get');
echo HEADING_TITLE_SEARCH . ' ' . tep_draw_input_field('search');
echo '</form>';
?>
</td>
</tr>
<tr>
<td class="smallText" align="right">
<?php
echo tep_draw_form('goto', FILENAME_CATEGORIES, '', 'get');
echo HEADING_TITLE_GOTO . ' ' . tep_draw_pull_down_menu('cPath',

tep_get_category_tree(), $current_category_id,

'onChange="this.form.submit();"');
echo '</form>';
?>
</td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td><table border="0" width="100%" cellspacing="0"
cellpadding="0">
<tr>
<td valign="top"><table border="0" width="100%"
cellspacing="0"

cellpadding="2">
<tr class="dataTableHeadingRow">
<td class="dataTableHeadingContent"><?php echo

TABLE_HEADING_CATEGORIES_PRODUCTS; ?></td>
<td class="dataTableHeadingContent" align="center"><?
php echo

TABLE_HEADING_STATUS; ?></td>
<td class="dataTableHeadingContent" align="right"><?
php echo

TABLE_HEADING_ACTION; ?>&nbsp;</td>
</tr>
<?php
$categories_count = 0;
$rows = 0;
if (isset($HTTP_GET_VARS['search'])) {
$search = tep_db_prepare_input($HTTP_GET_VARS['search']);

$categories_query = tep_db_query("select c.categories_id,

cd.categories_name, c.categories_image, c.parent_id, c.sort_order,

c.date_added, c.last_modified from " . TABLE_CATEGORIES . " c, " .

TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id =
cd.categories_id

and cd.language_id = '" . (int)$languages_id . "' and
cd.categories_name like

'%" . tep_db_input($search) . "%' order by c.sort_order,

cd.categories_name");
} else {
$categories_query = tep_db_query("select c.categories_id,

cd.categories_name, c.categories_image, c.parent_id, c.sort_order,

c.date_added, c.last_modified from " . TABLE_CATEGORIES . " c, " .

TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" .

(int)$current_category_id . "' and c.categories_id = cd.categories_id
and

cd.language_id = '" . (int)$languages_id . "' order by c.sort_order,

cd.categories_name");
}
while ($categories = tep_db_fetch_array($categories_query)) {
$categories_count++;
$rows++;

// Get parent_id for subcategories if search
if (isset($HTTP_GET_VARS['search'])) $cPath=
$categories['parent_id'];

if ((!isset($HTTP_GET_VARS['cID']) && !
isset($HTTP_GET_VARS['pID']) ||

(isset($HTTP_GET_VARS['cID']) && ($HTTP_GET_VARS['cID'] ==

$categories['categories_id']))) && !isset($cInfo) && (substr($action,
0, 3)

!= 'new')) {
$category_childs = array('childs_count' =>

tep_childs_in_category_count($categories['categories_id']));
$category_products = array('products_count' =>

tep_products_in_category_count($categories['categories_id']));

$cInfo_array = array_merge($categories, $category_childs,

$category_products);
$cInfo = new objectInfo($cInfo_array);
}

if (isset($cInfo) && is_object($cInfo) &&
($categories['categories_id']

== $cInfo->categories_id) ) {
echo ' <tr id="defaultSelected"

class="dataTableRowSelected" onmouseover="rowOverEffect(this)"

onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' .

tep_href_link(FILENAME_CATEGORIES,

tep_get_path($categories['categories_id'])) . '\'">' . "\n";
} else {
echo ' <tr class="dataTableRow"

onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)"

onclick="document.location.href=\'' .
tep_href_link(FILENAME_CATEGORIES,

'cPath=' . $cPath . '&cID=' . $categories['categories_id']) . '\'">' .
"\n";
}
?>
<td class="dataTableContent"><?php echo '<a href="' .

tep_href_link(FILENAME_CATEGORIES,

tep_get_path($categories['categories_id'])) . '">' .
tep_image(DIR_WS_ICONS .

'folder.gif', ICON_FOLDER) . '</a>&nbsp;<b>' .
$categories['categories_name']

.. '</b>'; ?></td>
<td class="dataTableContent" align="center">&nbsp;</
td>
<td class="dataTableContent" align="right"><?php if

(isset($cInfo) && is_object($cInfo) && ($categories['categories_id']
==

$cInfo->categories_id) ) { echo tep_image(DIR_WS_IMAGES .

'icon_arrow_right.gif', ''); } else { echo '<a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' .

$categories['categories_id']) . '">' . tep_image(DIR_WS_IMAGES .

'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?>&nbsp;</td>
</tr>
<?php
}

$products_count = 0;
if (isset($HTTP_GET_VARS['search'])) {
$products_query = tep_db_query("select p.products_id,
pd.products_name,

p.products_quantity, p.products_image, p.products_price,

p.products_date_added, p.products_last_modified,
p.products_date_available,

p.products_status, p2c.categories_id from " . TABLE_PRODUCTS . " p,
" .

TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES .
" p2c

where p.products_id = pd.products_id and pd.language_id = '" .

(int)$languages_id . "' and p.products_id = p2c.products_id and

pd.products_name like '%" . tep_db_input($search) . "%' order by

pd.products_name");
} else {
$products_query = tep_db_query("select p.products_id,
pd.products_name,

p.products_quantity, p.products_image, p.products_price,

p.products_date_added, p.products_last_modified,
p.products_date_available,

p.products_status from " . TABLE_PRODUCTS . " p, " .

TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES .
" p2c

where p.products_id = pd.products_id and pd.language_id = '" .

(int)$languages_id . "' and p.products_id = p2c.products_id and

p2c.categories_id = '" . (int)$current_category_id . "' order by

pd.products_name");
}
while ($products = tep_db_fetch_array($products_query)) {
$products_count++;
$rows++;

// Get categories_id for product if search
if (isset($HTTP_GET_VARS['search'])) $cPath =

$products['categories_id'];

if ( (!isset($HTTP_GET_VARS['pID']) && !
isset($HTTP_GET_VARS['cID']) ||

(isset($HTTP_GET_VARS['pID']) && ($HTTP_GET_VARS['pID'] ==

$products['products_id']))) && !isset($pInfo) && !isset($cInfo) &&

(substr($action, 0, 3) != 'new')) {
// find out the rating average from customer reviews

$pInfo_array = array_merge($products);
$pInfo = new objectInfo($pInfo_array);
}

if (isset($pInfo) && is_object($pInfo) &&
($products['products_id'] ==

$pInfo->products_id) ) {
echo ' <tr id="defaultSelected"

class="dataTableRowSelected" onmouseover="rowOverEffect(this)"

onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' .

$products['products_id'] . '&action=new_product_preview&read=only') .
'\'">'

.. "\n";
} else {
echo ' <tr class="dataTableRow"

onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)"

onclick="document.location.href=\'' .
tep_href_link(FILENAME_CATEGORIES,

'cPath=' . $cPath . '&pID=' . $products['products_id']) . '\'">' .
"\n";
}
?>
<td class="dataTableContent"><?php echo '<a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' .

$products['products_id'] . '&action=new_product_preview&read=only') .
'">' .

tep_image(DIR_WS_ICONS . 'preview.gif', ICON_PREVIEW) . '</
a>&nbsp;' .

$products['products_name']; ?></td>
<td class="dataTableContent" align="center">
<?php
if ($products['products_status'] == '1') {
echo tep_image(DIR_WS_IMAGES . 'icon_status_green.gif',

IMAGE_ICON_STATUS_GREEN, 10, 10) . '&nbsp;&nbsp;<a href="' .

tep_href_link(FILENAME_CATEGORIES, 'action=setflag&flag=0&pID=' .

$products['products_id'] . '&cPath=' . $cPath) . '">' .

tep_image(DIR_WS_IMAGES . 'icon_status_red_light.gif',

IMAGE_ICON_STATUS_RED_LIGHT, 10, 10) . '</a>';
} else {
echo '<a href="' . tep_href_link(FILENAME_CATEGORIES,

'action=setflag&flag=1&pID=' . $products['products_id'] . '&cPath=' .
$cPath)

.. '">' . tep_image(DIR_WS_IMAGES . 'icon_status_green_light.gif',

IMAGE_ICON_STATUS_GREEN_LIGHT, 10, 10) . '</a>&nbsp;&nbsp;' .

tep_image(DIR_WS_IMAGES . 'icon_status_red.gif',
IMAGE_ICON_STATUS_RED, 10,

10);
}
?></td>
<td class="dataTableContent" align="right"><?php if

(isset($pInfo) && is_object($pInfo) && ($products['products_id'] ==

$pInfo->products_id)) { echo tep_image(DIR_WS_IMAGES .

'icon_arrow_right.gif', ''); } else { echo '<a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' .

$products['products_id']) . '">' . tep_image(DIR_WS_IMAGES .
'icon_info.gif',

IMAGE_ICON_INFO) . '</a>'; } ?>&nbsp;</td>
</tr>
<?php
}

$cPath_back = '';
if (sizeof($cPath_array) > 0) {
for ($i=0, $n=sizeof($cPath_array)-1; $i<$n; $i++) {
if (empty($cPath_back)) {
$cPath_back .= $cPath_array[$i];
} else {
$cPath_back .= '_' . $cPath_array[$i];
}
}
}

$cPath_back = (tep_not_null($cPath_back)) ? 'cPath=' .
$cPath_back . '&'

: '';
?>
<tr>
<td colspan="3"><table border="0" width="100%"

cellspacing="0" cellpadding="2">
<tr>
<td class="smallText"><?php echo
TEXT_CATEGORIES .

'&nbsp;' . $categories_count . '<br>' . TEXT_PRODUCTS . '&nbsp;' .

$products_count; ?></td>
<td align="right" class="smallText"><?php if

(sizeof($cPath_array) > 0) echo '<a href="' .

tep_href_link(FILENAME_CATEGORIES, $cPath_back . 'cID=' .

$current_category_id) . '">' . tep_image_button('button_back.gif',

IMAGE_BACK) . '</a>
&nbsp;'; if (!isset($HTTP_GET_VARS['search'])) echo '<a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath .

'&action=new_category') . '">' .
tep_image_button('button_new_category.gif',

IMAGE_NEW_CATEGORY) . '</a>&nbsp;
<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath .

'&action=new_product') . '">' .
tep_image_button('button_new_product.gif',

IMAGE_NEW_PRODUCT) . '</a>'; ?>

&nbsp;</td>
</tr>
</table></td>
</tr>
</table></td>
<?php
$heading = array();
$contents = array();
switch ($action) {
case 'new_category':
$heading[] = array('text' => '<b>' .
TEXT_INFO_HEADING_NEW_CATEGORY .

'</b>');

$contents = array('form' => tep_draw_form('newcategory',

FILENAME_CATEGORIES, 'action=insert_category&cPath=' . $cPath,
'post',

'enctype="multipart/form-data"'));
$contents[] = array('text' => TEXT_NEW_CATEGORY_INTRO);

$category_inputs_string = '';
$languages = tep_get_languages();
for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
$category_inputs_string .= '<br>' .

tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']');
}

$contents[] = array('text' => '<br>' . TEXT_CATEGORIES_NAME .

$category_inputs_string);

$contents[] = array('text' => '<br>' . TEXT_SORT_ORDER .
'<br>' .

tep_draw_input_field('sort_order', '', 'size="2"'));
$contents[] = array('align' => 'center', 'text' => '<br>' .

tep_image_submit('button_save.gif', IMAGE_SAVE) . ' <a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath) . '">' .

tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
break;
case 'edit_category':
$heading[] = array('text' => '<b>' .
TEXT_INFO_HEADING_EDIT_CATEGORY

.. '</b>');

$contents = array('form' => tep_draw_form('categories',

FILENAME_CATEGORIES, 'action=update_category&cPath=' . $cPath,
'post',

'enctype="multipart/form-data"') .
tep_draw_hidden_field('categories_id',

$cInfo->categories_id));
$contents[] = array('text' => TEXT_EDIT_INTRO);

$category_inputs_string = '';
$languages = tep_get_languages();
for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
$category_inputs_string .= '<br>' .

tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']',

tep_get_category_name($cInfo->categories_id, $languages[$i]['id']));
}

$contents[] = array('text' => '<br>' .
TEXT_EDIT_CATEGORIES_NAME .

$category_inputs_string);
$contents[] = array('text' => '<br>' . TEXT_EDIT_SORT_ORDER .
'<br>'

.. tep_draw_input_field('sort_order', $cInfo->sort_order, 'size="2"'));
$contents[] = array('align' => 'center', 'text' => '<br>' .

tep_image_submit('button_save.gif', IMAGE_SAVE) . ' <a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' .

$cInfo->categories_id) . '">' . tep_image_button('button_cancel.gif',

IMAGE_CANCEL) . '</a>');
break;
case 'delete_category':
$heading[] = array('text' => '<b>' .

TEXT_INFO_HEADING_DELETE_CATEGORY . '</b>');

$contents = array('form' => tep_draw_form('categories',

FILENAME_CATEGORIES, 'action=delete_category_confirm&cPath=' .
$cPath) .

tep_draw_hidden_field('categories_id', $cInfo->categories_id));
$contents[] = array('text' => TEXT_DELETE_CATEGORY_INTRO);
$contents[] = array('text' => '<br><b>' . $cInfo-
> categories_name .

'</b>');
if ($cInfo->childs_count > 0) $contents[] = array('text' =>
'<br>' .

sprintf(TEXT_DELETE_WARNING_CHILDS, $cInfo->childs_count));
if ($cInfo->products_count > 0) $contents[] = array('text' =>
'<br>'

.. sprintf(TEXT_DELETE_WARNING_PRODUCTS, $cInfo->products_count));
$contents[] = array('align' => 'center', 'text' => '<br>' .

tep_image_submit('button_delete.gif', IMAGE_DELETE) . ' <a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' .

$cInfo->categories_id) . '">' . tep_image_button('button_cancel.gif',

IMAGE_CANCEL) . '</a>');
break;
case 'move_category':
$heading[] = array('text' => '<b>' .
TEXT_INFO_HEADING_MOVE_CATEGORY

.. '</b>');

$contents = array('form' => tep_draw_form('categories',

FILENAME_CATEGORIES, 'action=move_category_confirm&cPath=' .
$cPath) .

tep_draw_hidden_field('categories_id', $cInfo->categories_id));
$contents[] = array('text' =>
sprintf(TEXT_MOVE_CATEGORIES_INTRO,

$cInfo->categories_name));
$contents[] = array('text' => '<br>' . sprintf(TEXT_MOVE,

$cInfo->categories_name) . '<br>' .

tep_draw_pull_down_menu('move_to_category_id',
tep_get_category_tree(),

$current_category_id));
$contents[] = array('align' => 'center', 'text' => '<br>' .

tep_image_submit('button_move.gif', IMAGE_MOVE) . ' <a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' .

$cInfo->categories_id) . '">' . tep_image_button('button_cancel.gif',

IMAGE_CANCEL) . '</a>');
break;
case 'delete_product':
$heading[] = array('text' => '<b>' .
TEXT_INFO_HEADING_DELETE_PRODUCT

.. '</b>');

$contents = array('form' => tep_draw_form('products',

FILENAME_CATEGORIES, 'action=delete_product_confirm&cPath=' .
$cPath) .

tep_draw_hidden_field('products_id', $pInfo->products_id));
$contents[] = array('text' => TEXT_DELETE_PRODUCT_INTRO);
$contents[] = array('text' => '<br><b>' . $pInfo-
> products_name .

'</b>');

$product_categories_string = '';
$product_categories = tep_generate_category_path($pInfo-
> products_id,

'product');
for ($i = 0, $n = sizeof($product_categories); $i < $n; $i++)
{
$category_path = '';
for ($j = 0, $k = sizeof($product_categories[$i]); $j < $k;
$j++) {
$category_path .= $product_categories[$i][$j]['text'] .

'&nbsp;&gt;&nbsp;';
}
$category_path = substr($category_path, 0, -16);
$product_categories_string .=

tep_draw_checkbox_field('product_categories[]',

$product_categories[$i][sizeof($product_categories[$i])-1]['id'],
true) .

'&nbsp;' . $category_path . '<br>';
}
$product_categories_string =
substr($product_categories_string, 0,

-4);

$contents[] = array('text' => '<br>' .
$product_categories_string);
$contents[] = array('align' => 'center', 'text' => '<br>' .

tep_image_submit('button_delete.gif', IMAGE_DELETE) . ' <a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' .

$pInfo->products_id) . '">' . tep_image_button('button_cancel.gif',

IMAGE_CANCEL) . '</a>');
break;
case 'move_product':
$heading[] = array('text' => '<b>' .
TEXT_INFO_HEADING_MOVE_PRODUCT .

'</b>');

$contents = array('form' => tep_draw_form('products',

FILENAME_CATEGORIES, 'action=move_product_confirm&cPath=' . $cPath) .

tep_draw_hidden_field('products_id', $pInfo->products_id));
$contents[] = array('text' =>
sprintf(TEXT_MOVE_PRODUCTS_INTRO,

$pInfo->products_name));
$contents[] = array('text' => '<br>' .
TEXT_INFO_CURRENT_CATEGORIES .

'<br><b>' . tep_output_generated_category_path($pInfo->products_id,

'product') . '</b>');
$contents[] = array('text' => '<br>' . sprintf(TEXT_MOVE,

$pInfo->products_name) . '<br>' .

tep_draw_pull_down_menu('move_to_category_id',
tep_get_category_tree(),

$current_category_id));
$contents[] = array('align' => 'center', 'text' => '<br>' .

tep_image_submit('button_move.gif', IMAGE_MOVE) . ' <a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' .

$pInfo->products_id) . '">' . tep_image_button('button_cancel.gif',

IMAGE_CANCEL) . '</a>');
break;
case 'copy_to':
$heading[] = array('text' => '<b>' .
TEXT_INFO_HEADING_COPY_TO .

'</b>');

$contents = array('form' => tep_draw_form('copy_to',

FILENAME_CATEGORIES, 'action=copy_to_confirm&cPath=' . $cPath) .

tep_draw_hidden_field('products_id', $pInfo->products_id));
$contents[] = array('text' => TEXT_INFO_COPY_TO_INTRO);
$contents[] = array('text' => '<br>' .
TEXT_INFO_CURRENT_CATEGORIES .

'<br><b>' . tep_output_generated_category_path($pInfo->products_id,

'product') . '</b>');
$contents[] = array('text' => '<br>' . TEXT_CATEGORIES .
'<br>' .

tep_draw_pull_down_menu('categories_id', tep_get_category_tree(),

$current_category_id));
$contents[] = array('text' => '<br>' . TEXT_HOW_TO_COPY .
'<br>' .

tep_draw_radio_field('copy_as', 'link', true) . ' ' .
TEXT_COPY_AS_LINK .

'<br>' . tep_draw_radio_field('copy_as', 'duplicate') . ' ' .

TEXT_COPY_AS_DUPLICATE);
$contents[] = array('align' => 'center', 'text' => '<br>' .

tep_image_submit('button_copy.gif', IMAGE_COPY) . ' <a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' .

$pInfo->products_id) . '">' . tep_image_button('button_cancel.gif',

IMAGE_CANCEL) . '</a>');
break;
default:
if ($rows > 0) {
if (isset($cInfo) && is_object($cInfo)) { // category info
box

contents
$heading[] = array('text' => '<b>' . $cInfo-
> categories_name .

'</b>');

$contents[] = array('align' => 'center', 'text' => '<a
href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' .

$cInfo->categories_id . '&action=edit_category') . '">' .

tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' .

$cInfo->categories_id . '&action=delete_category') . '">' .

tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a
href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' .

$cInfo->categories_id . '&action=move_category') . '">' .

tep_image_button('button_move.gif', IMAGE_MOVE) . '</a>');
$contents[] = array('text' => '<br>' .

tep_info_image($cInfo->categories_image, $cInfo->categories_name,

HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT) . '<br>' .

$cInfo->categories_image);
$contents[] = array('text' => '<br>' .
TEXT_SUBCATEGORIES . ' ' .

$cInfo->childs_count . '<br>' . TEXT_PRODUCTS . ' ' .

$cInfo->products_count);
} elseif (isset($pInfo) && is_object($pInfo)) { // product
info box

contents
$heading[] = array('text' => '<b>' .

tep_get_products_name($pInfo->products_id, $languages_id) . '</b>');

$contents[] = array('align' => 'center', 'text' => '<a
href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' .

$pInfo->products_id . '&action=new_product') . '">' .

tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' .

$pInfo->products_id . '&action=delete_product') . '">' .

tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a
href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' .

$pInfo->products_id . '&action=move_product') . '">' .

tep_image_button('button_move.gif', IMAGE_MOVE) . '</a> <a href="' .

tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' .

$pInfo->products_id . '&action=copy_to') . '">' .

tep_image_button('button_copy_to.gif', IMAGE_COPY_TO) . '</a>');

$contents[] = array('text' => '<br>' .

tep_info_image($pInfo->products_image, $pInfo->products_name,

SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '<br>' . $pInfo-
> products_image);
$contents[] = array('text' => '<br>' .
TEXT_PRODUCTS_PRICE_INFO .

' ' . $currencies->format($pInfo->products_price) . '<br>' .

TEXT_PRODUCTS_QUANTITY_INFO . ' ' . $pInfo->products_quantity);

}
} else { // create category/product info
$heading[] = array('text' => '<b>' . EMPTY_CATEGORY . '</
b>');

$contents[] = array('text' =>

TEXT_NO_CHILD_CATEGORIES_OR_PRODUCTS);
}
break;
}

if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {
echo ' <td width="25%" valign="top">' . "\n";

$box = new box;
echo $box->infoBox($heading, $contents);

echo ' </td>' . "\n";
}
?>
</tr>
</table></td>
</tr>
</table>
<?php
}
?>


<!-- body_text_eof //-->
</td></tr>
</table>

<table border="0" width="100%" cellspacing="0" cellpadding="5">
<tr>
<td class="main">
<hr><b>INSTRUCTIONS:</B><br>
<font color=#ff0033><B>If this is your first time here, make sure you
click

on ALL the links on the left, including the Configuration links to

familiarize yourself
with your new store. Each page has INSTRUCTIONS at the foot of each
page.

Please read instructions carefully. You may change any settings to

suit.</b></font><p>

<b>Adding a New Product</b><br>
Firstly you must <b>upload the ZIP folder containing your product</b>
to the

<b>download</b> folder on your web server. <br>
It MUST be a zip folder. Also, make sure there are no spaces in your

filename. i.e. if it is two words, use an underscore. e.g.
your_file.zip<br>
Files can be uploaded using an FTP Programme or by using your File
Manager

feature in your web server control panel.<P>


To create a new product page for your new product, click on the FOLDER
of the

category that you want your product to appear in.<BR>
Once INSIDE the category, click on <B>New Product</B>. Input your
product

details, such as name, description, price, etc. and follow the
onscreen

intructions.<p>
After that, you will need to <B>SET your download file</B>. To do
this, click

on <b>My Catalogue</b> then click on <b>Set Download Files</b> and
follow the

instructions.<br>
Your product is then added to your Store.<p>
<b>Copying a Product to Multiple Categories</b> <br>
Sometimes you may want your product to appear in several
categories.<br>
To do this, select your product from the list and click on <b>Copy To</
b>.

<br>
Select a category to copy to from the drop box, then click on

<b>Copy</b>.<br>
(make sure it is selected as Link Product.)<p>
<b>Adding a New Category</b><br>
Click on <b>New Category</b>. Input your category name and then click
on

<b>Save</b>.


</td></tr></table>

<!-- body_eof //-->

<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
<br>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
Re: Unable to connect to database server! [message #172083 is a reply to message #172081] Sun, 30 January 2011 14:00 Go to previous messageGo to next message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
On 1/30/2011 6:43 AM, netsurfer802 wrote:
> I AM POSTING SOME OF THIS IN ALL CAPS TO HAVE WHAT I'M WRITING
> PERSONALLY IN
>

A perfect way to get people to stop reading after the first line, as I'm
sure many have.

> THIS POST FROM WHAT I'M COPYING (EXAMPLE FOR CONTENTS ON MY WEB HOST
> AS WELL AS THE INSTRUCTIONS I WAS GIVEN TO HAVE PHP FILES WORK WITH
> MY MYSQL DATABASE.)

Where did you get those instructions?

> I KEEP GETTING THE ERROR "UNABLE TO CONNECT TO DATABASE SERVER!"
> WHENEVER I
>

Which generally means either MySQL is not running and/or your connection
information (host, userid, password) are incorrect.

> GO TO MY HOMEPAGE WHICH IS WORKING OFF THE /HTDOCS/ADMIN/
> CATEGORIES.PHP FILE.
>

Location of your home page is immaterial.

> WHY? WHAT CAN I DO TO CORRECT THIS? THE INSTRUCTIONS SAY TO GO TO
> THE /ADMIN FOLDER OF MY WEBHOST AND THEN TO CLICK ON THE LINK TO
> LOG IN WHICH AUTOMATICALLY "CALLS UP" THE
> /HTDOCS/ADMIN/CATEGORIES.PHP FILE THAT I KEEP GETTING THE ERROR WITH.
> FIRST I'LL INCLUDE THE INSTRUCTIONS THAT I WAS GIVEN AND HAD FOLLOWED
> TO THE BEST THAT I KNEW TO...AND THEN I'LL PASTE ALL THE CODE IN THE
> FOLLOWING FILES:
>
> /htdocs/includes/configure.php
> /htdocs/admin/includes/configure.php
> /htdocs/admin/categories.php
>
> PLEASE ADVISE ON WHAT I CAN DO TO BYPASS GETTING THIS ERROR EVERY
> TIME.
>

Start by learning how to use the Shift key.

> PLEASE FIRST READ BELOW. IF YOU CAN'T SEE ALSO WHY I MIGHT BE GETTING
> THIS ERROR AND YOU NEED MORE INFORMATION PLEASE DON'T HESITATE TO ASK
> WHAT YOU NEED TO KNOW...
>

<about 2500 lines snipped>

I'm not going to wade through all that code. The instructions seem to
be clear enough, although they are geared towards your specific lab
installation (as these usually are).

Did you check to ensure the MySQL connection parameters are correct?
What have you done to try to isolate your problem? Did you ask your
instructor what you might have done wrong (or missed)?

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
Re: Unable to connect to database server! [message #172094 is a reply to message #172083] Sun, 30 January 2011 19:26 Go to previous messageGo to next message
P E Schoen is currently offline  P E Schoen
Messages: 86
Registered: January 2011
Karma: 0
Member
"Jerry Stuckle" wrote in message
news:ii3qun$ml5$1(at)news(dot)eternal-september(dot)org...

> On 1/30/2011 6:43 AM, netsurfer802 wrote:
>> I AM POSTING SOME OF THIS IN ALL CAPS TO HAVE WHAT I'M
>> WRITING PERSONALLY IN

> A perfect way to get people to stop reading after the first line,
> as I'm sure many have.

So did I. I don't like being shouted at, and I only looked at your reply to
see if it might apply to the problems I have had. I am a newbie to server
side scripting, but I have been able to get both my Perl script and my PHP
script to work on the localhost as well as on my remote server (Dreamhost).

I would suggest to the OP that s/he check some of my posts here and in
comp.lang.perl.misc to see what I have done since I first started learning
in September. And it's also a good idea to have a simple test script to make
sure things are working.

Paul
Re: Unable to connect to database server! [message #172095 is a reply to message #172081] Sun, 30 January 2011 19:38 Go to previous messageGo to next message
richard is currently offline  richard   
Messages: 213
Registered: June 2013
Karma: 0
Senior Member
On Sun, 30 Jan 2011 03:43:35 -0800 (PST), netsurfer802 wrote:

> I AM POSTING SOME OF THIS IN ALL CAPS TO HAVE WHAT I'M WRITING
> PERSONALLY IN
>
> THIS POST FROM WHAT I'M COPYING (EXAMPLE FOR CONTENTS ON MY WEB HOST
> AS WELL
>
> AS THE INSTRUCTIONS I WAS GIVEN TO HAVE PHP FILES WORK WITH MY MYSQL
>
> DATABASE.)
> I KEEP GETTING THE ERROR "UNABLE TO CONNECT TO DATABASE SERVER!"
> WHENEVER I
>
> GO TO MY HOMEPAGE WHICH IS WORKING OFF THE /HTDOCS/ADMIN/
> CATEGORIES.PHP FILE.
>
> WHY? WHAT CAN I DO TO CORRECT THIS? THE INSTRUCTIONS SAY TO GO TO
> THE
>
> /ADMIN FOLDER OF MY WEBHOST AND THEN TO CLICK ON THE LINK TO LOG IN
> WHICH
>
> AUTOMATICALLY "CALLS UP" THE /HTDOCS/ADMIN/CATEGORIES.PHP FILE THAT I
> KEEP
>
> GETTING THE ERROR WITH. FIRST I'LL INCLUDE THE INSTRUCTIONS THAT I
> WAS GIVEN
>
> AND HAD FOLLOWED TO THE BEST THAT I KNEW TO...AND THEN I'LL PASTE ALL
> THE
>

First, you need to setup an mysql database on the server itself.
It usually takes the form of database_name, userID, password.
Database_name is generally the same as the FTP account.
You should ask your host if they even PHP to begin with, then, how to setup
the mysql information.
Once you've done that, you should not have a problem with the script.
Re: Unable to connect to database server! [message #172097 is a reply to message #172095] Sun, 30 January 2011 19:49 Go to previous messageGo to next message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
On 1/30/2011 2:38 PM, richard wrote:
> On Sun, 30 Jan 2011 03:43:35 -0800 (PST), netsurfer802 wrote:
>
>> I AM POSTING SOME OF THIS IN ALL CAPS TO HAVE WHAT I'M WRITING
>> PERSONALLY IN
>>
>> THIS POST FROM WHAT I'M COPYING (EXAMPLE FOR CONTENTS ON MY WEB HOST
>> AS WELL
>>
>> AS THE INSTRUCTIONS I WAS GIVEN TO HAVE PHP FILES WORK WITH MY MYSQL
>>
>> DATABASE.)
>> I KEEP GETTING THE ERROR "UNABLE TO CONNECT TO DATABASE SERVER!"
>> WHENEVER I
>>
>> GO TO MY HOMEPAGE WHICH IS WORKING OFF THE /HTDOCS/ADMIN/
>> CATEGORIES.PHP FILE.
>>
>> WHY? WHAT CAN I DO TO CORRECT THIS? THE INSTRUCTIONS SAY TO GO TO
>> THE
>>
>> /ADMIN FOLDER OF MY WEBHOST AND THEN TO CLICK ON THE LINK TO LOG IN
>> WHICH
>>
>> AUTOMATICALLY "CALLS UP" THE /HTDOCS/ADMIN/CATEGORIES.PHP FILE THAT I
>> KEEP
>>
>> GETTING THE ERROR WITH. FIRST I'LL INCLUDE THE INSTRUCTIONS THAT I
>> WAS GIVEN
>>
>> AND HAD FOLLOWED TO THE BEST THAT I KNEW TO...AND THEN I'LL PASTE ALL
>> THE
>>
>
> First, you need to setup an mysql database on the server itself.
> It usually takes the form of database_name, userID, password.
> Database_name is generally the same as the FTP account.

Incorrect. I have many databases on my servers, and none of them are
the same as the ftp account names.

> You should ask your host if they even PHP to begin with, then, how to setup
> the mysql information.
> Once you've done that, you should not have a problem with the script.

They definitely have PHP - or he would have numerous other errors.
Additionally, this is obviously for a course in PHP - not much sense
having a PHP course with no PHP!

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
Re: Unable to connect to database server! [message #172100 is a reply to message #172095] Sun, 30 January 2011 20:03 Go to previous messageGo to next message
Evan Platt is currently offline  Evan Platt
Messages: 124
Registered: November 2010
Karma: 0
Senior Member
On Sun, 30 Jan 2011 12:38:46 -0700, richard <member(at)newsguy(dot)com>
wrote:

> Database_name is generally the same as the FTP account.

WTF??

Have you ever given correct information?
--
To reply via e-mail, remove The Obvious and .invalid from my e-mail address.
Re: Unable to connect to database server! [message #172105 is a reply to message #172100] Sun, 30 January 2011 22:15 Go to previous messageGo to next message
Sherm Pendley is currently offline  Sherm Pendley
Messages: 33
Registered: September 2010
Karma: 0
Member
Evan Platt <evan(at)theobvious(dot)espphotography(dot)com> writes:

> On Sun, 30 Jan 2011 12:38:46 -0700, richard <member(at)newsguy(dot)com>
> wrote:
>
>> Database_name is generally the same as the FTP account.
>
> WTF??
>
> Have you ever given correct information?

No, he hasn't.

He's not known as "Richard the Stupid" for nothing, ya know... :-)

sherm--

--
Sherm Pendley
<http://camelbones.sourceforge.net>
Cocoa Developer
Re: Unable to connect to database server! [message #172109 is a reply to message #172105] Sun, 30 January 2011 22:26 Go to previous messageGo to next message
richard is currently offline  richard   
Messages: 213
Registered: June 2013
Karma: 0
Senior Member
On Sun, 30 Jan 2011 17:15:36 -0500, Sherm Pendley wrote:

> Evan Platt <evan(at)theobvious(dot)espphotography(dot)com> writes:
>
>> On Sun, 30 Jan 2011 12:38:46 -0700, richard <member(at)newsguy(dot)com>
>> wrote:
>>
>>> Database_name is generally the same as the FTP account.
>>
>> WTF??
>>
>> Have you ever given correct information?
>
> No, he hasn't.
>
> He's not known as "Richard the Stupid" for nothing, ya know... :-)
>
> sherm--

Excuse me gents, but I do have the experience to back up my claims.
When I need to set up a database, which I have done, the first part of the
database name is always the same as the ftp account.

Assume the ftp account is named "hello". You want a db name of "world".
The database name then becomes "hello_world".
Another one might be like "hello_goodbye".
That is how it is setup on my server.
Then, I have to create a user and password for both.
Not to mention a little fine tuning in the ODBC.
Re: Unable to connect to database server! [message #172110 is a reply to message #172109] Sun, 30 January 2011 22:53 Go to previous messageGo to next message
Beauregard T. Shagnas is currently offline  Beauregard T. Shagnas
Messages: 154
Registered: September 2010
Karma: 0
Senior Member
richard the sto0pid wrote:

> Sherm Pendley wrote:
>> Evan Platt writes:
>>> richard the sto0pid wrote:
>>>> Database_name is generally the same as the FTP account.
>>>
>>> WTF??
>>>
>>> Have you ever given correct information?
>>
>> No, he hasn't.
>>
>> He's not known as "Richard the Stupid" for nothing, ya know... :-)
>
> Excuse me gents, but I do have the experience to back up my claims.

<splorf!>

> When I need to set up a database, which I have done,

What DBMS did you use?

> the first part of the database name is always the same as the ftp
> account.

What does a database have to do with an FTP account? Apples and
violins.

> Assume the ftp account is named "hello". You want a db name of "world".
> The database name then becomes "hello_world".
> Another one might be like "hello_goodbye".

That's very funny!

> That is how it is setup on my server.

You don't have a server. You have an expensive stand-alone Windows IIS
web host that the colo company had to set up for you.

> Then, I have to create a user and password for both.
> Not to mention a little fine tuning in the ODBC.

But of course.

--
-bts
-In a broadband world, you are just a dialup
Re: Unable to connect to database server! [message #172111 is a reply to message #172109] Mon, 31 January 2011 00:01 Go to previous messageGo to next message
Evan Platt is currently offline  Evan Platt
Messages: 124
Registered: November 2010
Karma: 0
Senior Member
On Sun, 30 Jan 2011 15:26:55 -0700, richard <member(at)newsguy(dot)com>
wrote:

> On Sun, 30 Jan 2011 17:15:36 -0500, Sherm Pendley wrote:
>
>> Evan Platt <evan(at)theobvious(dot)espphotography(dot)com> writes:
>>
>>> On Sun, 30 Jan 2011 12:38:46 -0700, richard <member(at)newsguy(dot)com>
>>> wrote:
>>>
>>>> Database_name is generally the same as the FTP account.
>>>
>>> WTF??
>>>
>>> Have you ever given correct information?
>>
>> No, he hasn't.
>>
>> He's not known as "Richard the Stupid" for nothing, ya know... :-)
>>
>> sherm--
>
> Excuse me gents, but I do have the experience to back up my claims.

No, you don't.

> When I need to set up a database,

"Set up a database?" lol

> which I have done,

Umm, no, you haven't.

> the first part of the database name is always the same as the ftp account.

And that has what to do with anything?

Just because YOU have done it, doesn't equate to your claim of
"Database_name is generally the same as the FTP account."

I fill up my car when it gets to a quarter tank. By your logic, I can
say "People generally fill up their car when it gets to a quarter
tank."?

> Assume the ftp account is named "hello".

"account"? Do you mean username?

> You want a db name of "world". The database name then becomes "hello_world".
> Another one might be like "hello_goodbye".
> That is how it is setup on my server.

You have a colo server. Running Windows, none the less, because you
can't handle anything without a pretty GUI.

> Then, I have to create a user and password for both.
> Not to mention a little fine tuning in the ODBC.

Quit trying to talk like you know what you're talking about. We all
know you don't.
--
To reply via e-mail, remove The Obvious and .invalid from my e-mail address.
Re: Unable to connect to database server! [message #172133 is a reply to message #172094] Mon, 31 January 2011 13:10 Go to previous messageGo to next message
sheldonlg is currently offline  sheldonlg
Messages: 166
Registered: September 2010
Karma: 0
Senior Member
On 1/30/2011 2:26 PM, P E Schoen wrote:
> "Jerry Stuckle" wrote in message
> news:ii3qun$ml5$1(at)news(dot)eternal-september(dot)org...
>
>> On 1/30/2011 6:43 AM, netsurfer802 wrote:
>>> I AM POSTING SOME OF THIS IN ALL CAPS TO HAVE WHAT I'M
>>> WRITING PERSONALLY IN
>
>> A perfect way to get people to stop reading after the first line,
>> as I'm sure many have.
>
> So did I. I don't like being shouted at, and I only looked at your reply
> to see if it might apply to the problems I have had. I am a newbie to
> server side scripting, but I have been able to get both my Perl script
> and my PHP script to work on the localhost as well as on my remote
> server (Dreamhost).
>
> I would suggest to the OP that s/he check some of my posts here and in
> comp.lang.perl.misc to see what I have done since I first started
> learning in September. And it's also a good idea to have a simple test
> script to make sure things are working.
>
> Paul

More than that, it makes perfect common sense that when you are looking
for help, to do every the aid the ones you seek help from and to do
nothing to piss them off.

I, too, stopped reading after Jerry's first comment. It was too
difficult to read the all-caps. That is why stories in the books and
newspapers use something called "lower case".

Way back when, when I programmed in Fortran, I did it in all caps.
Then, when I became a professional programmer, someone told me it would
be easier to read my own code if I used lower case. They were right.
(This was before the use of camel caps became conventional).


--
Shelly
Re: Unable to connect to database server! [message #172139 is a reply to message #172109] Mon, 31 January 2011 16:43 Go to previous message
sheldonlg is currently offline  sheldonlg
Messages: 166
Registered: September 2010
Karma: 0
Senior Member
On 1/30/2011 5:26 PM, richard wrote:
> On Sun, 30 Jan 2011 17:15:36 -0500, Sherm Pendley wrote:
>
>> Evan Platt<evan(at)theobvious(dot)espphotography(dot)com> writes:
>>
>>> On Sun, 30 Jan 2011 12:38:46 -0700, richard<member(at)newsguy(dot)com>
>>> wrote:
>>>
>>>> Database_name is generally the same as the FTP account.
>>>
>>> WTF??
>>>
>>> Have you ever given correct information?
>>
>> No, he hasn't.
>>
>> He's not known as "Richard the Stupid" for nothing, ya know... :-)
>>
>> sherm--
>
> Excuse me gents, but I do have the experience to back up my claims.
> When I need to set up a database, which I have done, the first part of the
> database name is always the same as the ftp account.
>
> Assume the ftp account is named "hello". You want a db name of "world".
> The database name then becomes "hello_world".
> Another one might be like "hello_goodbye".
> That is how it is setup on my server.
> Then, I have to create a user and password for both.
> Not to mention a little fine tuning in the ODBC.

That is the general practice on many shared hosting services. It is
neither required, not universal on shared hosting, and absolutely not
the common practice on private hosting.

--
Shelly
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Heredoc print to file? Use nowdoc.
Next Topic: Only SPAM!!!
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Mon Nov 25 23:49:02 GMT 2024

Total time taken to generate the page: 0.02457 seconds