1

私はphpに比較的慣れていないので、oscommerceを使用して、カテゴリ、サブカテゴリ、およびサブカテゴリで利用可能な製品のリストをレポートに作成しています。カテゴリのリストを作成し、その後に子(サブカテゴリ)を追加しました。サブカテゴリの後に製品をリストしようとして行き詰まりました。コーディングの一部を次に示します。

function category_list( $category_parent_id = 0 )
{
$sql  = 'select cd.categories_name,c.categories_id, c.parent_id, c.sort_order from ' . TABLE_CATEGORIES . ' c, ' . TABLE_CATEGORIES_DESCRIPTION . ' cd where c.categories_id = cd.categories_id AND c.parent_id='.$category_parent_id;
$res  = tep_db_query( $sql );
$cats = array();
 while ( $cat = tep_db_fetch_array( $res ) )
  {
    $cats[] = $cat;
  }
 if (count($cats) == 0)
    {
  return '';
  }
 $list_items = array();
foreach ( $cats as $cat )
 {
$list_items[] = '<tr class="dataTableRow"><td class="dataTableContent">'; 
if($category_parent_id != 0)$list_items[] = '&nbsp;&nbsp;&nbsp;';
if($category_parent_id == 0)$list_items[] = '<b>';
$list_items[] = $cat['categories_name'];


if($category_parent_id == 0)$list_items[] = '</b>';
$list_items[] = '</td><td class="dataTableContent">'; 
$list_items[] = category_list( $cat['categories_id'] );
$list_items[] = '</td></tr>'; 
}
$list_items[] = '';
return implode( '', $list_items );

}  
echo category_list();

商品を一覧表示するために、フィールドを使用して結合された、、、をproduct_to_cat使用する必要がある2つのテーブルがあります。正しい親にリストされるために、およびテーブルは。で結合されます。正しいカテゴリの正しい製品を印刷するにはどうすればよいですか?prod_descripproduct_idproduct_to_catcatcategory_id

4

1 に答える 1

0

テーブルがこのSQLFiddleのように見えると仮定すると、これはすべてのテーブル間の単純な結合です。

select c.parent_id, c.categories_id, cd.categories_name,
       p.product_id, pd.description
from categories c
join categories_description cd on cd.categories_id = c.categories_id
left join product_to_cat p on p.category_id = c.categories_id
left join prod_descrip pd on pd.product_id = p.product_id
order by c.parent_id, c.categories_id, p.product_id

sort_orderがこの画像にどのように適合するかわかりません。

1つのカテゴリの商品のみが必要な場合は、ループで次の選択を行います

select p.product_id, pd.description
from product_to_cat p
left join prod_descrip pd on pd.product_id = p.product_id
where p.category_id = $cat['categories_id']
于 2012-12-05T15:53:33.993 に答える