質問 > フロント機能 > お気に入り商品登録 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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(); } }
|
homan |
投稿日時: 2009/4/2 9:00
対応状況: −−−
|
仙人 登録日: 2007/7/2 居住地: 宮崎県宮崎市 投稿: 633 |
Re: お気に入り商品登録 ちなみに、WEBサーバーのエラーログは確認することができますか?それを見た方がすぐ解明できるかもしれません。
|
DDR |
投稿日時: 2009/4/2 17:36
対応状況: −−−
|
仙人 登録日: 2008/6/21 居住地: 大阪 投稿: 307 |
Re: お気に入り商品登録 お世話になってます
それが500エラーならwebサーバーエラーログで確認したいのですが 当方のサーバーではエラーログが観覧出来なかったので 相談させていただきました。
|
seasoft |
投稿日時: 2009/4/2 18:16
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: お気に入り商品登録 PHP 5.2.6 をご利用ということからすると、PHP エラーでステータス 500 を生じている確率もあります。
下記、参考になれば。 http://seasoft.jp1.cx/ec/tips/phpdisplayerrors
|
DDR |
投稿日時: 2009/4/2 19:12
対応状況: −−−
|
仙人 登録日: 2008/6/21 居住地: 大阪 投稿: 307 |
Re: お気に入り商品登録 おおお!
確認できました!.htaccessで観覧できるんですね 有難う御座います! エラー内容についてなんですが
赤字でエラーが出ているようなのですが この箇所を消すとエラーは出ませんが やはり登録は出来なくなりますね この情報でどこが悪いか分かりますか?
|
seasoft |
投稿日時: 2009/4/2 19:35
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: お気に入り商品登録 エラーのときは、エラーメッセージをコピペが原則です。
|
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 となっており そのエラー内容が赤字の部分となっております
|
seasoft |
投稿日時: 2009/4/2 19:54
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: お気に入り商品登録 lfConvertParam が存在していないようですね。
なぜ、lfConvertParam が欠損しているのかは分かりませんが、その処理がないと入力チェックが行われなくなる予感がします。
|
DDR |
投稿日時: 2009/4/2 20:38
対応状況: −−−
|
仙人 登録日: 2008/6/21 居住地: 大阪 投稿: 307 |
Re: お気に入り商品登録 いつも有難う御座います
ですよね lfConvertParam() の部分については LC_Page_Products_Review.phpをそのまま使っているので 間違いないとは思っていたのですが LC_Page_Products_bookmark.php 意外のファイルになるんでしょうかね DBが正常に出来てないとかだとこのエラーではないでしょうか?
|
ramrun |
投稿日時: 2009/4/2 21:40
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: お気に入り商品登録 余計なお世話かと思ったんですが、横から失礼します。
最初の投稿を見る限り、無いっぽいけど?
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |