结合MySQL结果基于同一制造商的PHP

时间:2012-09-18 04:12:08

标签: php mysql arrays e-commerce

我一直在电子商务网站www.lady-elegance.co.uk上工作,其主要产品是鞋子。该网站运行良好,显示类别等所有产品,但我想做的是能够将每种尺寸的每只鞋作为后端的单独产品,以保持库存水平的记录。

例如:尺寸10中的“鞋1”具有ID 00001,尺寸11中的“鞋1”具有ID 00002,依此类推。

创建每个产品很简单,但我想要的是能够通过下拉显示“鞋1”一次,每个尺寸对应于每个产品ID,仅显示其中的尺寸库存。

每种鞋类型显然都有自己的制造商产品ID,我可以使用它来识别该组,但如何将相同的组合在一起。

我无法理解它的逻辑。请有人帮忙!

我发现这个答案似乎很相似,但需要一些帮助来理解它(Click Here

1 个答案:

答案 0 :(得分:0)

我不确切知道您的数据库是什么样的,但您可以这样做:

function getShoes($manufacturer, $name=''){
    $manufacturer = mysqli_real_escape_string($manufacturer);
    $sql = 'SELECT id, name, size FROM shoes WHERE manufacturer = "'.$manufacturer'" AND in_stock > 0 ';
    if($name){
        $name = mysqli_real_escape_string($name);
        $sql .= 'AND name = "'.$name.'" ';
    }
    $sql .= 'ORDER BY name, size';
    $result = mysqli_query($sql);  //Results like this: id:00001, name:shoe1, size:10
    while($row = mysqli_fetch_array($result)){       // id:00002, name:shoe1, size:11
        $rows[$row['name']][] = $row;  //group them by name (assuming you have more
    }                                  //than one shoe type per manufacturer)

    foreach($rows as $name=>$shoes){
        echo('<select name="'.$name.'">');
        foreach($shoes as $shoe){
            echo('<option value="'.$shoe['id'].'">'.$shoe['name'].' - '.$shoe['size'].'</option>');
        }
        echo('</select>');
    }
}

现在在您的HTML中,如果您调用此功能,您将获得由您指定的制造商生产的所有鞋子。例如,getShoes('nike');将获得Nike生产的所有鞋子,并为您提供所有选择框。您可能想要更具体一点,因为您不希望Nike在Nike制造的Shoe1页面设置中为每一双鞋做出选择。那么你就可以做getShoes('nike', 'shoe1');而这只会给你Nike的Shoe1的选择框。希望这可以帮助。 :)