バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > お気に入り商品登録

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
DDR
投稿日時: 2009/4/2 5:44
対応状況: −−−
仙人
登録日: 2008/6/21
居住地: 大阪
投稿: 307
お気に入り商品登録
お世話になっております

お気に入り商品の登録を会員様にしてもらう機能を追加しております

http://wiki.ec-orange2.jp/index.php?%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%EF%BC%9A%E5%BF%9C%E7%94%A8%2F%E3%81%8A%E6%B0%97%E3%81%AB%E5%85%A5%E3%82%8A%E6%A9%9F%E8%83%BD#z24d71c6

どうしても実装できなかったのでどこが間違っているか教えて頂けたら幸いです

一応、商品詳細ページにお気に入りを登録するリンクの作成をして
その後、お気に入りを登録する画面までは移動したのですが
登録を押すと 500エラーが出てしまいます

ファイルは
bookmarkとなってます

長文になってしまいますが宜しく御願いいたします

DBにdtb_bookmarkを追加
CREATE TABLE dtb_bookmark (
bookmark_id serial NOT NULL,
customer_id integer NOT NULL,
product_id integer NOT NULL,
memo text,
create_date timestamp without time zone NOT NULL,
update_date timestamp without time zone NOT NULL,
del_flg integer
);

ALTER TABLE ONLY dtb_bookmark
ADD CONSTRAINT dtb_bookmark_pkey PRIMARY KEY (bookmark_id);


LC_Page_Products_review.phpをコピーして編集
LC_Page_Products_BookMark.phpを作成

class LC_Page_Products_bookmark extends LC_Page {


/**
* Page を初期化する.
*
* @return void
*/
function init() {
parent::init();
$this->tpl_mainpage = 'products/bookmark.tpl';

$masterData = new SC_DB_MasterData_Ex();
}

/**
* Page のプロセス.
*
* @return void
*/
function process() {
$objView = new SC_SiteView();
$objQuery = new SC_Query();
// $objCustomer = new SC_Customer();
if(!SC_Customer::isLoginSuccess()){
SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, "", true);
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (!$this->isValidToken()) {
SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, "", true);
}
}

//---- 登録用カラム配列
$arrRegistColumn = array(
array( "column" => "bookmark_id", "convert" => "n" ),
array( "column" => "product_id", "convert" => "n" ),
array( "column" => "memo", "convert" => "aKV" ),
array( "column" => "create_date", "convert" => "aKV" )
);

if (!isset($_POST['mode'])) $_POST['mode'] = "";
switch ($_POST['mode']){
case 'confirm':
$arrForm = $this->lfConvertParam($_POST, $arrRegistColumn);
$this->arrErr = $this->lfErrorCheck($arrForm);

//エラーチェック
if($this->arrErr == ""){
//商品名の取得
$arrForm['name'] = $objQuery->get("dtb_products", "name", "product_id = ? ", array($arrForm['product_id']));
$this->arrForm = $arrForm;
$this->tpl_mainpage = 'products/bookmark_confirm.tpl';
} else {
//商品名の取得
$arrForm['name'] = $objQuery->get("dtb_products", "name", "product_id = ? ", array($arrForm['product_id']));
$this->arrForm = $arrForm;
}
break;

case 'return':
foreach($_POST as $key => $val){
$this->arrForm[ $key ] = $val;
}

//商品名の取得
$this->arrForm['name'] = $objQuery->get("dtb_products", "name", "product_id = ? ", array($this->arrForm['product_id']));
if(empty($this->arrForm['name'])) {
SC_Utils_Ex::sfDispSiteError(PAGE_ERROR);
}
break;

case 'complete':
$arrForm = $this->lfConvertParam($_POST, $arrRegistColumn);
$arrErr = $this->lfErrorCheck($arrForm);
//重複登録の判定
$flag = $objQuery->count("dtb_bookmark","product_id = ? AND customer_id = ? AND del_flg = 0", array($arrForm['product_id'], SC_Customer::getValue("customer_id"))); //エラーチェック
//エラーチェック
if ($arrErr == ""){
//重複タイトルでない
if($flag > 0) {
//登録情報取得
$arrRet = $objQuery->select("*","dtb_bookmark","customer_id = ? AND product_id = ? AND del_flg = 0",array(SC_Customer::getValue("customer_id"),$arrForm['product_id']));
$arrForm["create_date"] = $arrRet[0]["create_date"];
$arrForm["bookmark_id"] = $arrRet[0]["bookmark_id"];
}
//登録実行
$this->lfRegistBookmarkData($arrForm, $arrRegistColumn);
//レビュー書き込み完了ページへ
$this->sendRedirect($this->getLocation("./bookmark_complete.php", array(), true));
exit;

} else {
if($flag > 0) {
SC_Utils_Ex::sfDispSiteError(PAGE_ERROR);
}
}
break;

default:
if(SC_Utils_Ex::sfIsInt($_GET['product_id'])) {
//商品情報の取得
$arrForm = $objQuery->select("product_id, name", "dtb_products", "del_flg = 0 AND status = 1 AND product_id=?", array($_GET['product_id']));
if(empty($arrForm)) {
SC_Utils_Ex::sfDispSiteError(PAGE_ERROR);
}
//既存登録の判定
$flag = $objQuery->count("dtb_bookmark","product_id = ? AND customer_id = ? AND del_flg = 0", array($arrForm[0]['product_id'], SC_Customer::getValue("customer_id")));
//既存登録有
if($flag > 0) {
//登録情報の取得
$arrRet = $objQuery->select("*","dtb_bookmark","customer_id = ? AND product_id = ? AND del_flg = 0",array(SC_Customer::getValue("customer_id"),$arrForm[0]['product_id']));
$arrForm[0]["memo"] = $arrRet[0]["memo"];
}
$this->arrForm = $arrForm[0];
}
break;

}

$this->transactionid = $this->getToken();
$objView->assignobj($this);
$objView->display($this->tpl_mainpage);
}

/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}

//エラーチェック

function lfErrorCheck() {
$objErr = new SC_CheckError();
$objErr->doFunc(array("商品ID", "product_id", INT_LEN), array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array("メモ", "memo", LTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));

return $objErr->arrErr;
}

function lfRegistBookmarkData ($array, $arrRegistColumn) {
// 仮登録
foreach ($arrRegistColumn as $data) {
if (strlen($array[ $data["column"] ]) > 0 ) {
$arrRegist[ $data["column"] ] = $array[ $data["column"] ];
}
}
if(!$arrRegist['create_date']){
$arrRegist['create_date'] = 'now()';
}
if(empty($arrRegist['bookmark_id'])){
unset($arrRegist['bookmark_id']);
}
$arrRegist['customer_id'] = SC_Customer::getValue("customer_id");
$arrRegist['update_date'] = 'now()';
$arrRegist['del_flg'] = '0';
//-- 登録実行
$objQuery = new SC_Query();
if($arrRegist['bookmark_id'] > 0){
$objQuery->update("dtb_bookmark", $arrRegist,"bookmark_id = ?",array($arrRegist["bookmark_id"]));
}else{
$objQuery->insert("dtb_bookmark", $arrRegist);
}
}

}

LC_Page_Products_bookmark_Complete.phpを作成

require_once(CLASS_PATH . "pages/LC_Page.php");

/**
* お客様の声投稿完了 のページクラス.
*
* @package Page
* @author LOCKON CO.,LTD.
* @version $Id: LC_Page_Products_ReviewComplete.php 16741 2007-11-08 00:43:24Z adachi $
*/
class LC_Page_Products_bookmark_Complete extends LC_Page {

// }}}
// {{{ functions

/**
* Page を初期化する.
*
* @return void
*/
function init() {
parent::init();
$this->tpl_mainpage = 'products/bookmark_complete.tpl';
}

/**
* Page のプロセス.
*
* @return void
*/
function process() {

$objView = new SC_SiteView();

$objView->assignobj($this);
$objView->display($this->tpl_mainpage);
}

/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}
}


----------------
------------------------------------------------------------------------------------------
EC-CUBE 3.0.17
DBサーバー mariaDB
WEBサーバー apache (CentOS)
PHP 7.1
-----------------------...

homan
投稿日時: 2009/4/2 9:00
対応状況: −−−
仙人
登録日: 2007/7/2
居住地: 宮崎県宮崎市
投稿: 633
Re: お気に入り商品登録
ちなみに、WEBサーバーのエラーログは確認することができますか?それを見た方がすぐ解明できるかもしれません。


----------------
このコミュニティでの投稿はボランティアの範囲に留めさせていただいています。個別の相談やカスタマイズは有償にて承っておりますのでご相談下さい。

