我有一个包含大量产品的数据库,我正在尝试输出它们。有些产品具有相同的itemid但尺寸不同。
我遇到的问题是将具有相同itemid的产品放入选择列表中。我可以正常输出产品,但我想要选择列表中的任何相同产品的tro group。
以下链接指向我的网站,其中包含硬编码产品列表http://operationbraveheart.org.uk/jcart/。
这是我的代码http://operationbraveheart.org.uk/jcart/testshop.php
输出的链接正在发生的事情是,不是为每个产品显示不同形式的负载,而是获得一个带有大量空选择列表的表单。
我想做类似的事情而不是硬编码,我想循环思考数据库,如果只有一个项目与该itemid,它是一个普通的形式,如果有多个具有相同的itemid,它去在选择列表中。
这是我的代码,shoudl输出产品
echo "<table border='0' id='gallery'>";
while ($row = $result->fetchrow()) {
$superitem[$row['itemid']][] = $row;
}
foreach($superitem AS $subitem) {
list($prodid,$item,$description,$price) = $subitem[0];
if ($count % NUMCOLS == 0) echo "<tr>"; # new row
echo '<td>';
//Your normal code up until the select box...
echo '<form method="post" action="" class="jcart">
<fieldset>
<input type="hidden" name="jcartToken" value="'.$_SESSION['jcartToken'].'" />
<input type="hidden" name="my-item-id" value="2" />
<input type="hidden" name="my-item-price" value="19.50" />
<input type="hidden" name="my-item-url" value="http://yahoo.com" />';
if(count($subitem) > 1) {
echo '<li><select name="my-item-name" id="foo">';
foreach($subitem AS $subsubitem) {
echo "<option value='".$subsubitem['size']."'>".$subsubitem['size']."</option>";
}
echo "</select></li>";
}
else {
echo '<input type="hidden" name="my-item-name" value="'.$item.'" />';
}
echo'<li>Price: $<span class="price">10.00</span></li>
<li>
<label>Qty: <input type="text" name="my-item-qty" value="1" size="3" /></label>
</li>
</ul>
<input type="submit" name="my-add-button" value="add to cart" class="button" />
</fieldset>
</form>';
echo '</td>';
$count++;
$counter++;
if ($count % NUMCOLS == 0) echo "</tr>\n"; # end row
}
if ($count % NUMCOLS != 0) {
while ($count++ % NUMCOLS) echo "<td> </td>";
echo "</tr>";
}
echo "</table>";
这是我的表结构和示例数据
CREATE TABLE `shop` (
`prodid` int(2) NOT NULL auto_increment,
`itemid` int(2) NOT NULL default '0',
`item` varchar(50) NOT NULL default '',
`size` char(2) NOT NULL default '',
`description` text NOT NULL,
`image` varchar(50) NOT NULL default '',
`price` float NOT NULL default '0',
PRIMARY KEY (`prodid`)
)
INSERT INTO `shop` VALUES (1, 1, 'Key Ring', '', 'Key Ring: This can be personalised', '', 2);
INSERT INTO `shop` VALUES (2, 2, 'Tableware', '', 'Tableware: Coasters and Table Mats', '', 3);
INSERT INTO `shop` VALUES (3, 3, 'Braveheart Bear', '', '7" Braveheart Bear (choice of T-Shrt)', '', 9.99);
INSERT INTO `shop` VALUES (4, 4, 'Bravehart Bear', '', '9" Braveheart Bear (choice of T-Shirt)', '', 11.99);
INSERT INTO `shop` VALUES (5, 5, 'Wristband', '', 'Operation Braveheart wristband', '', 2);
INSERT INTO `shop` VALUES (6, 6, 'Mug', '', 'Standard mug', '', 7.99);
INSERT INTO `shop` VALUES (7, 7, 'A5 jotter', '', 'Various designs', '', 0.75);
INSERT INTO `shop` VALUES (8, 8, 'Operation Braveheart T-Shirt', 'S', 'Operation Braveheart T-Shirt. All size in army green.', '', 6.99);
INSERT INTO `shop` VALUES (9, 8, 'Operation Braveheart T-Shirt', 'M', 'Operation Braveheart T-Shirt. All size in army green.', '', 7.99);
INSERT INTO `shop` VALUES (10, 8, 'Operation Braveheart T-Shirt', 'L', 'Operation Braveheart T-Shirt. All size in army green.', '', 8.99);
INSERT INTO `shop` VALUES (11, 8, 'Operation Braveheart T-Shirt', 'XL', 'Operation Braveheart T-Shirt. All size in army green.', '', 9.99);
我现在添加了print_r($ superitem);和数据库结构/数据
答案 0 :(得分:1)
产品阵列中没有“命名”元素。您会注意到数组键的$row['itemid']
在print_r输出中生成[]
,并且行生成的子数组中没有['size']
下标:
[0] => Array
(
[0] => 1
[1] => Key Ring
[2] => Key Ring: This can be personalised
[3] => 2
)
....没有'item_id',也没有'size'元素。据推测,0 =&gt; 1是item_id,3 =&gt; 2是大小。
因此,您的表单生成代码正常运行,但您的数据库提取失败。