Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #71 (permalink)  
Старый 01.06.2015, 13:12
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Да, в этой теме вы laimas показали свою интеллигентскую сущность. Интеллигент это человек небельмеса в вопросе, но начитавшийся предисловий и умеющий заковыристо повторять за собеседником то же самое, другими словами и более развернуто, с цитатами, с глубокими мыслями. Создавая впечатление профессионала и одновременно никак не информируя визави, интеллигент добивается вечной зависимости собеседника от своих пустых речей. Человек никогда не поумнеет общаясь с интеллигентом и самостоятельно ничего не сделает, просто потому что не научился ничему в этом общении. Самое злое что и вместе с интеллигентом он ничего не сделает, ибо интеллигент вовсе не специалист, который так же ставит в зависимость от себя людей, но специалист хотя бы за них все и делает. И - никогда ничего не делает, а только молотит о высшем.
Ответить с цитированием
  #72 (permalink)  
Старый 01.06.2015, 13:13
Аспирант
Отправить личное сообщение для arhat78 Посмотреть профиль Найти все сообщения от arhat78
 
Регистрация: 06.04.2015
Сообщений: 52

kostyanet, попробовал разобраться в вашем коде с тремя таблицами, со списком, в принципе вышло. А в корзину попадает товар по старому, Array ( [2] => 3 [3] => 1 ) . Идёт перезапись старого размера новым. Карточка товара пока всё равно выводится таким образом:
<table align="center" style="border-width: 1; border-style: dashed" class="product" width="200" height="200">
            <tr>
                <td valign="top"   align="center" cellpadding="5" cellspacing="5">
                    <div><a href="#"><img src="userfiles/<?=$product['image']?>" width="150" height="100"     alt="" /></a></div>
                    <div class="description">
                        <div class="product-name"><a href="#"><?=$product['title']?></a></div>
                        <div class="product-price">Цена: <?=$product['price']?> руб</div>                 
                    </div>
                </td>
                
                <td valign="top">
                    <div><?=$product['description']?></a></div>              
              
                   <form action="index.php" method="get">
                   <fieldset> Размер:
<input type="hidden" name="view" value="add_to_cart">
<input type="hidden" name="id" value="<?=$product['id']?>">
<select name="size">

<?php

$result = $link->query("select
`p`.`title`,
`s`.`size`
from `relations` as `r`
left join `products` as `p`
on `p`.`id`=`r`.`products_id`
left join `sizes` as `s`
on `s`.`id`=`r`.`size_id`
where `r`.`products_id`='$id' ");

while ($b = mysqli_fetch_assoc($result))
{
      echo  "<option   value='".$b['size']."'>"   .$b['size'].  " </option>";
} 
?>
</select></fieldset>
<input type=image src="userfiles/8.jpg" width="60" height="60" value="Добавить в корзину">
</form> 
                     </td>
            </tr>
    </table>


И размеры попадают в корзину через сессию:
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;


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

Так и не допёр, что за $escaped_quoted_path, точнее зачем это нужно и как выоводить -
select * from model where path = $escaped_quoted_path;
?

И то же самое с $res['id'] в
prods.model_id = $res['id']
.....

Последний раз редактировалось arhat78, 01.06.2015 в 17:35.
Ответить с цитированием
  #73 (permalink)  
Старый 01.06.2015, 16:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

kostyanet
Моя практика говорит о том, что под тот базис, что есть у автора, много чего ты ту вещал, это выстрелы в холостую. Послушаешь таких речей, так надо писать учебники начиная с ООП, причем не поясняя вообще что это и что дает, и заканчивая приоритетами операторов.

Не понимаешь ты этого, просто заносит тебя в понос, пальцы растопырил и .... Было бы все так просто, были бы все гениями.

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

Полвечера сражаюсь с кодировкой "utf8mb4_general_ci". Нашёл подсказку на англоязычном сайте, пришлось немного поменять код в файле "DatabaseInterface.class.php". Теперь хоть ошибки на английском....
Ответить с цитированием
  #75 (permalink)  
Старый 01.06.2015, 19:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от kostyanet
Создавая впечатление профессионала и одновременно никак не информируя визави
Слов нет. Выше плоды твоего пояснения. А может надо было проще 2 + 2 = 4, а уже потом 2 * 2 = 4?

Вот вся сущность поста:
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;

Толку трещать о высоких материях, если пока простых вещей не знаем. Надоели вы, горе "учителя" до нельзя.

arhat78,
Простой вопрос - есть массив А, есть массив В, как можно, ну или правильнее какими средствами можно элементы/значения массива В добавить в массив А?
Ответить с цитированием
  #76 (permalink)  
Старый 02.06.2015, 08:58
Аспирант
Отправить личное сообщение для arhat78 Посмотреть профиль Найти все сообщения от arhat78
 
Регистрация: 06.04.2015
Сообщений: 52

laimas, вот это простое сложение двух массивов: $result = $arrayА + $arrayВ; есть ещё функция array_merge;

Но у меня есть ещё (может и лишние функции вычисления total_items, total_price):

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;         
    }
}
?>


И add_to_cart (уже показывал эту бедную на функционал функцию):

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;
}
Ответить с цитированием
  #77 (permalink)  
Старый 02.06.2015, 09:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от arhat78
$result = $arrayА + $arrayВ; есть ещё функция array_merge;
Правильно, а еще есть циклы while, for, foreach. array_merge, это тоже обход циклом, явно просто мы в этом случае его не пишем.

Но есть одна интересная деталь в поведении массивов при $arrayА + $arrayВ и array_merge(). Если ключи массива цифровые (индексный массив), то в первом случае ключи массива А, которые имеются и в массиве В будут перезаписаны его значениями, а при использовании array_merge() нет. И эту особенность ведь тоже можно использовать. А в случае строковых ключей в обоих случаях результат будет одинаков. А есть еще функции пересечения/расхождения массивов, а так же замены array_replace и array_replace_recursive.

В общем набор большой, и общелкать какой-то массив проблем нет. Проблема ваша в другом - в корзину попадает товар по старому, Array ( [2] => 3 [3] => 1 )

А по по новому тогда как? Я вам задавал вопросы и не раз - как планируется торговать, как будут набираться товары, поштучно или же можно набирать количество (это по мимо размеров)... Не на один вопрос я ответа не видел. А ведь с того надо начинать. И чтобы не переписывать код обслуживающий корзину, взаимодействия клиент-сервер нужна такая структура таблицы, которая бы позволяла добавлять в нее элементы описывающие какие-то доп. характеристики товара, но код при этом нужно будет не переписывать.

Все что я писал, это лишь примеры. Я мог бы и так написать - сервер получает от клиента такой массив описывающий выбор - Array(125, 42, 41). Можно и так, но это уже совсем иное, и иные правила торговли ботинками. Не надо просто копировать, не научитесь вы так ничему. Тогда уж не учится, а плюнуть на все это, у хотстера оплатить услугу "конструктор магазина", сконструировали и торгуем ботинками. Просто и голова не болит.
Ответить с цитированием
  #78 (permalink)  
Старый 02.06.2015, 10:01
Аспирант
Отправить личное сообщение для arhat78 Посмотреть профиль Найти все сообщения от arhat78
 
Регистрация: 06.04.2015
Сообщений: 52

Так я же не просто "копирую". За год я понимаю практически весь код, который написан. А вот новые подходы, которые вы показываете-подсказываете - пока тяжело даются. Я давал ссылку на магазин - там вроде как понятно, как выбирается ботинок и размеры к нему. И я не для коммерческих целей этим занимаюсь. Примерно год назад решил попробовать, что это такое за РНР и получится ли. Заинтересовало. Я этим занимаюсь в свободное от работы время, и чисто для себя.

Последний раз редактировалось arhat78, 03.06.2015 в 19:41.
Ответить с цитированием
  #79 (permalink)  
Старый 02.06.2015, 11:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Да, я помню об этой ссылке, да, был там. Но ведь вопрос возник какой - как быть, если размеров не один а несколько? И тут началось....

Не надо копировать, это примеры и их надо разбирать, я же не пишу их под конкретный ваш скрипт. Забросьте на время этот магазин, и сделайте проще - одну страницу, в которой и РНР код и html. Базу товаров на этой странице имитируйте обычным массивом - первичные ключи его, это ID товаров, а массивы под ними, это размеры и цена товара.

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

Этого то ведь будет достаточно чтобы усвоить наконец-то инструменты РНР работы с массивами или нет? Думаю, что да.

Когда будете использовать этот "учебный" скрипт задайтесь вопросом - будет ли удобно, если выбор одного размера одного товара, это отправка формы и $_SESSION['cart_size'][$id]++ или же нет, и вообще почему $_SESSION['cart_size'] это вообще нечто отдельное, а не как часть корзины и определяющая характеристики товара выбранного покупателем.

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

Больше я не знаю что еще сказать, ведь об одном и том же уже какой раз говорится.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить, что есть поле селект у товара 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