Help Shop-Script модификации

CH-Web
На сайте с 12.02.2009
Offline
66
1119

Доброе время суток и всех с праздниками.

Решил немного усовершенствовать админку Shop-Script 1.26

А именно сделать возможным изменять названия товаров прям из списка таблицы товаров.

Начинаем делать.

1. Меняем поле название товара с

<a href="javascript:open_window('products.php?productID={$products.productID}',795,500);">{$products.name}</a>&nbsp;

на

<input name="name" value={$products.name}>

А далее ступор. Нужно как-то сохранять изменение в поле названия.

Есть кнопка для сохранение изменений цен

{if $products}

<input type=submit value="{$smarty.const.SAVE_BUTTON}"
name="products_update">
{/if}

Нашел описание действий products_update

В папке includes > admin > sub > catalog_products_categories.php

else if (isset($_POST["products_update"])) 

{
if (CONF_BACKEND_SAFEMODE) //this action is forbidden when SAFE MODE is ON
{
Redirect( _getUrlToSubmit()."&safemode=yes" );
}

//save changes in current category
$data = ScanPostVariableWithId( array( "price", "enable", "left", "sort_order" ) );

foreach( $data as $key => $val )
{
if ( isset($val["price"]) )
{
$temp = $val["price"];
$temp = round($temp*100)/100;
db_query( "UPDATE ".PRODUCTS_TABLE." SET Price='$temp' ".
" WHERE productID=".$key );
}

if ( isset($val["enable"]) )
{
db_query( "update ".PRODUCTS_TABLE.
" set enabled=".$val["enable"]." ".
" WHERE productID=".$key );
}

if ( isset($val["left"]) )
{
db_query( "UPDATE ".PRODUCTS_TABLE.
" SET in_stock = '".$val["left"]."' WHERE productID=".$key);
}

if ( isset($val["sort_order"]) )
{
db_query( "UPDATE ".PRODUCTS_TABLE.
" SET sort_order = '".$val["sort_order"]."' WHERE productID=".$key);
}
}

if ( CONF_UPDATE_GCV == '1' )
update_products_Count_Value_For_Categories(1);

Redirect( _getUrlToSubmit() );
}

А вот как в эту кнопку вставить чтобы он ещё и изменение названий сохранял, понять не могу.

Пробовал добавить

	if ( isset($val["name"]) )

{
$temp = $val["name"];
db_query( "UPDATE ".PRODUCTS_TABLE." SET name='$temp' ".
" WHERE productID=".$key );
}

И ещё пару похожих схем. Не помогает.

Господа форумчане, помогите кто чем может. :)

S0
На сайте с 20.11.2010
Offline
32
#1

А сюда:

$data = ScanPostVariableWithId( array( "price", "enable", "left", "sort_order" ) );

"name" дорбавлен был в массив?

CH-Web
На сайте с 12.02.2009
Offline
66
#2

Ну естественно, это первое что я пробовал. И там она должна по любому стоять. Но что писать в if ( isset($val["name"]) )

S0
На сайте с 20.11.2010
Offline
32
#3


$data = ScanPostVariableWithId( array( "price", "enable", "left", "sort_order", "name" ) );