[url=http://www.eccube-school.jp/]EC-CUBE

DDR
投稿日時: 2009/4/2 17:36
対応状況: −−−
仙人
登録日: 2008/6/21
居住地: 大阪
投稿: 307
Re: お気に入り商品登録
お世話になってます

それが500エラーならwebサーバーエラーログで確認したいのですが

当方のサーバーではエラーログが観覧出来なかったので

相談させていただきました。


----------------
------------------------------------------------------------------------------------------
EC-CUBE 3.0.17
DBサーバー mariaDB
WEBサーバー apache (CentOS)
PHP 7.1
-----------------------...

seasoft
投稿日時: 2009/4/2 18:16
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: お気に入り商品登録
PHP 5.2.6 をご利用ということからすると、PHP エラーでステータス 500 を生じている確率もあります。

下記、参考になれば。
http://seasoft.jp1.cx/ec/tips/phpdisplayerrors


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

DDR
投稿日時: 2009/4/2 19:12
対応状況: −−−
仙人
登録日: 2008/6/21
居住地: 大阪
投稿: 307
Re: お気に入り商品登録
おおお!
確認できました!.htaccessで観覧できるんですね

有難う御座います!

エラー内容についてなんですが

//---- 登録用カラム配列
        $arrRegistColumn = array(
                       array(  "column" => "bookmark_id", "convert" => "n" ),
                       array(  "column" => "product_id", "convert" => "n" ),
                       array(  "column" => "memo", "convert" => "aKV" ),
                       array(  "column" => "create_date", "convert" => "aKV" )
                                );

        if (!isset($_POST['mode'])) $_POST['mode'] = "";
        switch ($_POST['mode']){
        	case 'confirm':
           $arrForm = $this->lfConvertParam($_POST, $arrRegistColumn);
            $this->arrErr = $this->lfErrorCheck($arrForm);
           
           //エラーチェック
            if($this->arrErr == ""){
                 //商品名の取得
                    $arrForm['name'] = $objQuery->get("dtb_products", "name", "product_id = ? ", array($arrForm['product_id']));
                    $this->arrForm = $arrForm;
                    $this->tpl_mainpage = 'products/bookmark_confirm.tpl';
            } else {
                //商品名の取得
                $arrForm['name'] = $objQuery->get("dtb_products", "name", "product_id = ? ", array($arrForm['product_id']));
                $this->arrForm = $arrForm;
            }
            break;


赤字でエラーが出ているようなのですが

この箇所を消すとエラーは出ませんが
やはり登録は出来なくなりますね

この情報でどこが悪いか分かりますか?


----------------
------------------------------------------------------------------------------------------
EC-CUBE 3.0.17
DBサーバー mariaDB
WEBサーバー apache (CentOS)
PHP 7.1
-----------------------...

seasoft
投稿日時: 2009/4/2 19:35
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: お気に入り商品登録
エラーのときは、エラーメッセージをコピペが原則です。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

DDR
投稿日時: 2009/4/2 19:47
対応状況: −−−
仙人
登録日: 2008/6/21
居住地: 大阪
投稿: 307
Re: お気に入り商品登録
失礼致しました

エラーは
Fatal error: Call to undefined method LC_Page_Products_bookmark_Ex::lfConvertParam() in ドメイン/data/class/pages/products/LC_Page_Products_bookmark.php on line 79
となっており そのエラー内容が赤字の部分となっております


----------------
------------------------------------------------------------------------------------------
EC-CUBE 3.0.17
DBサーバー mariaDB
WEBサーバー apache (CentOS)
PHP 7.1
-----------------------...

seasoft
投稿日時: 2009/4/2 19:54
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: お気に入り商品登録
lfConvertParam が存在していないようですね。

なぜ、lfConvertParam が欠損しているのかは分かりませんが、その処理がないと入力チェックが行われなくなる予感がします。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

DDR
投稿日時: 2009/4/2 20:38
対応状況: −−−
仙人
登録日: 2008/6/21
居住地: 大阪
投稿: 307
Re: お気に入り商品登録
いつも有難う御座います
ですよね

lfConvertParam() の部分については

LC_Page_Products_Review.phpをそのまま使っているので
間違いないとは思っていたのですが

LC_Page_Products_bookmark.php
意外のファイルになるんでしょうかね

DBが正常に出来てないとかだとこのエラーではないでしょうか?


----------------
------------------------------------------------------------------------------------------
EC-CUBE 3.0.17
DBサーバー mariaDB
WEBサーバー apache (CentOS)
PHP 7.1
-----------------------...

ramrun
投稿日時: 2009/4/2 21:40
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: お気に入り商品登録
余計なお世話かと思ったんですが、横から失礼します。

最初の投稿を見る限り、無いっぽいけど?

function lfErrorCheck() {
 ↓
function lfConvertParam($array, $arrRegistColumn) {
 ↓
function lfRegistRecommendData ($array, $arrRegistColumn) {


function lfErrorCheck() {
 ↓
function lfRegistBookmarkData ($array, $arrRegistColumn) {
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,115名です
総投稿数は110,039件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1649
8
red
1570
9
mcontact
1298
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.