質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • PHP

    19212questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • EC-CUBE

    276questions

    EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

重複登録チェックを行いたいです。

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 276

koda

score 1

前提・実現したいこと

EC-CUBEのカスタマイズを行っています。

・同じ名前の営業所(name)が登録されたとき
・同じ名前の営業所短縮名称(short_name)が登録されたとき

上記のときにそれぞれアラートメッセージが出て登録できないようにしたいです、
どのように直したらよいでしょうか?

発生している問題・エラーメッセージ

エラーは出ないのですが、営業所短縮名称の判断しか動作しておらず、
営業所短縮名称が重複していると営業所名のほうまでエラーが出てしまいます。

該当のソースコード

    public function lfCheckError(&$objFormParam)
    {
        $arrErr = $objFormParam->checkError();
        $post = $objFormParam->getHashArray();

        $objErr = new SC_CheckError_Ex($post);
        $objErr->doFunc(array('郵便番号', 'zip01', 'zip02'), array('ALL_EXIST_CHECK'));

        // 電話番号チェック
        $objErr->doFunc(array('TEL', 'tel01', 'tel02', 'tel03'), array('TEL_CHECK'));
        $objErr->doFunc(array('フリーダイヤル', 'toll_free01', 'toll_free02', 'toll_free03'), array('TEL_CHECK'));
        $objErr->doFunc(array('FAX', 'fax01', 'fax02', 'fax03'), array('TEL_CHECK'));

        if (!isset($objErr->arrErr['name'])) {
            $arrRet =  $objFormParam->getHashArray();
            // 既存チェック
            $objOffice = new SC_Helper_Office_Ex();
            if ($objOffice->checkExist($arrRet)) {
                $objErr->arrErr['name'] = '※ 同じ営業所名は登録できません。<br>';
            }
        }
        if (!isset($objErr->arrErr['short_name'])) {
            $arrRet =  $objFormParam->getHashArray();
            // 既存チェック
            $objOffice = new SC_Helper_Office_Ex();
            if ($objOffice->checkExist($arrRet)) {
                $objErr->arrErr['short_name'] = '※ 同じ名称は登録できません。<br>';
            }
        }
        return array_merge((array) $arrErr, (array) $objErr->arrErr);
    }

//SC_Helper_Office()


    public function checkExist($arrOffice)
    {
        $objDb = new SC_Helper_DB_Ex();
        if ($arrOffice['office_id'] == '') {
            $ret = $objDb->sfIsRecord('dtb_office', 'name', array($arrOffice['name']));
        } else {
            $objQuery =& SC_Query_Ex::getSingletonInstance();
            $ret = (($objQuery->count('dtb_office', 'office_id != ? AND name = ? AND del_flg = 0', array($arrOffice['office_id'], $arrOffice['name'])) > 0) ? true : false);
        }
        if ($arrOffice['office_id'] == '') {
            $ret = $objDb->sfIsRecord('dtb_office', 'short_name', array($arrOffice['short_name']));
        } else {
            $objQuery =& SC_Query_Ex::getSingletonInstance();
            $ret = (($objQuery->count('dtb_office', 'office_id != ? AND short_name = ? AND del_flg = 0', array($arrOffice['office_id'], $arrOffice['short_name'])) > 0) ? true : false);
        }

        return $ret;
    }

試したこと

課題に対してアプローチしたことを記載してください

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • miyahan

    2017/10/28 12:47

    EC-CUBEの重複をチェックする前に、質問が https://teratail.com/questions/98051 と重複しているので解消なさってください(どちらかを削除依頼するなど)

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19212questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • EC-CUBE

    276questions

    EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。