Доброго времени суток. Сейчас тоже делаю сравнение товаров. На php все готово. вопрос в другом, как сделать кнопочку добавить в сравнение да еще чтобы страница не перезагружалась)) читаю, смотрю как другие делают на jquery в основном. у меня пока получается подгружать др. страницу вот таким простым способом: Это например файл a.php здесь начало сессии и код страницы, затем кнопка: HTML: <form id="myForm"> <input type="hidden" id="iduni" value="<? echo $iduni ?>" > <input type="submit" value="добавить к сравнению"> </form> <div id="content"></div> [js] <script> $(document).ready(function(){ $('#myForm').submit(function(){ $.ajax({ type: "POST", url: "v_sravnenie.php", data: "iduni="+$("#iduni").val(), success: function(html){ $("#content").html(html); } }); return false; }); }); </script> [/js] далее опять код страницы... в файле v_sravnenie.php следующий код: PHP: $arr_sravnenie = array() ; $_SESSION['arr_sravnenie'] = $arr_sravnenie ; if (array_search($_REQUEST['iduni'], $_SESSION['arr_sravnenie']) === false) $_SESSION['arr_sravnenie'][] = $_REQUEST['iduni']; Но проблема в том что для сравнения товаров я использую сессию, а что получается: обрабатывается сначала весь php код на сервере, затем человек нажимает на кнопку добавить в сравнение и на сервере идет обработка файла v_sravnenie.php, а сессия с массивом уже в первоначальный php код не возвращается. Это рассуждение вслух)) если я неправ подскажите как все происходит. Пробовал вставлять session_start(); во код v_sravnenie.php, но тут выдается ошибка: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /www/pxel/www/htdocs/v_sravnenie.php:2) in /www/pxel/www/htdocs/v_sravnenie.php on line 24 я так понимаю что это из за того что сессия должна начинаться перед заголовкам страницы a.php В общем как быть и что делать??? И вообще как правильно мне сохранять и передавать массив в сессии, с помощью jquery или ajax не важно главное простота и работа???
я бы обратил внимание на LocalStorage, благо поддерживаается уже всеми браузерами и сравнивал непосредственно на клиенте. Ну а если на серваке, то пиши в табличку какую нибудь, что с чем сравниваешь... да сравнивай сколько угодно, кто мешает?
Вы имеете в виду чтобы создать в БД табл и заносить в неё значения куки и значения id выбираемых пользователями? А на счет LocalStorage может ссылочку дадите на примеры, их что то маловато. как объявлять и как выводить в echo хотя бы.
1)Нет, это из-за того, что сессия должна начинаться до любого вывода пользователю. У Вас он начинается во второй строчке. Погуглите на тему этой ошибки. 2)Где Вы ожидаете увидеть результат?
Результат мне нужен такой: Чтобы при нажатии на кнопку переменная $id (или $_GET['id'] неважно) заносилась в массив и путешествовала в месте с пользователем (по сессии или еще как) по другим страницам, у меня все это реализовано в php (но у меня страница перезагружается, а нужно чтобы все оставалось ровно, вроде как на яндекс маркет: человек нажал на добавить к сравнению и все, полазил еще где, потом нажал кнопку сравнения товаров и вуаля) повторюсь все готово кроме реализации с кнопкой. я ожидаю увидеть при обработке a.php при нажатии на кнопку надпись: Array ( [0] => 18976 ) я это тоже сделал, вопрос как сохранять и передавать этот массив дальше.
1)a.php уже закончил работу. 2)Если вы уже сделали, что появляется Array ( [0] => 18976 ) при нажатии на кнопку, то в чем проблема? На сервер сообщение посылается. В сессию/базу пишется. Обратно выводится..
Извините я наверное не правильно выразился. Первое ваше утверждение верно. А во втором (прикрепляемом с помощью джей квери ) файле у меня сейчас такой код: PHP: <? $arr_sravnenie = array() ; $_REQUEST['arr_sravnenie'] = $arr_sravnenie ; if (array_search($_REQUEST['iduni'], $_REQUEST['arr_sravnenie']) === false) $_REQUEST['arr_sravnenie'][] = $_REQUEST['iduni']; echo "2)"; print_r ( $_REQUEST['arr_sravnenie']) ; ?> т.е. как видно значение к нам попадает не из сессии.)) Сессия думаю здесь не будет работать, т.к. ее нельзя объявлять во втором файле. Тогда вопрос, как то что я вывел на экран (print_r ( $_REQUEST['arr_sravnenie']) перенести на следующую страницу?
Ну я так решил потому, что при объявлении во втором файле session_start(); выдавалась ошибка. Сразу оговорюсь что я в php не профи а среднячок и многих моментов грамотного объявления сессии не знаю. попробовал сделать так: PHP: <? session_name('SID'); // без этого объявления тоже пробовал (все одно) $arr_sravnenie = array() ; //$_REQUEST['arr_sravnenie'] = $arr_sravnenie ; $_SESSION['arr_sravnenie'] = $arr_sravnenie ; if (array_search($_REQUEST['iduni'], $_SESSION['arr_sravnenie']) === false) $_SESSION['arr_sravnenie'][] = $_REQUEST['iduni']; echo "2)"; print_r ( $_SESSION['arr_sravnenie']) ; ?> При открытии новой страницы выводит последнее id. такое ощущение что в сессию ничего не попадает. Может подскажете как ее тут более грамотно объявить.
Вы же писали что пробовали сделать session_start() и получили ошибку. Я Вам дал информацию чтобы исправить эту ошибку. Вы ее исправили?
Да спасибо. Сделал session_start() , ошибка больше не появляется. Спасибо вам огромное. У меня все заработало! =)))
Ну точнее не все(( у меня получается что session_start(); на всех страницах передает свой PHP: print_r ( $_SESSION['arr_sravnenie'] ) ; а при нажатии на кнопку и выводе print_r ( $_SESSION['arr_sravnenie'] ) ; выводит свой массив.)) Бред какой то...
Да вы снова правы. Теперь все правильно работает. Вы не представляете как вы мне помогли!!! Спасибо Вам.
Юноша)) не все знают "англицкий" язык. Может быть когда то у меня и на него время хватит, но пока... пока ява и php в ближайших перспективах))