ФорумПрограммированиеPHP для идиотов → Cookies

Cookies

  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 24 июня 2009 г. 11:15

    Задача состоит в том что бы сделать корзину товаров для интернет магазина. Решил делать ее на cookies. Но не совсем с этим рзобрался.

    Для примера сделал форму с чекбоксами.

    <form id="form1" name="form1" method="post" action="">
    <label>
    <input type="checkbox" name="pos[]" value="1" />
    </label>
    <label> 1 элемент <br />
    <input type="checkbox" name="pos[]" value="2" />
    </label>
    <label> 2 элемент <br />
    <input type="checkbox" name="pos[]" value="3" />
    </label>
    3 элемент<br />
    <label>
    <input type="checkbox" name="pos[]2" value="4" />
    </label>
    4 элемент
    <p>
    <label>
    <input type="submit" name="Submit" value="Добавить cookies" />
    </label>
    </p>
    <p>


    <?
    //В переменную $props заносим значения массива
    $props=$_POST["pos"];
    //Определяем является ли переменная $props массивом
    if (is_array($props))
    //Если да, то выполняется условие
    {
    //Выводим элементы массива в строку
    $sp_id = implode(",", $props);
    echo $sp_id; // Для проверки
    }

    //До этого момента все понятно.


    setcookie('n', $sp_id);
    ?>

    </p>
    </form>


    С чекбоксами и как выбираются их значения все понятно. Не понятки начинаются когда заношу переменную $sp_id в cookies. Делаю вот так setcookie('n', $sp_id); На сколько я понимаю переменная $sp_id сразу же заносится в cookies.
    Для вывода значения переменной писал: echo $_COOKIE['n'];.

    Вопрос! Как сделать так что бы при выборе чекбоксов их значения дополнялись в кукис. То есть выбрав чекбокс один появляется значение чекбокса 1. Потом выбрав чекбокс 2, значеное его приписалось к предыдущему. Сейчас выводятяс значения но только те которые я выбрал сейчас. А когда выбираю значения повторно, выводятся только повторно выбранные значения.

    И если можно скажите правильно ли я вообще делаю корзину таким образом. И почему в internet explorer'e значения переменной не выводятся.

    Спасибо.
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 24 июня 2009 г. 11:17, спустя 2 минуты 10 секунд

    в одном сценарии нельзя сразу записать в куки и прочитать из них.
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 24 июня 2009 г. 11:23, спустя 5 минут 24 секунды

    А если выбор значений и запись в куки у меня осуществляется на одной страницы, а чтение из кукисов на другой страницы, то при обновлении ее я так понимаю должны выводится все значения.. или я не прав?
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 24 июня 2009 г. 12:04, спустя 41 минуту 26 секунд

    я тебя не понимаю
    покажи код

  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 24 июня 2009 г. 12:16, спустя 11 минут 49 секунд

    Код который написал он находится на странице test.php. После выпонения скрипта на странице Index.php должны отображаться значения.
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 24 июня 2009 г. 12:27, спустя 11 минут 3 секунды

    очень самонадеяное утверждение

    setcookie('n', $sp_id);


    expire

       The time the cookie expires. This is a Unix timestamp so is in number of seconds since the epoch. In other words, you'll most likely set this with the time() function plus the number of seconds before you want it to expire. Or you might use mktime(). time()+60*60*24*30 will set the cookie to expire in 30 days. If set to 0, or omitted, the cookie will expire at the end of the session (when the browser closes).

           Замечание: You may notice the expire parameter takes on a Unix timestamp, as opposed to the date format Wdy, DD-Mon-YYYY HH:MM:SS GMT, this is because PHP does this conversion internally.
           expire is compared to the client's time which can differ from server's time.


    АЛАРМ, Дуд! пытался добавить сообщение
    [man]setcookie[/man]


    получил в ответ
    Ошибка базы данных
    Пожалуйста, повторите еще раз. Если ошибка продолжает повторятся, обратитесь к Администратору.
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 24 июня 2009 г. 12:30, спустя 3 минуты 6 секунд

    1. При выборе значений (страница индекс.пхп) идем переход на страницу тест.пхп
    2. На странице тест.пхп СНАЧАЛА удаляются старые значения куков, после чего записываются новые. Как вариант: сравнивать старые и новые значения, и просто дописывать нужное, удалять старые "куски".
    3. При последующем заходе на страницу индекс.пхп проверяется наличие куков, и если они есть, то отмечается в чекбоксах уже выбранные позиции. Таким образом при очередной передаче (в файл тест.пхп) в массиве ПОСТ будет переданы сразу весь "выбор" пунктов. Вот его-то и заносим в куки, заместо старого значения куков (см. пункт 2)
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 24 июня 2009 г. 12:36, спустя 6 минут 13 секунд

    АЛАРМ, Дуд! пытался добавить сообщение

    CTAPbIu_MABP, я ему писал про ошибку еще ночью…
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 24 июня 2009 г. 12:51, спустя 14 минут 19 секунд

    Хотел венуться ко вноторой части моего вопроса.
    Верна ли вообще моя логика построения корзины?
    Т.е. Есть определенный список товаров хранящийся в БД. Есить прайс на сайте. Каждую позицю можно выбрав с помощью чекбоксов. Соответственно занося в переменную значения чекбоксов, а это id элементов из БД.
    То есть имея переменную хранящую id объектов я смогу выбрать их из БД.

    Для реализации всего этого достаточно занести значения id в кукис используя setcookie('n', $sp_id); и в последующем переменную использовать в запросе SQL? Или тут естькакие то тонкости?
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 24 июня 2009 г. 12:56, спустя 5 минут 36 секунд

    smv, http://pyha.ru/forum/topic/99.0
    и без прочтения не возвращайся)
    все умрут, а я изумруд
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 24 июня 2009 г. 12:57, спустя 38 секунд

    а чем тебя сессия не устраивает?
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 24 июня 2009 г. 12:57, спустя 22 секунды

    я бы в куки ложил идшник корзины.
    а сама корзина по сути являлась бы таблицей в бд
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 24 июня 2009 г. 12:58, спустя 1 минуту

    smv, думаю надо хранить ид пользователя и иметь таблицу с заказами, и производить выборку по ид_юзер.
    А может я и сути вопроса не понял…
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 24 июня 2009 г. 13:01, спустя 3 минуты 2 секунды

    adw0rd, по сути, насколько я понял, то человек не может сделать так, чтоб после второго захода на страницу человек "довыбрал" ещё каких-то позиций, и они чтоб суммировались с ранее выбранными.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 июня 2009 г. 13:12, спустя 10 минут 49 секунд

    тест тест тест
    Спустя 7 сек.
    тест с кавычкой '
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!