Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (13)

Лучшие ответы пользователя

Все ответы (10)
  • Как выполнить функцию один раз?

    @sergyx
    отсюда
    function once(fn, context) { 
        var result;
    
        return function() { 
            if(fn) {
                result = fn.apply(context || this, arguments);
                fn = null;
            }
    
            return result;
        };
    }
    
    // Пример использования
    var canOnlyFireOnce = once(function() {
        console.log('Запущено!');
    });
    
    canOnlyFireOnce(); // "Запущено!"
    canOnlyFireOnce(); // Не запущено
    Ответ написан
  • Где найти блок схемы php js приложений?

    @sergyx
    Давай попробуем декомпозировать задачу на самом примитивном примере.

    Определим действия, которые должен совершить покупатель для покупки.
    1-Зайти на главную страницу магазина. Должна быть [Главная страница магазина]
    2-Увидеть каталог всевозможных товаров. Должна быть [Страница каталога товаров] на которой можно увидеть список доступных для покупки товаров. Также в БД должна быть [таблица товаров].
    3-Перейти к описанию конкретного товара. Должна быть [Страница описания конкретного товара]
    4-На странице описания товара нажать на кнопку "Купить"
    4.1 По нажатию на кнопку "Купить" совершается действие помещения товара в корзину покупателя.
    Здесь надо где-то хранить эту корзину (выбранные к покупке товары), например, будем добавлять в куки браузера ид только что выбранного товара.
    5-По нажатию на кнопку "Корзина" загружается страница с выбранными покупателем товарами. Должна быть страница [Корзина покупателя]
    6-По нажатию на кнопку "Оформить заказ" загружается страница со списком выбранных к покупке товаров, формой данных покупателя (адрес и т.п.) и кнопкой подтверждения заказа. Должна быть страница [Оформление заказа].
    7.1 По нажатию на кнопку "Подтвердить покупку" в системе создается новая сущность Заказ. В БД должна быть [таблица заказов]
    Владелец магазина должен иметь возможность просмотреть эту таблицу, но это уже админка, ее рассматривать не будем.

    Итого, при первом приближении имеем:
    БД:
    --таблица товаров
    --таблица заказов

    Открытая часть магазина (то, что доступно покупателю):
    1--главная страница. Содержит:
    -ссылка на каталог товаров
    -ссылка на корзину
    -ссылка на оформление заказа
    2--страница каталога товаров. Содержит:
    -список товаров, где напротив каждого товара стоит ссылка на страницу конкретного товара
    3--страница описания конкретного товара. Содержит:
    -описание товара
    -кнопку "купить"
    4--страница корзины. Содержит:
    -список выбранных для покупки товаров
    -кнопку "оформить заказ"
    5--страница оформления заказа. Содержит:
    -список выбранных для покупки товаров
    -поле адреса для доставки
    -кнопку "подтвердить заказ"
    Т.е. уже можем нарисовать структуру страниц открытой части сайта, которые можно представить в виде отдельных квадратиков, со стрелками друг на друга, например
    ---главная страница---
           каталог товаров ---> [страница каталога]
    	             корзина ---> [страница отображения корзины]	  
    			   и т.д.
    ----------------------

    Углубляемся дальше на примере 1-помещения товара в корзину и 2-отображения корзины:
    1-помещение товара в корзину.
    Находясь на странице описания товара и нажав на кнопку "купить", необходимо проделать следующее.
    (храним выбранные товары в куках)
    --прочитать куки пользователя
    --извлечь из них идешки уже имеющихся в куках товаров
    --добавить к этому списку ид выбранного товара
    --перезаписать этот список в куки
    Что для этого надо (углубляемся еще):
    На странице описания товара надо иметь ссылку типа /product.php?action=add-to-cart&id={ид-товара}, по нажатию на которую передается управление скрипту product.php c действием add-to-cart.
    product.php, определив, что задано действие add-to-cart
    --читает параметр _GET[id]
    --читает из кук пользователя уже сохраненные там идешки (их может там еще не быть)
    --добавляет к списку сохраненных идешек только что прочитанный параметр _GET[id]
    --перезаписывает в куки пользователя новый список идешек
    --отображает страницу описания этого же продукта, как-то оформляем, что товар уже добавлен в корзину.

    2-отображение корзины:
    Где-то на главной странице имеем ссылку на корзину типа /cart.php
    Скрипт cart.php:
    --читает из кук пользователя сохраненные там идешки (мы уже это делали выше, значит это можно оформить в отдельную функию)
    --делает из таблицы товаров выборку тех товаров, идешки которых записаны в куках
    --отображает страницу корзины, в которой выводятся только что выбранные из БД товары

    И т.д. и т.п. по каждому пункту.
    Т.е.
    -сначала делаем описание всех возможных действий пользователя
    -по нему формируем набор страниц, с соответствующим интерфейсом (ссылки, кнопки, формы, списки, деревья и т.д.), на которых эти действия он может реализовать.
    -для каждого действия пользователя на сервере/фронте создаем соответствующие обработчики, которые, исходя из собственно заданного действия и состояния системы на тот момент, выполняют какие-то действия: читают/записывают что-то в БД/куки, запрашивают что-то у пользователя или что-то ему отображают.
    -каждый пункт можно оформить в любую графическую схему со стрелками/алгоритм или словесное описание.
    -каждый пункт можно детализировать в подпункты, в под-подпункты и т.д.
    ps
    для начала рекомендую начать с чего-то более простого, например, с простейшего блога, гостевой книги или т.п.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (2)