Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 17.05.2015, 16:18
Аспирант
Отправить личное сообщение для arhat78 Посмотреть профиль Найти все сообщения от arhat78
 
Регистрация: 06.04.2015
Сообщений: 52

laimas, благодарю и на этом Буду изучать новое построение конструкции корзины и всё, что с ней связано. Надеюсь, получится.
Ответить с цитированием
  #12 (permalink)  
Старый 20.05.2015, 11:23
Аспирант
Отправить личное сообщение для arhat78 Посмотреть профиль Найти все сообщения от arhat78
 
Регистрация: 06.04.2015
Сообщений: 52

laimas, в общем смотрел я, читал, пытался вникнуть, и понял, что здесь вообще ничего не понял Сколько видел уроков с объяснениями, там была моя структура корзины. А здесь, у вас - капец просто. Я уверен, что если грамотно, по вашему корзину построить, то будет всё по науке. Но вот где найти уроки с объяснениями.....?
Ответить с цитированием
  #13 (permalink)  
Старый 20.05.2015, 11:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Не знаю, где эти уроки по корзине "как у меня" можно увидеть, но может лучше стоит подумать, зайдя с другой стороны?

Суть вопроса была такова - есть у меня боты разных размеров и когда добавляется что-то в корзину, все нормально. Но если в корзину добавляют боты другого размера, то прежний добавленный размер теряется.

Будем рассуждать, и для начала забиваем и на РНР, и на все остальные языки, а будем оперировать исключительно блокнотом и карандашом.

Есть магазин, в котором туфли: "Туфли черные", цена 100, размеры 40, 41; "Туфли красные", цена 110, размеры 41, 42; "Туфли белые", цена 150, размер 42.

Выбираем "Туфли черные", одну пару размера 40, и пишет в блокноте:

"Туфли черные": 100 руб., 40 разм., 1 шт.

Затем выбрали еще "Туфли красные", добавляем в блокнот запись и в нем уже будет так:

"Туфли черные": 100 руб., 40 разм., 1 шт.
"Туфли красные": 110 руб., 41 разм., 1 шт.


Затем решили добавить еще "Туфли черные", но 41 размера и две пары. Вопрос - как выгоднее записать этот выбор в блокноте, так:

"Туфли черные": 100 руб., 40 разм., 1 шт.
"Туфли красные": 110 руб., 41 разм., 1 шт.
"Туфли черные": 100 руб., 41 разм., 2 шт.


или так:

"Туфли черные": 100 руб., 40 разм., 1 шт., 41 разм. 2 шт.
"Туфли красные": 110 руб., 41 разм., 1 шт.


?
Ответить с цитированием
  #14 (permalink)  
Старый 20.05.2015, 12:02
Аспирант
Отправить личное сообщение для arhat78 Посмотреть профиль Найти все сообщения от arhat78
 
Регистрация: 06.04.2015
Сообщений: 52

Как по мне, то первый вариант....(это я про вывод в корзине)
Сообщение от laimas Посмотреть сообщение
"Туфли черные": 100 руб., 40 разм., 1 шт.
"Туфли красные": 110 руб., 41 разм., 1 шт.
"Туфли черные": 100 руб., 41 разм., 2 шт.
А вот оптимально хорошо выглядит второй вариант.

А уроки про "магазин и корзину" - могу ссылку сбросить
Ответить с цитированием
  #15 (permalink)  
Старый 20.05.2015, 13:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Не надо мне ссылок, ибо они кроме "порослей вредного" ничего вам не принесли, так как выбранный вами вариант, это как раз есть самый неудобный даже для блокнота с карандашом, не говоря о компьютере.
Не дай бог и я заражусь.

