这个数据库tag_share_goods,只有两个字段,tagid,goods_id 我想在产品页面显示使用该产品的相同标签其他产品,一个产品拥有多个标签,一个标签也是对应有多个产品的。我用下面的这段代码获取的的数据,发现他只是获取第一个标签下的所有产品,其他标签对应的产品id(goods_id)显示不出来,我是php初学者,小白一个,求大神帮忙!!多谢!!!
php页面:
$gtagsarr = $db->fetch_all_assoc("select tagid from ".dbprefix."tag_share_goods where goods_id=".$strShare['goods_id']." limit 0,10");
foreach($gtagsarr as $gitem){
$xxgoodsarray=$db->fetch_all_assoc("select goods_id from ".dbprefix."tag_share_goods where tagid=".$ggitem['tagid']." and goods_id <>".$goods_id." limit 0,30");
foreach($xxgoodsarray as $xitem){
}
}html页面
<!--{loop $gtagsarr $gitem}-->
$gitem['tagid']
  <!--{/loop}--><!--{loop $xgoodsarray $xitem}-->
$xitem['goods_id']
<!--{/loop}-->

解决方案 »

  1.   

    你的  where goods_id=".$strShare['goods_id'] 不是指定了 goods_id 吗?
      

  2.   

    这个没问题,.$strShare['goods_id'] 整个当前产品页的goods_id,问题在于$gitem['tagid']这个有多个值,假设有3,5,6 三个tagid值,那如何将这三个代入第二个sql语句中,去查询
    select goods_id from ".dbprefix."tag_share_goods where tagid=".$gitem['tagid']." and goods_id <>".$goods_id." limit 0,30"如果,我使用
    <!--{loop $gtagsarr $gitem}-->
           <!--{loop $xgoodsarray $xitem}-->
             $xitem['goods_id']
           <!--{/loop}-->
     <!--{/loop}-->
    他每次都是用第一个值(3),去查询
      

  3.   

    感觉是for循环的问题
    foreach($gtagsarr as $gitem){
    $xxgoodsarray=$db->fetch_all_assoc("sql");
    foreach($xxgoodsarray as $xitem){ --------- }
    }
    就此来看,变量$xxgoodsarray永远获取的是查询最后一条得查询语句的结果集。所以,就算之前的数据被查询出来了,也没有做组合处理。
    $goods_arr = array();
    foreach($gtagsarr as $gitem){
    $xxgoodsarray=$db->fetch_all_assoc("sql");
    foreach($xxgoodsarray as $xitem){ --------- }
            $goods_arr = array_merge($goods_arr,$xxgoodsarray) ;
    }