Сижу вот массив сессии мучаю - очень надо для работы.
Может я чего и натупил, но этот код нужный мне результат выдает.
Единственная проблема - это при перезагрузке страницы я так понимаю переменная POST не обнуляется и в массив (при перезагрузке страницы) продолжают записываться данные, введенные последними в 1-е из двух полей...
Я уж и не зная что делать-то...Прошу помощи...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<?php
session_start();
?>
<head>
<meta http-equiv="content-type" content="text/html; utf-8" />
<meta name="author" content="MESMERiZE" />
<title>PHP сессия</title>
</head>
<body>
<form method="POST">
<input type="text" name="id_tov" value="" /><br />
<input type="text" name="kol_tov" value="1" /><br />
<input type="submit" value="положить" />
</form>
<?php
if(!isset($_SESSION['cartsession'])){
$arr_1 = array('','');
$_SESSION['cartsession'] = array($arr_1);
}else{
if(isset($_POST['id_tov'], $_POST['kol_tov']) and $_POST['id_tov'] != "" ){
$id_tov_current = $_POST['id_tov'];
$kol_tov_current = $_POST['kol_tov'];
$cartsession = $_SESSION['cartsession'];
$massiv_count = count($cartsession);
for($i=0; $i<$massiv_count; $i++){
if($id_tov_current == $cartsession[$i][0]){
$flag_repeat = $i;
}
}
if(isset($flag_repeat)){
array_push($cartsession,array($id_tov_current, $kol_tov_current+$cartsession[$flag_repeat][1]));
$cartsession[$flag_repeat]=array('0', '0');
}else{array_push($cartsession,array($id_tov_current, $kol_tov_current));}
}
print_r($cartsession);
}
$flag_repeat = "";
$_POST['id_tov']="";
echo('<br/>');
echo('<br/>');
echo('<br/>');
if(isset($massiv_count)){
for($x=0; $x<$massiv_count+1; $x++){
if($cartsession[$x][0] != "0" and $cartsession[$x][0] != ""){
echo('Идент'.$cartsession[$x][0].'Кол-во'.$cartsession[$x][1].'<br/>');
}
}
}
?>
</body>
</html>
Спустя 4 минуты, 3 секунды (25.01.2012 - 13:38) Rigel написал(а):
может в конце делать
unset($_POST['var1'], $_POST['var2']);?
Спустя 2 минуты, 25 секунд (25.01.2012 - 13:40) inpost написал(а):
pavel24071988
Обнулить $_POST -> сделать редирект.
Обнулить $_POST -> сделать редирект.
Спустя 4 минуты, 34 секунды (25.01.2012 - 13:45) pavel24071988 написал(а):
Что-то не получается :(
Добавил unset post переменных как только поработал с ними - все равно при перезагрузке такая же проблема
"Обнулить $_POST -> сделать редирект" - можно по подробнее - не очень понял
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<?php
session_start();
?>
<head>
<meta http-equiv="content-type" content="text/html; utf-8" />
<meta name="author" content="MESMERiZE" />
<title>PHP сессия</title>
</head>
<body>
<form method="POST">
<input type="text" name="id_tov" value="" /><br />
<input type="text" name="kol_tov" value="1" /><br />
<input type="submit" value="положить" />
</form>
<?php
if(!isset($_SESSION['cartsession'])){
$arr_1 = array('','');
$_SESSION['cartsession'] = array($arr_1);
}else{
if(isset($_POST['id_tov'], $_POST['kol_tov']) and $_POST['id_tov'] != "" ){
$id_tov_current = $_POST['id_tov'];
$kol_tov_current = $_POST['kol_tov'];
$cartsession = $_SESSION['cartsession'];
$massiv_count = count($cartsession);
for($i=0; $i<$massiv_count; $i++){
if($id_tov_current == $cartsession[$i][0]){
$flag_repeat = $i;
}
}
if(isset($flag_repeat)){
//echo($flag_repeat);
//echo($cartsession[$flag_repeat][0]);
//echo($cartsession[$flag_repeat][1]);
array_push($cartsession,array($id_tov_current, $kol_tov_current+$cartsession[$flag_repeat][1]));
$cartsession[$flag_repeat]=array('0', '0');
//unset($cartsession[$flag_repeat]);
}else{array_push($cartsession,array($id_tov_current, $kol_tov_current));}
unset($_POST['id_tov']);
unset($_POST['kol_tov']);
}
//echo($cartsession[3][1]);
//unset($cartsession[5]);
//if(isset($cartsession[5])){echo('dddddddddd');}else{echo('fffffffff');}
print_r($cartsession);
}
$flag_repeat = "";
$_POST['id_tov']="";
//echo($cartsession[$flag_repeat]);
echo('<br/>');
echo('<br/>');
echo('<br/>');
if(isset($massiv_count)){
for($x=0; $x<$massiv_count+1; $x++){
if($cartsession[$x][0] != "0" and $cartsession[$x][0] != ""){
echo('Идент'.$cartsession[$x][0].'Кол-во'.$cartsession[$x][1].'<br/>');
}
}
}
?>
</body>
</html>
Добавил unset post переменных как только поработал с ними - все равно при перезагрузке такая же проблема
"Обнулить $_POST -> сделать редирект" - можно по подробнее - не очень понял
Спустя 2 минуты, 39 секунд (25.01.2012 - 13:47) inpost написал(а):
Редирект через header();
В мануал и читай, как пользоваться функцией
В мануал и читай, как пользоваться функцией
Спустя 15 минут, 14 секунд (25.01.2012 - 14:02) pavel24071988 написал(а):
Я сделал редирект в конце скрипта, cтраница теперь постоянно грузится
Подождите... Вы имели ввиду редирект на каку-нибудь другую страницу (главную.и т.д)????
Так это то вроде понятно
А с обнулением пост на текущей странице то как - нибудь можно?
Подождите... Вы имели ввиду редирект на каку-нибудь другую страницу (главную.и т.д)????
Так это то вроде понятно
А с обнулением пост на текущей странице то как - нибудь можно?
Спустя 3 минуты, 39 секунд (25.01.2012 - 14:06) Rigel написал(а):
pavel24071988
twin предлагает делать вот так
twin предлагает делать вот так
header('location: '. $_SERVER['PHP_SELF'] .'?rnd='. time());
Спустя 6 минут, 24 секунды (25.01.2012 - 14:12) inpost написал(а):
Редирект нужно делать после отправки данных и обработки их! Внутри условия.
Спустя 6 минут, 48 секунд (25.01.2012 - 14:19) pavel24071988 написал(а):
да да да Всё сделал
Только таблица внизу не прорисовывается теперь (блин :angry: )
Вот :
Только таблица внизу не прорисовывается теперь (блин :angry: )
Вот :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<?php
session_start();
//header("no-cache");
?>
<head>
<meta http-equiv="content-type" content="text/html; utf-8" />
<meta name="author" content="MESMERiZE" />
<title>PHP сессия</title>
</head>
<body>
<form method="POST">
<input type="text" name="id_tov" value="" /><br />
<input type="text" name="kol_tov" value="1" /><br />
<input type="submit" value="положить" />
</form>
<?php
if(!isset($_SESSION['cartsession'])){
$arr_1 = array('','');
$_SESSION['cartsession'] = array($arr_1);
}else{
if(isset($_POST['id_tov'], $_POST['kol_tov']) and $_POST['id_tov'] != "" ){
$id_tov_current = $_POST['id_tov'];
$kol_tov_current = $_POST['kol_tov'];
$cartsession = $_SESSION['cartsession'];
$massiv_count = count($cartsession);
for($i=0; $i<$massiv_count; $i++){
if($id_tov_current == $cartsession[$i][0]){
$flag_repeat = $i;
}
}
if(isset($flag_repeat)){
array_push($cartsession,array($id_tov_current, $kol_tov_current+$cartsession[$flag_repeat][1]));
$cartsession[$flag_repeat]=array('0', '0');
}else{array_push($cartsession,array($id_tov_current, $kol_tov_current));}
header('location: '. $_SERVER['PHP_SELF'].'?rnd='. time());
}
print_r($cartsession);
}
echo('<br/>');
echo('<br/>');
if(isset($massiv_count)){
echo('<br/>2131243214');
for($x=0; $x<$massiv_count+1; $x++){
if($cartsession[$x][0] != "0" and $cartsession[$x][0] != ""){
echo('Идент'.$cartsession[$x][0].'Кол-во'.$cartsession[$x][1].'<br/>');
}
}
}
?>
</body>
</html>
Спустя 4 минуты, 4 секунды (25.01.2012 - 14:23) pavel24071988 написал(а):
Я уже почти разобралсь ...
Спустя 2 минуты, 17 секунд (25.01.2012 - 14:26) pavel24071988 написал(а):
вооо.. теперь разобрался
Спасибо ребят! большое
Скажите inpost Я вот тут ваши посты про корзины почитал - я не очень понял Вы выступаете за использование куков вместо сессий, а каких куков на сервере или на клиенте
Ну куки это же строка? (насколько я зная), а сессии php - массив = вроде оно удобнее
(Ну я наверное ошибаюсь...)
Спасибо ребят! большое
Скажите inpost Я вот тут ваши посты про корзины почитал - я не очень понял Вы выступаете за использование куков вместо сессий, а каких куков на сервере или на клиенте
Ну куки это же строка? (насколько я зная), а сессии php - массив = вроде оно удобнее
(Ну я наверное ошибаюсь...)