Mysql数组数据不显示表

时间:2013-07-11 13:47:40

标签: php html mysql zend-framework

我在表上使用了MySQL Table get值,这些值使用了另一个表.i得到了数组值

第一个表查询:

    $ordersdetail = "SELECT * FROM `order_item` WHERE `Order_ID`='".$orderid ."'";
$customerorder = mysql_query($ordersdetail );
                   $i=0;
             while($rows = mysql_fetch_array($customerorder ))
             {
                $orderproduct= $rows['Order_product_ID'];
                $orderids= $rows['Order_ID'];
                $productId[$i] = $rows['Product_ID'];
                $sizeId[$i] = $rows['Size_ID'];

                 $colorId[$i] = $rows['Color_ID'];
                  $quantiy = $rows['Order_Quantity'][$i];

                  $price = $rows['Unit_Price'][$i];
                  $subTotal = $rows['Sub_Total'];
                  $customerccode = $rows['Record_Status'];
                  $customerphone = $rows['Created_Time'];
                  $i++;
                }     

表列productid数组值使用另一个表:

下式给出:

       for($i=0;$i<count($productId);$i++)  
             { 
        $product = "SELECT * FROM `product` WHERE `Product_ID`='".$productId[$i]."'";
$products = mysql_query($product);

             while($rows = mysql_fetch_array($products))         
               { 
                   $productnames = $rows['Product_Name'];


               }

                  }  

color id used :




     for($i=0;$i<count($colorId);$i++) 
                { 
       $color = "SELECT * FROM `color` WHERE `Color_ID`='".$colorId[$i] ."'";
$cname = mysql_query($color);

             while($rows = mysql_fetch_array($cname))         
               { 
                   $colorname = $rows['Color_Name'];
               }
                  }

使用值表

我的问题是值显示表继续

         table structure  



        $message .= "<table width='100%' border='1' cellspacing='0' cellpadding='1'>
          <thead>
         <tr style='background: #eee;'>
          <th><strong>Quantity</strong> </th>
          <th><strong>ProductName</strong> </th>
         <th><strong>Size</strong> </th>
           <th><strong>Style</strong> </th>
          <th><strong>Price</strong> </th>
          <th><strong>Total</strong> </th>

            </tr>
                 ";
          for($i=0;$i<count($productId);$i++)  
             { 
                      $message .=" <tr style='color: #c40000;'>
                      <th>" .$quantiy. "</th>
                     <th>" .$productnames. "</th>
                         <th>" .$sizename. "</th>
                            <th>" .$colorname. "</th>
                               <th>" . $price. "</th>
                                   <th>" . $subTotal. "</th>  
                                                        </tr>";
                           }

这种格式是正确的更多值不显示只有第一个值显示多个时间

1 个答案:

答案 0 :(得分:0)

这是一个很难回答的问题,因为存在很多问题......

首先....除非这是一个私有/内部应用程序,你不能将变量直接放入你的查询...查看一个合适的数据库类,我可以推荐:http://www.imavex.com/php-pdo-wrapper-class/

其次,你正在混合你的PHP代码和HTML太多了......我不会太过分了,但总的来说你想保持这个东西分开......研究MVC编程模式。

现在回答你的问题......你看到相同数据重复的原因是因为你只使用了一个每次被覆盖的变量...即。 $ quanty(拼写错误的fyi)...所以要破解你的方法,将它分配给一个数组,然后使用$ i计数器,就像你使用$ productID一样

更好的方法是在循环中执行这些操作并避免首先分配变量...我假设您已经为消息变量分配了内容...如果您可以跳过它并回显它直接说可能会更好。

$ordersdetail = "SELECT * FROM `order_item` WHERE `Order_ID`='".$orderid ."'";
$customerorder = mysql_query($ordersdetail );
$i=0;
while($rows = mysql_fetch_array($customerorder ))
    $product = "SELECT * FROM `product` WHERE `Product_ID`='".$row[$i]."'";
    $products = mysql_query($product);
    $color = "SELECT * FROM `color` WHERE `Color_ID`='".$colorId[$i] ."'";
    $cname = mysql_query($color);


   Now you would create your table from the $rows data directly and when you goto the      color/size stuff you could look through in there.

}

现在我不是100%确定它会对你有用但你可以用一个使用JOINS的查询做类似于上面的事情

SELECT * FROM `order_item` LEFT JOIN product ON order_item.productID = product.productID LEFT JOIN color ON order_item.colorID = color.colorID WHERE order_item.`Order_ID`='".$orderid ."'

请原谅语法/命名约定......上述命令无法在您的系统上正常运行,只是为了让您知道该怎么做。