バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > メーカーIDの表示

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
bad
投稿日時: 2016/2/10 11:26
対応状況: −−−
半人前
登録日: 2016/1/21
居住地:
投稿: 19
Re: メーカーIDの表示
karin 様
返答ありがとうございます。

やはり素人には敷居が高そうですね。。
ヒントをたくさんいただいて出来ないのが申し訳ないですが、カスタマイズを任せようと思います。
ありがとうございました。
karin
投稿日時: 2016/2/9 18:42
対応状況: −−−
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 689
Re: メーカーIDの表示
bad 様

maker_idはdtb_productsに存在するカラムですので、そこへ検索をかける必要があります。

ここから先は少し複雑になります。
他にもっと良い案があるかもしれませんが、ぱっと思いつくのは
dtb_orderのorder_idをキーにdtb_order_detailテーブルからproduct_idを取得し、そのproduct_idをキーにdtb_productsのmaker_idを取得し、その値が検索した値と一致する。という条件をSQLで書くことになります。

まずはSQLベースで試してみてください。


----------------

bad
投稿日時: 2016/2/9 18:01
対応状況: −−−
半人前
登録日: 2016/1/21
居住地:
投稿: 19
Re: メーカーIDの表示
dtb_orderへmaker_idを追加したところエラーはでなくなったのですが、検索結果では表示されなくなってしまいます。
エラーも出ないのでどこで解決するかがわからなくて手詰まってしまいました。。
どなたかご存知の方いましたら回答お願いいたします
bad
投稿日時: 2016/2/9 15:55
対応状況: −−−
半人前
登録日: 2016/1/21
居住地:
投稿: 19
Re: メーカーIDの表示
karin 様
たびたびありがとうございます。

エラー内容は把握できたのですが、解決策が思い浮かびません。
大変申し訳ないのですが、ご教授いただけますでしょうか?
karin
投稿日時: 2016/2/9 15:45
対応状況: −−−
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 689
Re: メーカーIDの表示
bad 様

先程のエラーは全角空白が原因だったようですね。

今度のエラーはまた別の問題です。

引用:
SQL: [SELECT COUNT(*) FROM dtb_order WHERE del_flg = 0 AND maker_id = ? ] MDB2 Error: no such field


maker_idというカラムはdtb_orderテーブルには存在しない為にエラーになっています。


----------------

bad
投稿日時: 2016/2/9 15:00
対応状況: −−−
半人前
登録日: 2016/1/21
居住地:
投稿: 19
Re: メーカーIDの表示
karin 様

ご指摘のように消去したのですが、今度は以下のようなエラーが出てしまいました。。

Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。
SQL: [SELECT COUNT(*) FROM dtb_order WHERE del_flg = 0 AND maker_id = ? ]
MDB2 Error: no such field
_doQuery: [Error message: Could not execute statement]
[Last executed query: PREPARE mdb2_statement_mysql_1049b8b1f67c8ea5a5fc0b7ef01573d6de10389663 FROM 'SELECT COUNT(*) FROM dtb_order WHERE del_flg = 0 AND maker_id = ? ']
[Native code: 1054]
[Native message: Unknown column 'maker_id' in 'where clause']
on [/ec/html/data/class/SC_Query.php(1095)]
/ec/html/admin/order/index.php(29): LC_Page_Admin_Order_Ex->process
/ec/html/data/class_extends/page_extends/admin/order/LC_Page_Admin_Order_Ex.php(54): LC_Page_Admin_Order->process
/ec/html/data/class/pages/admin/order/LC_Page_Admin_Order.php(86): LC_Page_Admin_Order->action
/ec/html/data/class/pages/admin/order/LC_Page_Admin_Order.php(159): LC_Page_Admin_Order->getNumberOfLines
/ec/html/data/class/pages/admin/order/LC_Page_Admin_Order.php(528): SC_Query->count
/ec/html/data/class/SC_Query.php(142): SC_Query->get
/ec/html/data/class/SC_Query.php(683): SC_Query->getOne
/ec/html/data/class/SC_Query.php(699): SC_Query->prepare
/ec/html/data/class/SC_Query.php(1024): SC_Query->error
/ec/html/data/class/SC_Query.php(1095): trigger_error

申し訳ありませんm(__)m
karin
投稿日時: 2016/2/9 14:49
対応状況: −−−
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 689
Re: メーカーIDの表示
bad 様


      case 'search_maker_id':
      $where.= ' AND maker_id = ?';
       $arrValues[] = $objFormParam->getValue($key);
      break;


上記4行すべてのインデントが全角空白になっていますが、これを削除してみてはいかがでしょうか?


----------------

bad
投稿日時: 2016/2/9 14:39
対応状況: −−−
半人前
登録日: 2016/1/21
居住地:
投稿: 19
Re: メーカーIDの表示
karin 様
ご返答ありがとうございます。


念の為クエリ全体を記載させていただきます。
長文になってしまいますがよろしくお願いいたします。

引用:

