ショッピングカート数量全角入力の方法について

困った時はこちらで質問してください。回答を担当する人は特に決まっていませんので、分かる方は回答をお願いします。
アバター
new39
記事: 1
登録日時: 2007/7/10 18:39

ショッピングカート数量全角入力の方法について

投稿記事by new39 » 2007/8/06 15:27

Zenカートでショップを構築する日々の中。
商品をカートに入れるで数量入力時に全角を入力すると正しく動作しません。
商品からカートに入れる際の修正は成功したのですが、カートの中身では商品数を全角入力で変更すると商品が削除されます。この数量がどこでコントロールされているかご存知の方、ご教授宜しくお願いします。
アバター
よしとも

投稿記事by よしとも » 2007/9/17 13:51

こんにちは。
だいぶ投稿から時間が経っているようですが、わたしも先ほどまで同じところではまっていたので、これから先どなたかのお役に立てばと思い、レスさせていただきます。

/index.php?main_page=shopping_cart
で入力された数量は、更新ボタンをクリックすると
/includes/classes/shopping_cart.php
のfunction actionUpdateProduct
で処理されるようです。

/includes/classes/shopping_cart.php
1483行目付近からを下記のように変更しました。
-------------------------
function actionUpdateProduct($goto, $parameters) {
global $messageStack;

for ($i=0, $n=sizeof($_POST['products_id']); $i<$n; $i++) {
/////全角(英)数字を半角に変換
$mbQuantity = $_POST['cart_quantity'][$i];
$mbQuantity = mb_convert_kana($mbQuantity,"a");
$adjust_max= 'false';
//if ( in_array($_POST['products_id'][$i], (is_array($_POST['cart_delete']) ? $_POST['cart_delete'] : array())) or $_POST['cart_quantity'][$i]==0) {
if ( in_array($_POST['products_id'][$i], (is_array($_POST['cart_delete']) ? $_POST['cart_delete'] : array())) or $mbQuantity==0) {
$this->remove($_POST['products_id'][$i]);
} else {
$add_max = zen_get_products_quantity_order_max($_POST['products_id'][$i]);
$cart_qty = $this->in_cart_mixed($_POST['products_id']);
//$new_qty = $_POST['cart_quantity'][$i];
$new_qty = $mbQuantity;
-------------------------

で、どうでしょう?

--------------------------------------------------
スタジオサイラス
http://sirrus.jp
アバター
よしとも

投稿記事by よしとも » 2007/9/17 13:59

こんにちは。
だいぶ投稿から時間が経っているようですが、わたしも先ほどまで同じところではまっていたので、これから先どなたかのお役に立てばと思い、レスさせていただきます。

/index.php?main_page=shopping_cart
で入力された数量は、更新ボタンをクリックすると
/includes/classes/shopping_cart.php
のfunction actionUpdateProduct
で処理されるようです。

/includes/classes/shopping_cart.php
1483行目付近からを下記のように変更しました。
-------------------------
function actionUpdateProduct($goto, $parameters) {
global $messageStack;

for ($i=0, $n=sizeof($_POST['products_id']); $i<$n; $i++) {
/////全角(英)数字を半角に変換
$mbQuantity = $_POST['cart_quantity'][$i];
$mbQuantity = mb_convert_kana($mbQuantity,"a");
$adjust_max= 'false';
//if ( in_array($_POST['products_id'][$i], (is_array($_POST['cart_delete']) ? $_POST['cart_delete'] : array())) or $_POST['cart_quantity'][$i]==0) {
if ( in_array($_POST['products_id'][$i], (is_array($_POST['cart_delete']) ? $_POST['cart_delete'] : array())) or $mbQuantity==0) {
$this->remove($_POST['products_id'][$i]);
} else {
$add_max = zen_get_products_quantity_order_max($_POST['products_id'][$i]);
$cart_qty = $this->in_cart_mixed($_POST['products_id']);
//$new_qty = $_POST['cart_quantity'][$i];
$new_qty = $mbQuantity;
-------------------------

で、どうでしょう?

--------------------------------------------------
スタジオサイラス
http://sirrus.jp

“Zen Cart 質問コーナー” へ戻る