foreach( $data as $key => $val )
{
...
if ( isset($val["name"]) )
{
db_query( "UPDATE ".PRODUCTS_TABLE.
" SET name = '".$val["name"]."' WHERE productID=".$key);
}

вот в последнем SET я не уверен что поле именно name называется. Но в принципе, если сработает, то должно ругнуться. Еще можно на момент отладки туда (прям перед query) впихнуть echo $val["name"]; - если выведет, значит сработало, если нет - копать дальше.

CH-Web
На сайте с 12.02.2009
Offline
66
#4

Не сработало.

Ошибка:

Unknown column 'Товар 1' in 'where clause' SQL query : UPDATE SS_products SET name = 'Товар 1' WHERE productID=Товар 1
S0
На сайте с 20.11.2010
Offline
32
#5

Кхм. А если попробовать назвать поле не name, а по-другому, хотябы pname. (и в генерации HTML тоже не забыть поменять).

CH-Web
На сайте с 12.02.2009
Offline
66
#6

Это как? На сколько я понимаю в этой строке $data = ScanPostVariableWithId( array( "price", "enable", "left", "sort_order" ) );

нужно дописывать новое действие if ( isset($val["name"]) ) согластно его названию

Так получается

	else if (isset($_POST["products_update"])) 

{
if (CONF_BACKEND_SAFEMODE) //this action is forbidden when SAFE MODE is ON
{
Redirect( _getUrlToSubmit()."&safemode=yes" );
}

//save changes in current category
$data = ScanPostVariableWithId( array( "price", "name", "enable", "left", "sort_order" ) );

foreach( $data as $key => $val )
{
if ( isset($val["price"]) )
{
$temp = $val["price"];
$temp = round($temp*100)/100;
db_query( "UPDATE ".PRODUCTS_TABLE." SET Price='$temp' ".
" WHERE productID=".$key );
}

if ( isset($val["name"]) )
{
db_query( "UPDATE ".PRODUCTS_TABLE.
" SET name = '".$val["name"]."' WHERE productID=".$key);
}

if ( isset($val["enable"]) )
{
db_query( "update ".PRODUCTS_TABLE.
" set enabled=".$val["enable"]." ".
" WHERE productID=".$key );
}

if ( isset($val["left"]) )
{
db_query( "UPDATE ".PRODUCTS_TABLE.
" SET in_stock = '".$val["left"]."' WHERE productID=".$key);
}

if ( isset($val["sort_order"]) )
{
db_query( "UPDATE ".PRODUCTS_TABLE.
" SET sort_order = '".$val["sort_order"]."' WHERE productID=".$key);
}
}

if ( CONF_UPDATE_GCV == '1' )
update_products_Count_Value_For_Categories(1);

Redirect( _getUrlToSubmit() );
}

Но так не работает.

нашел ещё вот какую строчку на странице products.php

$p = db_query("SELECT productID, name FROM ".PRODUCTS_TABLE." WHERE productID=$r[0]") or die (db_error());

Там вообще-то есть рабочая кнопка, но с другой структурой. Т.к. эта непосредственно правильная страница редактирования товара.

<input type="submit" name="save_product" value="<?php echo SAVE_BUTTON;?>" width=5>

Но у меня из неё чего сделать не получилось.

Вот описание значения save_product

// save product

if ( isset($_POST["save_product"]) )
{
if ( $_GET["productID"] == 0 )
{
$productID = AddProduct(
$_POST["categoryID"], $_POST["name"], $_POST["price"], $_POST["description"],
$_POST["in_stock"],
$_POST["brief_description"], $_POST["list_price"],
$_POST["product_code"], $_POST["sort_order"],
isset($_POST["ProductIsProgram"]), "eproduct_filename",
$_POST["eproduct_available_days"],
$_POST["eproduct_download_times"],
$_POST["weight"], $_POST["meta_description"],
$_POST["meta_keywords"],
$_POST["is_preorder"], $_POST["preorder_date"],
isset($_POST["free_shipping"]),
$_POST["min_order_amount"], $_POST["shipping_freight"],
$_POST["tax_class"],intval($_POST['item_new']) );
$_GET["productID"] = $productID;
$updatedValues = ScanPostVariableWithId( array( "option_value", "option_radio_type" ) );
cfgUpdateOptionValue($productID, $updatedValues);





}
else
{
UpdateProduct( $productID,
$_POST["categoryID"], $_POST["name"], $_POST["price"], $_POST["description"],
$_POST["in_stock"], $_POST["rating"],
$_POST["brief_description"], $_POST["list_price"],
$_POST["product_code"], $_POST["sort_order"],
isset($_POST["ProductIsProgram"]), "eproduct_filename",
$_POST["eproduct_available_days"],
$_POST["eproduct_download_times"],
$_POST["weight"], $_POST["meta_description"],
$_POST["meta_keywords"],
$_POST["is_preorder"], $_POST["preorder_date"],
isset($_POST["free_shipping"]),
$_POST["min_order_amount"], $_POST["shipping_freight"],
$_POST["tax_class"],intval($_POST['item_new']),intval($_POST['new_item_old']) );
$updatedValues = ScanPostVariableWithId( array( "option_value", "option_radio_type" ) );
cfgUpdateOptionValue($productID, $updatedValues);




}

if ( CONF_UPDATE_GCV == '1' )
update_products_Count_Value_For_Categories(1);



ReLoadOpener();

if ( $_POST["save_product_without_closing"]=="0" )
CloseWindow();
}

// save pictures

CH-Web добавил 07.01.2011 в 14:13

Господа может кто знает как правильно в базу эти изменения отправлять?

CH-Web добавил 07.01.2011 в 16:40

Ребята ну может подскажет кто?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий