Jump to content
  • 0

Сравнение 2-х выбранных пользователем товаров.


Kompilator
 Share

Question

Здравствуйте.

Немного освоил HTML и CSS, помаленьку пишу сайт.

Теперь встала потребность сделать некий сервис, попробую описать в двух словах.

Человек ходит по страницам сайта, рассматривает велосипедные фары (1 страница = обзор одной фары).

Бац ! Понравилась ему фара, и он жмёт некую кнопку - "Добавить к сравнению", смотрит дальше, бац ! ещё одна понравилась, жмёт и там кнопку - "Добавить к сравнению". И так несколько раз, сколько ему там может понравится я не знаю, может только 2, а может и 5.

Система должна как то запомнить те фары, которые он выбрал и при нажатии кнопки - "Перейти к сравнению", соответственно выйти на страницу сравнения.

На этой странице посередине большое фото как светит фара, а сбоку список того, что он навыбирал.

Нажимая на элементы списка, центральное фото меняется (это я уже умею делать).

Вот такое тех.задание,

Думаю это возможно реализовать на Javascript, но в нём я нуль, по этому обращаюсь за помощью.

Подскажите в какую сторону копать, что надо почитать и всё такое.

Что бы было понятнее, сайт вот такой - http://велосвет.рф/reviev.html

Заранее всем спасибо и с наступающим !

Link to comment
Share on other sites

Recommended Posts

  • 0

 

Если уже так отвечать, то localStorage

Новомодные хипстерские штучки, ТОЛЬКО В КУКАХ ЖИВЁТ ДУХ СТАРОЙ ШКОЛЫ, ТОЛЬКО ХАРДКОР, ТОЛЬКО РУБИЛОВО И МЯСО!

 

Уже давненько не новомодные )))

 

IE      Firefox Safari Chrome Opera iPhone Android

8.0+ 3.5+      4.0+    4.0+     10.5+   2.0+    2.0+

Link to comment
Share on other sites

  • 0

если он планирует чисто на JS то на кукках - бессмыслено. у них ограничение маленькое на хранение.....  там ещё с настройками заголовков сервера связано....  будет клиентов отфутболивать....  если так то лучше локальное хранилище. ещё лучше - в кукку вешать что то наподобии id сессии,  id товаров сохранять в бд с номером сессии, а затем выводить уже

  • Like 1
Link to comment
Share on other sites

  • 0

если он планирует чисто на JS то на кукках - бессмыслено. у них ограничение маленькое на хранение.....  там ещё с настройками заголовков сервера связано....  будет клиентов отфутболивать....  если так то лучше локальное хранилище. ещё лучше - в кукку вешать что то наподобии id сессии,  id товаров сохранять в бд с номером сессии, а затем выводить уже

 

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

Link to comment
Share on other sites

  • 0

Спасибо за локальное хранилище, почитал, разобрался в принципах работы.

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

И ещё, вот запомнилось у меня 5 разных названий, а в PHP я смогу их прочитать, чтобы сформировать страницу с учетом именно этих выбранных моделей ?

Edited by Kompilator
Link to comment
Share on other sites

  • 0

Спасибо за локальное хранилище, почитал, разобрался в принципах работы.

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

---

И ещё, вот запомнилось у меня 5 разных названий, а в PHP я смогу их прочитать, чтобы сформировать страницу с учетом именно этих выбранных моделей ?

Локальное хранилище. Это хранилище находится на компьютере пользователя. В браузере. Причем в каждом браузере оно свое! Для того чтобы получить эти данные на сервере, нужно с помощью javascript получить данные из хранилища и переслать их на сервер к примеру с помощью ajax.

 

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

 

Кстати сказать простейший механизм "сравнения товаров" выглядит вот так:

 

1. На странице товара кнопка "добавить к сравнению", при нажатии на нее в cookie  добавлять ID товара с помощью javascript. При нажатии на такую кнопку у другого товара, добавлять ID к существующей записи через запятую

2. При нажатии на кнопку "сравнить" переправлять пользователя на страницу сравнения. При http запросе передаются все куки для данного домена. Получить её в php не составит труда. Распарсить по запятой и зная айдишники вывести товары для сравнения. Все.

Link to comment
Share on other sites

  • 0

wwt, спасибо, я уже допёр вроде сам, только куки я не нашел, уже методом GET научился передавать.

У меня переменная есть, в которой через запятую номер товара передаётся.

Теперь надо по этому номеру из MySQL получать данные.

Какую программу посоветуете для работы (создание, редактирование) с базой ?

Link to comment
Share on other sites

  • 0

wwt, спасибо, я уже допёр вроде сам, только куки я не нашел, уже методом GET научился передавать.

У меня переменная есть, в которой через запятую номер товара передаётся.

Теперь надо по этому номеру из MySQL получать данные.

Какую программу посоветуете для работы (создание, редактирование) с базой ?

Параметром тоже вариант. Но куки просто можно хранить в браузере длительно время, а так разница не большая.

 

По поводу mysql установите phpmyadmin для создания и редактирования структуры базы данных. Получать данные с помощью php конечно же.

Link to comment
Share on other sites

  • 0
... то лучшее средство это хранить данные на сервере и использовать механизм сессий и cookie.

Попробовал, куками удобнее, но русские буквы не передаёт, пишет абракадабру - " РРјСЏ Фамилия ".

