Подскажите пожалуйста юному кодеру, как реализовать такую заморочку:
(условно)
Есть несколько страниц с товарами, каждый товар имеет имя, и форму с кнопкой "цена по запросу", форма передает методом $_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; |
я тоже массивчег пробовал , но не получилось, подскажите, как с вашим кодом поступить? Тоесть вы сделали из сессии массив и записываете туда все посты приходящие так? И потом склеиваете через запятую? И что теперь нужно сделать, пройтись циклом по массиву и вывести все значения? да?
Спустя 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) | ||
Зачем? вместо $_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; всё должно работать. я бы на твоем месте проверял что приходит в посте. |
да ребята, ребята, работает, но на тестовой страничке, на сайте нет, может движок сайта неизвестного присхождения не отыгрывает такую конструкцию?
Но скажите, а как можно подругому? И такой вариант просто подменяет значение в сессии и не фильтрует повторяющиеся значения в сессии?
Спустя 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']));
}