Просмотр темы
Страница 1 из 2: 12
|
Пишем в сессию просмотренные товары- помощь
|
|
Pisatel |
Опубликовано 07.05.2013 11:01
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Мастера, всем доброго времени суток! Вновь нужна помощь. В общем, у себя в каталоге задумал сделать вывод просмотренных ранее пользователем товаров- через сессию. Слепил вот такой код:
Все работает, ид товаров пишутся и выводятся таким образом: 9 23 16 190. Вопрос в следующем: как мне теперь эти цифры сделать ссылками на товары? То есть, куда вставить, например, <a href="cat.php&tov_id=здесь число из массива">ссылка</a>? Буду признателен за подсказку. |
|
|
Polarfox |
Опубликовано 07.05.2013 11:45
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
Делай второй уровень у массива и загоняй в него иды, проверяя на уникальность. Выводить массив в разы удобней чем мучаться со строкой и пробелами. $_SESSION['looked'][] = (int)$tov_id; //например Есть вопросы? Я вот хз если нет проверки, приводим насильно к интежеру (но это не совсем верное целое, хотя и валидное) Изменил(а) Polarfox, 07.05.2013 11:51 Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
Pisatel |
Опубликовано 07.05.2013 11:48
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
PolarFox, обязательно будут.:-) Спасибо, буду пробовать. |
|
|
mishqa35 |
Опубликовано 07.05.2013 18:28
|
Опытный пользователь Сообщений: 307 Зарегистрирован: 04.01.2011 18:50 |
|
|
|
Pisatel |
Опубликовано 08.05.2013 04:12
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
mishqa35, а что не так? Это условие, чтобы записанное выводилось только на страницах, где присутствует переменная $tov_id. Или можно по-другому? |
|
|
Rush |
Опубликовано 08.05.2013 08:13
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
да нормально все. не вижу в иссет ничего плохого. с одной стороны конечно не тру что есть неопределенность в коде, а с другой это фьюжн, так что пох |
|
|
Pisatel |
Опубликовано 08.05.2013 09:29
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Rush, это не фьюжн, это каталог товаров, почти написанный заново. Помогите мне понять ход ваших мыслей: как мне еще определить, что пользователь находится именно на странице с товаром, а не, например, в видеокаталоге или фотоальбоме? Только там, где идет вывод товаров, присутствует эта переменная, вот и взял я ее на проверку наличия. Что не так? Как вариант- можно делать проверку на присутствие в урл определенных параметров, но зачем, если с переменной проще? Если это можно сделать иначе- подскажите, буду благодарен. |
|
|
Serge Renard |
Опубликовано 08.05.2013 10:24
|
Опытный пользователь Сообщений: 250 Зарегистрирован: 18.02.2013 18:46 |
А что, адрес самой страницы (без параметров) во всех случаях один и тот же?
В Интернете кто-то неправ!
|
|
|
Pisatel |
Опубликовано 08.05.2013 14:50
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Для новостей, информации и товаров- да. |
|
|
Rush |
Опубликовано 08.05.2013 14:55
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
по тру наверное надо метод/функция. вызываешь в нужном месте. и зачем использовать сессию, если можно использовать более долгоживущие кукисы
|
|
|
Serge Renard |
Опубликовано 08.05.2013 15:44
|
Опытный пользователь Сообщений: 250 Зарегистрирован: 18.02.2013 18:46 |
Могу ошибаться, но мне это кажется методологически неправильным. В Интернете кто-то неправ!
|
|
|
Polarfox |
Опубликовано 08.05.2013 16:15
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
В сессии можно хранить все, в печеньках - ничего. Наши от сессий впрочем отказались, идеально было хранить в табличке, но если проще то пускай так. Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
Rush |
Опубликовано 08.05.2013 20:27
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
сессия хранится пока открыта страница, кукисы - сколько угодно. в базе - спорный вопрос |
|
|
Pisatel |
Опубликовано 09.05.2013 04:58
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Вот из этого следующий вопрос. Я сделал запись в сессию не только ид, а прямо адреса ссылок с картинками, все работает, вопрос в следующем: это как-то влияет на безопасность? Далее. Согласен, можно и в куки сделать, но зачем? Мне достаточно того времени, что пользователь находится на сайте, если он в следующий раз зайдет, например, через пять часов- пусть в сессию пишутся новые просмотренные товары. И еще: не получается обновлять запись первого товара после, например, пяти просмотренных. Делаю так: $array- массив сессии с товаром Но все равно пишет и 6, и 7 товар... Serge Renard, скорее всего, ты прав, и, возможно, в будущем руки дойдут до исправления этого. Для всего сделаю свои страницы. Изначально этот каталог был написан так, много чего исправил, до этого пока не добрался. Изменил(а) Pisatel, 09.05.2013 05:04 |
|
|
Polarfox |
Опубликовано 09.05.2013 05:08
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
присвоения нет $array = array_pop($array); Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
Pisatel |
Опубликовано 10.05.2013 09:43
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Мастера, хелп. Весь мозг уже вынес себе. Проблема в следующем: в сессию записываются просмотренные товары, я хочу их записывать всего пять, когда просмотрят более- удалять первый и так далее. Вот мой гкод, что не так делаю?
Изменил(а) Pisatel, 10.05.2013 10:02 |
|
|
Rush |
Опубликовано 10.05.2013 10:32
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
#^*@ (да простят меня боги) сломал мозг пока читал этот код... ааааа $_SESSION['looked'] - строка, которую ты эксплодишь по пробелу, на выходе массив вида
так этого мало, ты делаешь array_shift, в $arrayun у тя получается '<a title=\"$nazv\"' и ты делаешь unset($_SESSION['<a title=\"$nazv\"']); *PIPEZ**PIPEZ**PIPEZ**PIPEZ*
Изменил(а) Polarfox, 10.05.2013 11:56 |
|
|
Pisatel |
Опубликовано 10.05.2013 12:53
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Я с массивами никогда не работал, про сессию слышал звон, та не знал, где он... Учусь. Все когда-то с чего-то начинали, верно? Благодарю, буду экспериментировать дальше. UPD: Мастера, с вашей помощью у меня получилось следующее:
И все почти работает, но как-то нестабильно: то 4 последних просмотренных выведет, то пять... Похоже, причина вот в чем: когда жмешь на товар, который уже смотрел, он не добавляется, так как array_unique, а вот array_shift срабатывает и удаляет первую запись. Как обойти? Изменил(а) Pisatel, 10.05.2013 15:19 |
|
|
Polarfox |
Опубликовано 10.05.2013 15:38
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
Первое что нужно сделать - продумать план как оно будет работать, с условиями. Зовется алгоритм, вот задумайся над ним, и часть проблем будет исчезнута. Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
Pisatel |
Опубликовано 10.05.2013 15:51
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Все пока работает, просто я после правки не стартовал новую сессию, сейчас все гуд. Если возникнут проблемы- опишу. Спасибо за помощь, подсказки и терпение! |
|
Поделиться этой темой | |
Социальные закладки: | |
URL: | |
BBcode: | |
HTML: |
Страница 1 из 2: 12
Перейти на форум: |