|
|
|
| Помогите плиз!
Уже неделю, сижу немогу разобраться.
Все темы пересмотрел ничего подобного не нашел.
Вообщем это интернет-магазин.
Нужно реализовать вот, что (скриншот прикреплен)
после колонки ввода количества товара нужно поставить чекбокс, который работал так,
если стоит галочка, то товар в корзину попадет,
если нет галочки, то товар в козину не попадает
Количество ввода товара в корзину работает.
Вот код из файла
<form name="cart_multi" method="post" action="<?php echo tep_href_link(FILENAME_SHOPPING_CART, tep_get_all_get_params(array('action')) . 'action=add_multi', 'NONSSL'); ?>">
.
.
.
case 'PRODUCT_LIST_BUY_NOW':
$lc_align = 'center';
$lc_text = '<input type="text" name="add_id['.$number_of_products.']" value="0" size="4">';
$lc_text .= '<input type="hidden" name="products_id['.$number_of_products.']" value="'.$listing['products_id'].'">';
break;
}
.
.
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td align="right" class="main"><?php echo tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?></td>
</tr>
</table>
</form>
|
Во втором
///////////////////////////////////////// Products Multi //////////////////////
if ($HTTP_GET_VARS['action'] == 'add_multi') {
$parameters = array('action', 'pid', 'products_id');
}
///////////////////////////////////////// Products Multi //////////////////////
switch ($HTTP_GET_VARS['action']) {
///////////////////////////////////////// Products Multi //////////////////////
// multi_product_add
case 'add_multi':
for ($i=0; $i<=sizeof($HTTP_POST_VARS['products_id']);$i++) {
if($_POST['add_id'][$i] >= 1)
$cart->add_cart($HTTP_POST_VARS['products_id'][$i], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'][$i], $HTTP_POST_VARS['id'][$i]))+($HTTP_POST_VARS['add_id'][$i]), $HTTP_POST_VARS['id'][$i]);
}
tep_redirect(tep_href_link(FILENAME_DEFAULT, tep_get_all_get_params($parameters), 'NONSSL'));
break;
///////////////////////////////////////// Products Multi //////////////////////
|
Подскажите как правильно реализовать.
Спасибо. | |
|
|
|
|
|
|
|
для: valerka1
(26.11.2006 в 17:05)
| | Надеюсь, что понял Вас правильно. Попробуйте плясать вот отсюда:
<?//файл index.php?>
<form name="forma" action="do.php" method="POST">
<?
for ($i=0; $i<15; $i++) {
?>
<input type="checkbox" name="arr[]" value="tovar_<?=$i; ?>" id="<?=$i; ?>"><label for="<?=$i; ?>">Товар № <?=$i; ?></label><br>
<?
}
?>
<input type="submit" value="Добавить в корзину">
</form>
|
<?
// Файл do.php
$arr=$_POST['arr'];
echo "В корзине находятся товары:<br>";
foreach ($arr as $key=>$value) {
echo $value."<br>";
}
?>
|
Массив в первом файле я ввел только для отображения большого количество checkbox'ов | |
|
|
|
|
|
|
|
для: valerka1
(26.11.2006 в 17:05)
| | Могу подсказать идею: при создании корзины создаешь чекбоксы с именами например num_1, гда 1-это id товара, а потом в цикле проверяешь либо num_1 и т.д. пустые или нет, если нет то значит галочка поставлена... | |
|
|
|
|
|
|
|
для: malish
(26.11.2006 в 18:25)
| |
case 'PRODUCT_LIST_BUY_NOW':
$lc_align = 'center';
$lc_text = '<input type="text" name="add_id['.$number_of_products.']" value="0" size="4">'.'<input type="checkbox" name="add_id['.sizeof($list_box_contents).']" value="??????">';
$lc_text .= '<input type="hidden" name="products_id['.$number_of_products.']" value="'.$listing['products_id'].'">';
break;
}
|
chekcbox эсть, но как его заставить работать?
Или я уже чето нетак сделал? | |
|
|
|
|
|
|
|
для: valerka1
(26.11.2006 в 19:40)
| | ну смотри я просто не знаю где и как ты хранишь то что внесли в корзину... допустим ты хранишь id и кол-во в каком то массиве $products('id'=>'quantity'), тогда при выводе на экран в цикле проходишь весь этот массив. получится что-то вроде этого:
foreach($products as $key=>$value)
{
$lc_text = '<input type="text" name='quantity[".$key."]' value='".$value."' size="4">'.'<input type="checkbox" name='num_".$key."' >';
}
|
тогда обработчик будет выглядеть так:
foreach($_POST as $key=>$value)
{
if (substr($key,0,4) == 'num_') // Значит поставили галочку
{
$id = intval(substr($key, 4)); // Занесли в переменную $id выбранного товара
// А здесь обработка - в $id - выбранный товар, а в $_POST['quantity'][$id] будет его кол-во
}
}
|
ну что то вроде этого | |
|
|
|
|
|
|
|
для: malish
(27.11.2006 в 10:53)
| | Вот Вам работающий пример. Только добавьте значения Вашей БД (логин, пасс итд)
Дамп таблиц:
CREATE TABLE `store_basket` (
`id` int(11) NOT NULL auto_increment,
`part_id` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
CREATE TABLE `store_data` (
`id` int(11) NOT NULL auto_increment,
`part_no` varchar(10) NOT NULL default '',
`part_name` varchar(50) NOT NULL default '',
`desc` text NOT NULL,
`price` varchar(5) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
INSERT INTO `store_data` VALUES (1, '15286', 'Шина Bridgestone 13" 175/70', 'Это - описание продукта. Bridgestone 13"', '2000');
INSERT INTO `store_data` VALUES (2, '1257', 'Стеклоомыватель', 'Описание для стеклоомывателя', '89');
INSERT INTO `store_data` VALUES (3, '5577', 'Щетка очистительная Finwhale', 'Описание очистительной щетки', '150');
INSERT INTO `store_data` VALUES (4, '64847', 'Диск литой OZ', 'Описание для диска OZ', '2600');
INSERT INTO `store_data` VALUES (5, '32445', 'Какая-то запчасть', 'Тут просто текст', '666');
INSERT INTO `store_data` VALUES (6, '66999', 'Карта России', 'А че тут писать? Карта она и есть карта.', '99');
|
Файл index.php
<style>
table {width: 90%; border: 0; border-collapse: collapse;}
td {border: 1px solid gray;}
</style>
<?
$db_name="";
$db_host="";
$db_user="";
$db_password="";
mysql_pconnect($db_host, $db_user, $db_password) or die("Cannot connect to MySQL Server");
mysql_select_db($db_name) or die("Cannot select DB");
mysql_query("SET collation_connection=cp1251_general_ci");
mysql_query("SET character_set_results=cp1251");
mysql_query("SET character_set_client=cp1251");
mysql_query("SET collation_database=cp1251_general_ci");
$sql=mysql_query("SELECT * FROM `store_data`");
?>
<form action="do.php" method="POST">
<table cellpadding=0 cellspacing=0>
<tr><td></td><td>Номер товара</td><td>Название</td><td>Описание</td><td>Цена</td></tr>
<?
while ($row=mysql_fetch_array($sql)) {
$part_no=$row['part_no'];
$part_name=$row['part_name'];
$desc=$row['desc'];
$price=$row['price'];
echo "<tr><td><input type=\"checkbox\" name=\"goods[]\" value=\"".$part_no."\"></td><td>".$part_no."</td><td>".$part_name."</td><td>".$desc."</td><td>".$price."</td></tr>\n";
}
?>
</table>
<input type="submit" value="Добавить в корзину">
</form>
<?
mysql_close();
?>
|
Файл do.php
<style>
table {width: 90%; border: 0; border-collapse: collapse;}
td {border: 1px solid gray;}
</style>
<?
$db_name="";
$db_host="";
$db_user="";
$db_password="";
mysql_pconnect($db_host, $db_user, $db_password) or die("Cannot connect to MySQL Server");
mysql_select_db($db_name) or die("Cannot select DB");
mysql_query("SET collation_connection=cp1251_general_ci");
mysql_query("SET character_set_results=cp1251");
mysql_query("SET character_set_client=cp1251");
mysql_query("SET collation_database=cp1251_general_ci");
foreach ($_POST['goods'] as $key=>$value) {
$sql=mysql_query("INSERT INTO `store_basket` VALUES (null, '".$value."')") or die("Cannot do the query");
}
$sql=mysql_query("SELECT * FROM `store_basket`");
?>
Товары в корзине:<br>
<table cellpadding=0 cellspacing=0>
<tr><td>Номер товара</td><td>Название</td><td>Описание</td><td>Цена</td></tr>
<?
while ($row=mysql_fetch_array($sql)) {
$part_id=$row['part_id'];
$sql_1=mysql_query("SELECT * FROM `store_data` WHERE `part_no`='".$part_id."' LIMIT 1") or die("Cannot select the basket good");
while ($bask_row=mysql_fetch_array($sql_1)) {
$part_no=$bask_row['part_no'];
$part_name=$bask_row['part_name'];
$desc=$bask_row['desc'];
$price=$bask_row['price'];
echo "<tr><td>".$part_no."</td><td>".$part_name."</td><td>".$desc."</td><td>".$price."</td></tr>\n";
}
}
?>
</table>
<?
mysql_close();
?>
|
Корзину в этом примере, конечно, нужно переделывать, но суть, думаю, станет понятна. | |
|
|
|