バージョン選択

フォーラム

メニュー

オンライン状況

131 人のユーザが現在オンラインです。 (124 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 131
もっと...

サイト内検索

質問 > その他 > チェックボックスのデータ引継ぎ

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ecbg
投稿日時: 2009/10/20 18:02
対応状況: −−−
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
Re: チェックボックスのデータ引継ぎ
この問題はそもそもtplファイルだけじゃ解決しないですよ。

tplでinputした値を対応するphpに渡して、最終的にはDBに保存しないといけませんので。

DBに保存した後も、管理画面の顧客管理から呼び出すようにphpを修正し、更にMYページの登録内容変更でも変更できるように修正したりと、既存項目を真似ればできるのでそれほど難しくはないですが修正箇所はtplからphpまでかなりのファイルになると思います。
pineray
投稿日時: 2009/10/20 18:13
対応状況: −−−
長老
登録日: 2006/9/9
居住地: 伊賀
投稿: 292
Re: チェックボックスのデータ引継ぎ
取得文字列を変換する部分のコードが、配列を考慮に入れていないため起こるエラーですね。
該当の個所を以下のように変更してみてはいかがでしょうか?
//---- 取得文字列の変換
function lfConvertParam($array, $arrRegistColumn) {
    /*
     *	文字列の変換
     *	K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
     *	C :  「全角ひら仮名」を「全角かた仮名」に変換
     *	V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
     *	n :  「全角」数字を「半角(ハンカク)」に変換
     *  a :  全角英数字を半角英数字に変換する
     */
    // カラム名とコンバート情報
    foreach ($arrRegistColumn as $data) {
        $arrConvList[ $data["column"] ] = $data["convert"];
    }
    // 文字変換
    foreach ($arrConvList as $key => $val) {
        // POSTされてきた値のみ変換する。
        if(isset($array[$key]) && strlen($array[$key]) > 0) {
          if(!is_array($array[$key])) {
            $array[$key] = mb_convert_kana($array[$key] ,$val);
          } else {
            foreach ($array[$key] as $key2 => $val2) {
              $array[$key][$key2] = mb_convert_kana($array[$key][$key2] ,$val);
            }
          }
        }
    }
    return $array;
}

ただ、上記の変更を行ってエラーを回避したとしても、今度はDBに登録する段階でシリアライズしなくてはならなかったり、他にもいろいろと変更する箇所が生じてくるでしょう。


----------------
EC-CUBEのプラグインを公開しています!
いつも reCAPTCHA

it3
投稿日時: 2009/10/20 18:15
対応状況: −−−
一人前
登録日: 2009/3/16
居住地:
投稿: 94
Re: チェックボックスのデータ引継ぎ
引用:

ecbgさんは書きました:
この問題はそもそもtplファイルだけじゃ解決しないですよ。

tplでinputした値を対応するphpに渡して、最終的にはDBに保存しないといけませんので。

DBに保存した後も、管理画面の顧客管理から呼び出すようにphpを修正し、更にMYページの登録内容変更でも変更できるように修正したりと、既存項目を真似ればできるのでそれほど難しくはないですが修正箇所はtplからphpまでかなりのファイルになると思います。


ecbgさん、ご助言ありがとうございます。
本当は、そこまでした方が良いかと思いましたが、自分が
そこまでのスキルにあまり自信が無かったので、やりたい事
を絞って、やりたい個所だけの修正だと何とかなるかなと挑戦しています。

今回行いたいのが、会員登録時のみ入力で、
その後、顧客管理からの呼び出し(検索などで)は行わず、
MYページでも内容変更は行う程まではしない、
シンプルなものと考えています。
なので、データもCSVでの吐き出しを考えています。
顧客DBへの登録とCSVでの吐き出しは、
ラジオボックスのテストでは出来ました。。。

なので、チェックボックスでうまく動ければ・・・。
と考えていますが、甘いでしょうか。。。^^;






ecbg
投稿日時: 2009/10/20 18:23
対応状況: −−−
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
Re: チェックボックスのデータ引継ぎ
確かにラジオボックスでDBへの登録とCSV出力ができているのであれば、それの応用でそこまで難しい話だとは思いませんね。

ただやはりtplで格納したデータが配列になったり、変動的に複数になっているので、php側においてPOSTなりで値を受け取る際やDBに格納する際も、それらを考慮して設計しないとなかなか難しいと思いますよ。

なのでテンプレート側でダンプするだけではなくて、php側でPOSTした値がどのような状態になっているかをダンプして確認した方が良いかと思います。
tao_s
投稿日時: 2009/10/21 1:47
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 799
Re: チェックボックスのデータ引継ぎ
管理画面の検索部分や、データ登録フォームで似た様な処理を行っている部分があるので、そこを参考にすれば良いと思います。


----------------
EC-CUBEカスタマイズ相談してください。
緊急のEC-CUBEの障害対応
EC-CUBEカスタマイズブログ

it3
投稿日時: 2009/10/21 16:33
対応状況: 解決済
一人前
登録日: 2009/3/16
居住地:
投稿: 94
Re: チェックボックスのデータ引継ぎ
pineray さん、ありがとうございます。
また、tao_sさん、ecbgさんいろいろアドバイス頂いてありがとうございます。

pineray さんの
>今度はDBに登録する段階でシリアライズしなくてはならなかったり、他にもいろいろと変更する箇所が生じてくるでしょう。

確かに、生じてきました。
今回は他のコードとかを参考にして下記のようにしてみました。
シリアライズにすると、CSVから落とす時の処理が複雑になりそでしたので、
単純に文字列にしてみました。

if (strlen($array["question02"]) > 0 ){
// シリアライズする場合
// $arrRegist["question02"] = serialize($array["question02"]); 

//文字列にする場合(項目をカンマ切りで)
$arrRegist["question02"] = implode(",", $array["question02"]);

}

一応、イメージしていた形にはなりましたので、ここで”解決”としておきますが、
アドバイス頂いた点から、再度確認してみようと思います。
こんなに早く”解決”に至る事ができて、大変嬉しく
感謝致します。

ありがとうございました。



« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は90,404名です
総投稿数は110,383件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1693
8
red
1571
9
mcontact
1366
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.