Он не удобен тем, что при подсчетах нужно будет пробегать по всем строкам в блокноте, чтобы найти одни и те же туфли, и если выбор туфлей будет на нескольких его страницах, то такой расчет будет затруднителен. А вот при втором варианте каждая запись, это какие-то одни туфли, для которых описаны различные наборы, и расчет всего, это удобно получить сумму за туфли, затем последовательно суммируя ее с суммой следующей строки. Выискивать записи среди страниц блокнота не придется, а просто перелистываем их когда сумма на текущей просчитана.

Легенда гласит - труд сделал из обезьяны человека, и когда он понял, что считать на косточках не удобно он придумал компьютер. А чтобы компьютер понимал что от него хотят, человек придумал инструкции для него, которые облек в понятие "язык мышления для компьютера". Эти инструкции описывают конкретные представления человека, например, bcdiv(a, b, c) означает - "взять косточку а, разбить ее на b частей, и кроме полученных частей собрать еще и с осколков". А набором таких различных инструкций можно описать задачу, которую и выполнит компьютер, например, сколько литров наваристого борща получится из косточки разделенной на части, включая и осколки.

То есть компьютер всего лишь решает задачу описывающую чисто наши представления о быте, в данном случае "борщ". Чем глубже и разностороннее будут наши представления о мире, чем более удачно мы сможет представлять решения проблем, тем более выгодные инструкции для компьютера, нами придуманные, мы выберем для описания этих представлений и решения проблем, тем оперативнее компьютер выдаст результат.

Компьютер выполняет ровно то, что мы от него хотим. А вот если бы наш мир появился не согласно легенде, а в результате большого взрыва (как и вселенной) появились машинные инструкции, которые породили компьютер, которые породили бы нас... Вот тогда все было бы иначе - компьютер бы разбил а на b частей и с осколков, и напечатал - "это борщ, ешь и не гавкай".

Есть такой лозунг - "Мы не рабы, рабы не мы!". Мы не рабы машин, мы управляем ими. Хотя айпады поработили человека, но это из области привычек и потребления, "ум" в айпады все равно человек вложил. Поэтому начинать надо с изначального - с представления того, что я хочу от машины, и только потом облекать желание в инструкции. А тут блокнот и карандаш тоже могут помочь. И вообще, существуют блок-схемы, посредством которых можно описать компьютерную программу. Такие схемы не содержат конкретных функций языка, но они хорошо иллюстрируют алгоритм программы, ее конструкцию, блоки, важные узлы.

Попробуйте с блокнотом, думаю польза будет, а нет, ну тогда не знаю. Расписывать же уроки и некогда, да и не всегда охота писать много.

Последний раз редактировалось laimas, 22.05.2015 в 02:04.
Ответить с цитированием
  #16 (permalink)  
Старый 21.05.2015, 12:10
Аспирант
Отправить личное сообщение для arhat78 Посмотреть профиль Найти все сообщения от arhat78
 
Регистрация: 06.04.2015
Сообщений: 52

laimas, вот у меня есть сессия
$_SESSION['cart'] = array()


А мне, получается, нужно записывать этот массив таким образом?
$_SESSION['cart'] = array(
       209 => array(
          'count' => 3,
          'price'  => 1500,
          'prop' => array('size'=>array(42 => 2, 41 => 1), 'name' => 'Галоши')
       ),
  
       150 => array(
          'count' => 2,
          'price'  => 1000,
          'prop' => array('size'=>array(40 => 1, 41 => 1), 'name' => 'Туфли')
       )
);


И у меня, получается, много лишнего написано? Этот кэйс :
case('add_to_cart'):
      $id = $_GET['id'];
      $size = $_GET['size'];
      $_SESSION['cart_size'][$id] = $size;
      
      $add_item = add_to_cart($id);
      $_SESSION['total_items'] = total_items($_SESSION['cart']);
      $_SESSION['total_price'] = total_price($_SESSION['cart']);
      header('Location:index.php?view=product&id='.$id);
   break;


И вот это, функция добавления в корзину:
function add_to_cart($id, $size)
{
    if(isset($_SESSION['cart'][$id]))
     {
        $_SESSION['cart'][$id]++;
        return true;
     }       
    else
    {
        $_SESSION['cart'][$id] = 1;
        return true;
    }
        return false; 
}


