Php 将my_uMySQL中的值分组显示在单独的<;部门>;根据某些标准
我正在做一个以MySQL为数据库的php项目。这是表格结构Php 将my_uMySQL中的值分组显示在单独的<;部门>;根据某些标准,php,html,mysql,Php,Html,Mysql,我正在做一个以MySQL为数据库的php项目。这是表格结构 product_id (PK) shop_id (FK) product_name product_desc Product_id是主键,shop_id是外键(显示产品属于哪个商店)。现在我想选择这些产品并在中显示它们。对于每个商店产品,我想显示不同的。e、 g如果有三种产品,例如p1、p2和p3,并且它们具有相同的店铺id(例如)1,我希望它们在单独的中显示。每个店铺id将有单独的,属于该店铺id的所有产品将显示在该中。如何使用SQ
product_id (PK)
shop_id (FK)
product_name
product_desc
Product_id是主键,shop_id是外键(显示产品属于哪个商店)。现在我想选择这些产品并在
中显示它们。对于每个商店产品,我想显示不同的
。e、 g如果有三种产品,例如p1、p2和p3,并且它们具有相同的店铺id(例如)1,我希望它们在单独的
中显示。每个店铺id将有单独的
,属于该店铺id的所有产品将显示在该
中。如何使用SQL查询或PHP实现这一点。我曾经使用过这样一个简单的SELECT查询,但是使用它我找不到一种方法来为单独的商店启动不同的
$q = mysql_query("SELECT * FROM table");
echo "<div>";
while($product = mysql_fetch_assoc($q)){
echo $product['product_name']."<br/>";
}
echo "</div>";
$q=mysql\u查询(“从表中选择*);
回声“;
而($product=mysql\u fetch\u assoc($q)){
echo$product['product_name']。“
”;
}
回声“;
它只是将所有产品放在一个单独的分区中,我希望为单独的商店(包含该商店的所有产品)创建单独的分区。感谢您的阅读。最简单的方法是将产品按id分组在一个数组中,并在其中循环
$all_products = array();
while($product = mysql_fetch_assoc($q)){
$all_products[$product['shop_id']][] = $product;
}
foreach($all_products as $shop_id => $product_array){
echo "<div id='shop_".$shop_id."'>";
foreach($product_array as $product){
echo $product['product_name']."<br/>";
}
echo "</div>";
}
$all_products=array();
而($product=mysql\u fetch\u assoc($q)){
$all_products[$product['shop_id']][]=$product;
}
foreach($shop\u id=>$product\u数组形式的所有产品){
回声“;
foreach($product\U数组作为$product){
echo$product['product_name']。“
”;
}
回声“;
}
或者调用每个店铺id的产品数据
$q = mysql_query("SELECT * FROM shops");
while($shops = mysql_fetch_assoc($q)){
$product_q = mysql_query("SELECT * FROM product_table WHERE shop_id=$shops['id']");
echo "<div>";
while($product = mysql_fetch_assoc($product_q)){
echo $product['product_name']."<br/>";
}
echo "</div>";
}
$q=mysql\u查询(“从商店中选择*);
而($shops=mysql\u fetch\u assoc($q)){
$product\U q=mysql\U查询(“从product\U表中选择*,其中shop\u id=$shops['id']);
回声“;
而($product=mysql\U fetch\U assoc($product\U q)){
echo$product['product_name']。“
”;
}
回声“;
}
最简单的方法是在一个数组中按id对产品进行分组并循环
$all_products = array();
while($product = mysql_fetch_assoc($q)){
$all_products[$product['shop_id']][] = $product;
}
foreach($all_products as $shop_id => $product_array){
echo "<div id='shop_".$shop_id."'>";
foreach($product_array as $product){
echo $product['product_name']."<br/>";
}
echo "</div>";
}
$all_products=array();
而($product=mysql\u fetch\u assoc($q)){
$all_products[$product['shop_id']][]=$product;
}
foreach($shop\u id=>$product\u数组形式的所有产品){
回声“;
foreach($product\U数组作为$product){
echo$product['product_name']。“
”;
}
回声“;
}
或者调用每个店铺id的产品数据
$q = mysql_query("SELECT * FROM shops");
while($shops = mysql_fetch_assoc($q)){
$product_q = mysql_query("SELECT * FROM product_table WHERE shop_id=$shops['id']");
echo "<div>";
while($product = mysql_fetch_assoc($product_q)){
echo $product['product_name']."<br/>";
}
echo "</div>";
}
$q=mysql\u查询(“从商店中选择*);
而($shops=mysql\u fetch\u assoc($q)){
$product\U q=mysql\U查询(“从product\U表中选择*,其中shop\u id=$shops['id']);
回声“;
而($product=mysql\U fetch\U assoc($product\U q)){
echo$product['product_name']。“
”;
}
回声“;
}
谢谢Elijan,这个概念看起来很像《盗梦空间》中的电影,“一个阵列对一个阵列,我们必须更深入。”:-)但它解决了我的问题…@WaqarAkbar。哈哈,是的。我已经更新了不同的和更优雅的解决方案的评论,你可以按店铺id查询店铺产品,因为一般情况下,选择*是不好的,所以我应该使用每个列名,而不是*。。。使用select*。??@WaqarAkbar有什么问题吗?理想情况下,如果您只使用该coulmn,则是。根据操作,该列应该在数据库中建立索引,以便更快地查询。因此,例如$q=mysql\u查询(“从商店中选择id”)
然后稍后mysql\u查询(“从product\u表中选择product\u name,其中shop\u id=$shops['id'])代码>其中shops.id和products.shop\u id都是索引的这很有意义,将尝试遵循它。。。谢谢你的帮助。谢谢Elijan,这个概念看起来很像《盗梦空间》中的电影,“一个阵列一个阵列,我们必须更深入。”:-)但它解决了我的问题…@WaqarAkbar。哈哈,是的。我已经更新了不同的和更优雅的解决方案的评论,你可以按店铺id查询店铺产品,因为一般情况下,选择*是不好的,所以我应该使用每个列名,而不是*。。。使用select*。??@WaqarAkbar有什么问题吗?理想情况下,如果您只使用该coulmn,则是。根据操作,该列应该在数据库中建立索引,以便更快地查询。因此,例如$q=mysql\u查询(“从商店中选择id”)
然后稍后mysql\u查询(“从product\u表中选择product\u name,其中shop\u id=$shops['id'])代码>其中shops.id和products.shop\u id都是索引的这很有意义,将尝试遵循它。。。谢谢你的帮助。