/**
* クエリを構築する.
*
* 検索条件のキーに応じた WHERE 句と, クエリパラメーターを構築する.
* クエリパラメーターは, SC_FormParam の入力値から取得する.
*
* 構築内容は, 引数の $where 及び $arrValues にそれぞれ追加される.
*
* @param string $key 検索条件のキー
* @param string $where 構築する WHERE 句
* @param array $arrValues 構築するクエリパラメーター
* @param SC_FormParam $objFormParam SC_FormParam インスタンス
* @return void
*/
public function buildQuery($key, &$where, &$arrValues, &$objFormParam)
{
$dbFactory = SC_DB_DBFactory_Ex::getInstance();
switch ($key) {
case 'search_product_name':
$where .= ' AND EXISTS (SELECT 1 FROM dtb_order_detail od WHERE od.order_id = dtb_order.order_id AND od.product_name LIKE ?)';
$arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
break;
case 'search_order_name':
$where .= ' AND ' . $dbFactory->concatColumn(array('order_name01', 'order_name02')) . ' LIKE ?';
$arrValues[] = sprintf('%%%s%%', preg_replace('/[  ]/u', '', $objFormParam->getValue($key)));
break;
case 'search_order_kana':
$where .= ' AND ' . $dbFactory->concatColumn(array('order_kana01', 'order_kana02')) . ' LIKE ?';
$arrValues[] = sprintf('%%%s%%', preg_replace('/[  ]/u', '', $objFormParam->getValue($key)));
break;
case 'search_order_id1':
$where .= ' AND order_id >= ?';
$arrValues[] = sprintf('%d', $objFormParam->getValue($key));
break;
case 'search_order_id2':
$where .= ' AND order_id <= ?';
$arrValues[] = sprintf('%d', $objFormParam->getValue($key));
break;
case 'search_order_sex':
$tmp_where = '';
foreach ($objFormParam->getValue($key) as $element) {
if ($element != '') {
if (SC_Utils_Ex::isBlank($tmp_where)) {
$tmp_where .= ' AND (order_sex = ?';
} else {
$tmp_where .= ' OR order_sex = ?';
}
$arrValues[] = $element;
}
}

if (!SC_Utils_Ex::isBlank($tmp_where)) {
$tmp_where .= ')';
$where .= " $tmp_where ";
}
break;
case 'search_order_tel':
$where .= ' AND (' . $dbFactory->concatColumn(array('order_tel01', 'order_tel02', 'order_tel03')) . ' LIKE ?)';
$arrValues[] = SC_SelectSql_Ex::addSearchStr(preg_replace('/[()-]+/', '', $objFormParam->getValue($key)));
break;
case 'search_order_email':
$where .= ' AND order_email LIKE ?';
$arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
break;
case 'search_payment_id':
$tmp_where = '';
foreach ($objFormParam->getValue($key) as $element) {
if ($element != '') {
if ($tmp_where == '') {
$tmp_where .= ' AND (payment_id = ?';
} else {
$tmp_where .= ' OR payment_id = ?';
}
$arrValues[] = $element;
}
}

if (!SC_Utils_Ex::isBlank($tmp_where)) {
$tmp_where .= ')';
$where .= " $tmp_where ";
}
break;
case 'search_total1':
$where .= ' AND total >= ?';
$arrValues[] = sprintf('%d', $objFormParam->getValue($key));
break;
case 'search_total2':
$where .= ' AND total <= ?';
$arrValues[] = sprintf('%d', $objFormParam->getValue($key));
break;
case 'search_sorderyear':
$date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_sorderyear'),
$objFormParam->getValue('search_sordermonth'),
$objFormParam->getValue('search_sorderday'));
$where.= ' AND create_date >= ?';
$arrValues[] = $date;
break;
case 'search_eorderyear':
$date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_eorderyear'),
$objFormParam->getValue('search_eordermonth'),
$objFormParam->getValue('search_eorderday'), true);
$where.= ' AND create_date <= ?';
$arrValues[] = $date;
break;
case 'search_supdateyear':
$date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_supdateyear'),
$objFormParam->getValue('search_supdatemonth'),
$objFormParam->getValue('search_supdateday'));
$where.= ' AND order_id >= ?';
$arrValues[] = $date;
break;
case 'search_eupdateyear':
$date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_eupdateyear'),
$objFormParam->getValue('search_eupdatemonth'),
$objFormParam->getValue('search_eupdateday'), true);
$where.= ' AND order_id <= ?';
$arrValues[] = $date;
break;
case 'search_sbirthyear':
$date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_sbirthyear'),
$objFormParam->getValue('search_sbirthmonth'),
$objFormParam->getValue('search_sbirthday'));
$where.= ' AND order_birth >= ?';
$arrValues[] = $date;
break;
case 'search_ebirthyear':
$date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_ebirthyear'),
$objFormParam->getValue('search_ebirthmonth'),
$objFormParam->getValue('search_ebirthday'), true);
$where.= ' AND order_birth <= ?';
$arrValues[] = $date;
break;
case 'search_order_status':
$where.= ' AND status = ?';
$arrValues[] = $objFormParam->getValue($key);
break;
      case 'search_maker_id':
      $where.= ' AND maker_id = ?';
       $arrValues[] = $objFormParam->getValue($key);
      break;
default:
break;
}
}



上記の      case 'search_maker_id':
が467行目になります。

お手数おかけして申し訳ございませんm(__)m
karin
投稿日時: 2016/2/9 14:27
対応状況: −−−
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 689
Re: メーカーIDの表示
bad 様

ご確認いただきましてありがとうございます。

ちなみにエラーの出ている下記の行:
LC_Page_Admin_Order.php の 476行目とその前後のコードをこちらへ記載いただくことは可能でしょうか?

何らかの構文エラーだとは思うのですが...。


----------------

bad
投稿日時: 2016/2/9 11:50
対応状況: −−−
半人前
登録日: 2016/1/21
居住地:
投稿: 19
Re: メーカーIDの表示
karin 様
失礼いたしました。

$arrValues[] = $objFormParam->getValue($key);

で記述しておりました。

ここを追加するとエラーが出てしまうのでこの部分が間違ってるはずだとは思うのですが、、
親切にお答えいただいているのに解決できなくて申し訳ございません
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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
1297
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.