А как же быть с этими функциями подсчёта общего количества и общей суммы?:

function total_items($cart)
{
    $num_items = 0;
    
    if(is_array($cart))
    {
        foreach($cart as $id => $qty)
        {
            $num_items +=  $qty;
        }
        return $num_items;
    }
}



function total_price($cart)  
{
    $total_price = '0.00';
    
    global $link;
    
    if(is_array($cart))
    {
        foreach($cart as $id => $qty)
        {           
            $result = $link->query("SELECT price FROM products WHERE id='$id' ");
                       
            if($result)
            {
                $item_price = mysqli_fetch_assoc($result);
                $total_price +=  $item_price['price'] * $qty;
            }          
        }
        return $total_price;         
    }
}


В общем, что делать???? Как исправляться???? Неужели потратил год в пустую????
Ответить с цитированием
  #17 (permalink)  
Старый 21.05.2015, 19:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Кто задавал вопрос о различных размерах ботинок? Если размеры различные и при этом это один ID товара, то каким образом можно узнать что заказаны те или иные его размеры поступая вот таким образом $_SESSION['cart'][$id]++; ?
Если же каждый ID товара может описывать только один размер, тогда да можно было бы так поступать - нет такого ID в корзине, значит добавляем, есть, значит увеличиваем его количество.

Организация данных определяется бизнес моделью магазина и для тех, которые торгуют штучными товарами, автомобилями к примеру, это будет одна организация их, а для магазина обуви совсем иная. С этого надо начинать, а не с ходу породить массив в сессии увеличивая количество их элементов, а потом задаваться вопросом почему не получается.
Ответить с цитированием
  #18 (permalink)  
Старый 21.05.2015, 22:27
Аспирант
Отправить личное сообщение для arhat78 Посмотреть профиль Найти все сообщения от arhat78
 
Регистрация: 06.04.2015
Сообщений: 52

Я понимаю, что здесь прибавляется в корзине только определённый товар - $_SESSION['cart'][$id]++; А можно в эту сессию добавить каким то образом идентификатор или ключ размера?
Ответить с цитированием
  #19 (permalink)  
Старый 22.05.2015, 01:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Добавляйте, а каким-то каким образом, понятия не имею, попробуйте "как-то".

Я описывал структуру корзины, которая описывает наборы не только товаров, но и учитывает их характеристики, в данном случае размеры, а могут быть еще и цвет, и другое. Чем эта структура не устраивает ваш магазин?
Ответить с цитированием
  #20 (permalink)  
Старый 22.05.2015, 17:46
Аспирант
Отправить личное сообщение для arhat78 Посмотреть профиль Найти все сообщения от arhat78
 
Регистрация: 06.04.2015
Сообщений: 52

laimas, сейчас для меня эта структура без пошаговых объяснений, как переводчику заглянуть в учебник по термоядерной динамике

Пробовал вот такой составной ключ:
$add_item = add_to_cart(sprintf('id%ds%d', $id, $size));

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

Ещё пробовал такую проверку в корзине, но от этой проверки толка нет...:

if ($product !== get_product($id)) 
      {
       echo $_GET('id');
      }
     if ($b['size'] !== $_SESSION['cart_size'][$id]) 
      {
       echo $_GET['size'];
      }
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить, что есть поле селект у товара borus Общие вопросы Javascript 12 23.04.2014 22:14
Вывод выбранных данных и проверка checkbox MasterHrust Javascript под браузер 3 28.09.2011 17:44
вывод jquery cookie как вывести данные из куки klubnichkaaa AJAX и COMET 2 12.08.2011 13:45
Вывод переменных MasterHrust Javascript под браузер 4 03.08.2011 15:41
Вывод данных в Друпал 6 из MySQL, небольшая работа torquemada Работа 1 22.05.2011 17:05