Английские и цифры пишет корректно.

Link to comment
Share on other sites

  • 0
Попробовал, куками удобнее, но русские буквы не передаёт, пишет абракадабру - " РРјСЏ Фамилия ". Английские и цифры пишет корректно.

 

UTF-8 используйте везде. КОдировка файлов, кодировка страницы, кодировка в php, кодировка базы данных, везде используйте эту и не будет такого.

Link to comment
Share on other sites

  • 0
UTF-8 используйте везде. КОдировка файлов, кодировка страницы, кодировка в php, кодировка базы данных, везде используйте эту и не будет такого.

У меня только charset=windows-1251 работает, изменяю на UTF-8 и тогда в IE вместо русских букв везде иероглифы.

Пусть лучше windows-1251, обойдусь как нибудь без русских куков.

Edited by Kompilator
Link to comment
Share on other sites

  • 0
А файл сам в UTF8?

Похоже что нет, у меня уже очень много страниц, если начать всё изменять, напортачу еще хуже.

Если перевожу сам файл в УТФ, то Notepad++ начинает код показывать иероглифами (русские буквы), IE абракадабру пишет.

Не смог я с этим разобраться.

windows-1251 работает и ладно, ну не отменят же этот стандарт совсем.

Link to comment
Share on other sites

  • 0

У вас строка в кодировке windows-1251, а выводится как UTF-8.

 

А файл сам в UTF8?

Похоже что нет, у меня уже очень много страниц, если начать всё изменять, напортачу еще хуже.

Если перевожу сам файл в УТФ, то Notepad++ начинает код показывать иероглифами (русские буквы), IE абракадабру пишет.

Не смог я с этим разобраться.

windows-1251 работает и ладно, ну не отменят же этот стандарт совсем.

 

 

Попробуйте перед заданием куки сделать вот так с кириллицей, это закодирует все кириллические символы в экскейп последовательности в кодировке UTF-8

str = encodeURI(str);

А в php скрипте, если вы там тоже работаете с 1251 сделайте обратное преобразование:

$str = iconv('UTF-8', 'windows-1251', $_COOKIE['mycookie']);

 

 

windows-1251 работает и ладно, ну не отменят же этот стандарт совсем.

 

Все программисты ждут того времени когда все национальные кодировки уйдут в прошлое. И это время близится с каждым годом,


 

 

Если перевожу сам файл в УТФ, то Notepad++ начинает код показывать иероглифами (русские буквы),

 

В ноутпаде выбирайте не "Кодировать в ***", а "Преобразовать в ***" .При кодировании просто изменяется кодировка файла, а при преобразовании перекодируется и содержимое.

Link to comment
Share on other sites

  • 0

В Notepad++ есть возможность сохранения в UTF8.

Попробую.

В ноутпаде выбирайте не "Кодировать в ***", а "Преобразовать в ***" .При кодировании просто изменяется кодировка файла, а при преобразовании перекодируется и содержимое.

Спасибо, сделаю дома, т.к. на работе в IE почему-то русские буквы при указании UTF-8 отображаются корректно, а дома нет.

IE вроде один и тот же, последний.

Link to comment
Share on other sites

  • 0
В ноутпаде выбирайте не "Кодировать в ***", а "Преобразовать в ***" .При кодировании просто изменяется кодировка файла, а при преобразовании перекодируется и содержимое.

В Notepad++ как лучше преобразовывать, с BOM или без ?

Link to comment
Share on other sites

  • 0

только БЕЗ

С БОМ всё было корректно, только в ИЕ иероглифы.

Сделал без БОМ, стали иероглифы везде.

Вот - http://велосвет.рф/comp_otp.html

Страница написана абракадаброй, это УТФ-8 без БОМ.

Если нажать "Запомнить", переходит на страницу ПХП и передаёт значение "тест", должно всё корректно и по русски быть, а у меня нет.

Подскажите что не так.

Link to comment
Share on other sites

  • 0

Думаю проблема в том что веб-сервер или php отдает страницу с заголовком

post-61936-0-04029700-1436942503_thumb.p

Content-Type:text/html; charset=windows-1251

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

AddDefaultCharset windows-1251

Если есть пропишите туда UTF-8

 

так же может быть директива типо:

php_value default_charset 'windows-1251' 

Короче ищите, это проблема не браузера или файла. Файл не может выставлять заголовки сам =)

Link to comment
Share on other sites

  • 0

... сейчас попробую.


Проверьте настройки виртуального хоста и файл .htaccess, там не должно быть: AddDefaultCharset windows-1251

Оно там было, сделал УТФ-8.

Вы великий и могучий !

Спасибо, теперь всё отображается корректно.

Хотя ИЕ всё же немного чудит, некорректно передаётв пхп страницу при помощи куков слово - "тест".

Другие браузеры работают корректно.

Вот, попробуйте нажать кн. "Запомнить" в ИЕ и других брайзерах, должно вывести - "Тест - успешно."

http://велосвет.рф/comp_otp.html

Edited by Kompilator
Link to comment
Share on other sites

  • 0

Как бы теперь перекодировать все имеющиеся страницы из Windows-1251 в UTF-8 ?

Нотепадом заменил строку быстро, есть функция, а перекодировать придётся открывать и каждую вручную ?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy