2012-02-27 60 views
-3

私はこの問題を解決することができましたが、私は修正できず、誰かが助けてくれることを願っています。カテゴリ別ループ製品

親カテゴリに製品がある場合はうまく動作しますが、SQLが正しい結果を返しても親が空である場合、PHPループはいくつの製品があるかによってデータを繰り返します。すなわち、 4製品= 4セットの結果しかし、私が述べたように、親カテゴリーにレコードがあれば、それは完全に機能します。

<?php $_GET["category_id"]=$category_id; ?> 

    <?PHP 
    $sql = " 
     SELECT DISTINCT JVPCX.category_id, 
      JVP.product_id, 
      JVP.product_error, 
      JVP.product_exchange, 
      JVP.product_sku, 
      JVP.product_name, 
      JVP.product_url, 
      JVP.product_in_stock, 
      jos_vm_category.category_name 
    FROM jos_vm_product_category_xref JVPCX 
      INNER JOIN jos_vm_product JVP ON (JVPCX.product_id = JVP.product_id) 
      INNER JOIN jos_vm_category ON (JVPCX.category_id = 
      jos_vm_category.category_id) 
    WHERE JVPCX.category_id IN (SELECT jos_vm_category_xref.category_child_id FROM 
     jos_vm_category_xref WHERE jos_vm_category_xref.category_parent_id =".$category_id.") OR (JVPCX.category_id =".$category_id.")"; 

    $res = mysql_query($sql); 
    $list = array(); 
    while ($r = mysql_fetch_object($res)) 
    { 
     if (! isset($list[ $r->category_name ])) 
     { 
      $list[ $r->category_name ] = array(); 

     } 

     $list[ $r->category_name ][ $r->product_id ] = array(
      'SKU'  => $r->product_sku, 
      'Name' => $r->product_name, 
      'Prod_id' => $r->product_id, 
      'Prod_error' => $r->product_error, 
      'Prod_exchange' => $r->product_exchange, 
      'Prod_url' => $r->product_url, 
      'Prod_in_stock' => $r->product_in_stock 
     ); 
    } 
    ?> 

    <table width="70%" border="0"> 
     <tr> 
     <td align="center" valign="middle"> Error: <img src="alert.gif" title="Error" alt="Error" /> 
     </td> 
     <td align="center" valign="middle"> Exchange: <img src="exchange.gif" title="Exchange" alt="Exchange" /> 
     </td> 
     <td align="center" valign="middle"> Information:<img src="info.gif" title="info" alt="info" /> 
     </td> 
     <td align="center" valign="middle"> Stock:<img src="stock.gif" title="Stock" alt="Stock" /> 
     </td> 
     <td align="center" valign="middle"> Buy:<img src="cart-icon.png" title="Stock" alt="Buy" /> 
     </td> 
     </tr> 
    </table> 

    <?PHP 

    echo("<BR/>"); 
    foreach ($list as $catID => $products) { ?> 
    <?php 
     print($catID); 
     echo("<BR/>"); 
     ?> 
    <table width="100%" border="1" class="product-head"> 
     <tr> 
     <th width="20%"> <?php echo("Part Number:"); ?> 
     </th> 
     <th width="45%"> <?php echo("Description:"); ?> 
     </th> 
     <th width="15%"> <?php echo("Information:"); ?> 
     </th> 
     </tr> 
    </table> 

    <table width="100%" border="1" class="product"> 
    <?php foreach ($products as $prodID => $data) { ?> 
     <tr> 
     <td width="20%"> 
     <?php print($data['SKU']); 
      echo("<BR/>");  
     ?> 
     </td> 


    <td width="45%"><?php 
     print($data['Name']); 
    echo("<BR/>");  ?></td> 

    <td width="15%" valign="middle"><?php 

       if ($data['Prod_error'] == "Y"){ 

      echo '<img src="alert.gif" title="Error" alt="Error" />'; 

      } 

       if ($data['Prod_exchange'] == "Y"){ 
       echo '<img src="exchange.gif" title="Exchange" alt="Exchange" />'; 


      } 

    if ($data['Prod_url'] > ""){ 
      echo '<a href="'. 
      $data['Prod_url'] 
      .'">'.'<img src="info.gif" title="info" alt="info" />'.'</a>'; 


      } 

    if ($data['Prod_in_stock'] > "0"){ 
      echo '<img src="stock.gif" title="Stock" alt="Stock" />'; 

      } 
    ?> 
    </td> 
     </tr> 
    </table> 
    <?php echo("<BR/>"); ?> 
    <?php } ?> 
+1

ポストあなたが持っているコードを変更します。 – spencercw

+1

誰もあなたのコードを投稿するよう提案していないのは奇妙なので、コードを投稿してください – mkk

+0

私はこの投稿を別の投稿から取得しようとしています: – Paul

答えて

0

まずは、 jos_vm_product_category_xref.product_id, jos_vm_product_category_xref.product_list

$sql = " 
    SELECT DISTINCT 
     JVPCX.`category_id`, 
     JVP.`product_id`, 
     JVP.`product_sku`, 
     JVP.`product_s_desc` 
    FROM 
     `jos_vm_product_category_xref` JVPCX 
    INNER JOIN `jos_vm_product` JVP 
     ON JVPCX.`product_id` = JVP.`product_id` 
"; 

を削除しても、あなたはあなたのループ

$list = array(); 

while ($r = mysql_fetch_object($res)) 
{ 
    if (! isset($list[ $r->category_id ])) 
    { 
     $list[ $r->category_id ] = array(); 
    } 

    $list[ $r->category_id ][ $r->product_id ] = array(
     'name'  => $r->product_sku, 
     'whatever' => $r->product_s_desc, 
    ); 
} 
関連する問題