[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Наполнение $_SESSION уникальными записями
Cheizer
Здравствуйте друзья!

Подскажите пожалуйста юному кодеру, как реализовать такую заморочку:

(условно)
Есть несколько страниц с товарами, каждый товар имеет имя, и форму с кнопкой "цена по запросу", форма передает методом $_POST имя товра, и по нажатии ведет на страницу с фрмой обратной связи, где есть текстария, в поле которой вставляю нечто:

if($_POST['pname'] AND $_POST['pname']!=''){
$_SESSION['pname'] = $_POST['pname'];
echo iconv("CP1251", "UTF-8", "Здравствуйте, интерисует стоимость следующих товаров.")."<br>". $_SESSION['pname'];
}



и если человек сразу заполнит форму и отправить то все хорошо, но если он пойдет дальше погуляет по страницам с товарами, и с каждой отправит данные в сессию $_SESSION['pname'], то получается она перепишется, или если вкладывать в сессию новые данные как то так:

$_SESSION['pname'] .= $_POST['pname'];


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







Спустя 7 минут, 49 секунд (21.04.2011 - 09:55) kirik написал(а):
Мож массивчег?
$_SESSION['pname'][$_POST['pname']] = 1;
// ...
echo implode(',', array_keys($_SESSION['pname']));

Спустя 21 минута, 52 секунды (21.04.2011 - 10:17) Cheizer написал(а):
Цитата (kirik @ 21.04.2011 - 06:55)
Мож массивчег?
$_SESSION['pname'][$_POST['pname']] = 1;
// ...
echo implode(',', array_keys($_SESSION['pname']));

я тоже массивчег пробовал smile.gif, но не получилось, подскажите, как с вашим кодом поступить? Тоесть вы сделали из сессии массив и записываете туда все посты приходящие так? И потом склеиваете через запятую? И что теперь нужно сделать, пройтись циклом по массиву и вывести все значения? да? smile.gif

Спустя 2 минуты, 49 секунд (21.04.2011 - 10:20) kirik написал(а):
Цитата (Cheizer @ 21.04.2011 - 03:17)
пройтись циклом по массиву и вывести все значения? да?

Зачем?

вместо $_SESSION['pname'] = $_POST['pname']; вставляете $_SESSION['pname'][$_POST['pname']] = 1;, а вместо echo iconv("CP125...br>". $_SESSION['pname']; это - echo iconv("CP125...br>". implode(',', array_keys($_SESSION['pname'])); (ну или уберите запятую, если не нужна).

Спустя 32 минуты, 2 секунды (21.04.2011 - 10:52) Cheizer написал(а):
Цитата (kirik @ 21.04.2011 - 07:20)
Цитата (Cheizer @ 21.04.2011 - 03:17)
пройтись циклом по массиву и вывести все значения? да?

Зачем?

вместо $_SESSION['pname'] = $_POST['pname']; вставляете $_SESSION['pname'][$_POST['pname']] = 1;, а вместо echo iconv("CP125...br>". $_SESSION['pname']; это - echo iconv("CP125...br>". implode(',', array_keys($_SESSION['pname'])); (ну или уберите запятую, если не нужна).

Сделал вот так:

if($_POST['pname'] AND $_POST['pname']!=''){
$_SESSION['pname'][$_POST['pname']] = 1;
echo iconv("CP1251", "UTF-8", "Здравствуйте, интерисует стоимость следующих товаров.")."<br>".implode(',', array_keys($_SESSION['pname']));
}


но не получается :(, ничего не вывадится кроме текста "Здравствуйте, интерисует стоимость следующих товаров"

Спустя 1 час, 43 минуты, 18 секунд (21.04.2011 - 12:35) Raito-kun написал(а):
значит в $_POST['pname'] приходит что-то не то или вообще ничего не приходит. попробуй просто эту переменную вывести

Спустя 24 минуты, 31 секунда (21.04.2011 - 12:59) Cheizer написал(а):
Цитата (Raito-kun @ 21.04.2011 - 09:35)
значит в $_POST['pname'] приходит что-то не то или вообще ничего не приходит. попробуй просто эту переменную вывести

ну нет же ;) , я ж не совсем того, есть в переменной все, просто у меня сомнения насчет
array_keys($_SESSION['pname']
, не работает конструкция :(

Спустя 8 минут, 29 секунд (21.04.2011 - 13:08) Raito-kun написал(а):
если есть сомнения-проверь, например в отдельном файле так:
$_SESSION['pname']['first product'] = 1;
$_SESSION['pname']['second product'] = 1;
echo implode(',', array_keys($_SESSION['pname']));

всё должно работать. я бы на твоем месте проверял что приходит в посте.

Спустя 36 минут, 13 секунд (21.04.2011 - 13:44) Cheizer написал(а):
Цитата (Raito-kun @ 21.04.2011 - 10:08)
если есть сомнения-проверь, например в отдельном файле так:
$_SESSION['pname']['first product'] = 1;
$_SESSION['pname']['second product'] = 1;
echo implode(',', array_keys($_SESSION['pname']));

всё должно работать. я бы на твоем месте проверял что приходит в посте.

да ребята, ребята, работает, но на тестовой страничке, на сайте нет, может движок сайта неизвестного присхождения не отыгрывает такую конструкцию? sad.gif

Но скажите, а как можно подругому? И такой вариант просто подменяет значение в сессии и не фильтрует повторяющиеся значения в сессии?

Спустя 5 минут, 16 секунд (21.04.2011 - 13:49) Raito-kun написал(а):
Цитата
И такой вариант просто подменяет значение в сессии и не фильтрует повторяющиеся значения в сессии?

всё там будет правильно фильтроваться, ты session_start(); не забываешь случаем?

Спустя 3 минуты, 15 секунд (21.04.2011 - 13:53) Cheizer написал(а):
Спасибо вам kirik и Raito-kun БОЛЬШОЕ!

Вот так все получилось таки :)

if($_POST['pname'] AND $_POST['pname']!=''){
$_SESSION['pname'][$_POST['pname']] = $_POST['pname'];
echo implode(',', array_keys($_SESSION['pname']));
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.