Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с chekcbox'ом
 
 автор: valerka1   (26.11.2006 в 17:05)   письмо автору
 
 

Помогите плиз!
Уже неделю, сижу немогу разобраться.
Все темы пересмотрел ничего подобного не нашел.
Вообщем это интернет-магазин.

Нужно реализовать вот, что (скриншот прикреплен)
после колонки ввода количества товара нужно поставить чекбокс, который работал так,
если стоит галочка, то товар в корзину попадет,
если нет галочки, то товар в козину не попадает

Количество ввода товара в корзину работает.

Вот код из файла

<form name="cart_multi" method="post" action="<?php echo tep_href_link(FILENAME_SHOPPING_CARTtep_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 //////////////////////

Подскажите как правильно реализовать.
Спасибо.

   
 
 автор: aexb   (26.11.2006 в 18:21)   письмо автору
 
   для: 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'ов

   
 
 автор: malish   (26.11.2006 в 18:25)   письмо автору
 
   для: valerka1   (26.11.2006 в 17:05)
 

Могу подсказать идею: при создании корзины создаешь чекбоксы с именами например num_1, гда 1-это id товара, а потом в цикле проверяешь либо num_1 и т.д. пустые или нет, если нет то значит галочка поставлена...

   
 
 автор: valerka1   (26.11.2006 в 19:40)   письмо автору
 
   для: 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 эсть, но как его заставить работать?
Или я уже чето нетак сделал?

   
 
 автор: malish   (27.11.2006 в 10:53)   письмо автору
 
   для: 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] будет его кол-во
    }
}

ну что то вроде этого

   
 
 автор: aexb   (27.11.2006 в 12:51)   письмо автору
 
   для: 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
();
?>


Корзину в этом примере, конечно, нужно переделывать, но суть, думаю, станет понятна.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования