[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обновление страницы
pavel24071988
Здравствуйте.
Сижу вот массив сессии мучаю - очень надо для работы.
Может я чего и натупил, но этот код нужный мне результат выдает.

Единственная проблема - это при перезагрузке страницы я так понимаю переменная 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 -> сделать редирект.

Спустя 4 минуты, 34 секунды (25.01.2012 - 13:45) pavel24071988 написал(а):
Что-то не получается :(


<!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();
В мануал и читай, как пользоваться функцией smile.gif

Спустя 15 минут, 14 секунд (25.01.2012 - 14:02) pavel24071988 написал(а):
Я сделал редирект в конце скрипта, cтраница теперь постоянно грузится sad.gif

Подождите... Вы имели ввиду редирект на каку-нибудь другую страницу (главную.и т.д)????

Так это то вроде понятно
А с обнулением пост на текущей странице то как - нибудь можно?

Спустя 3 минуты, 39 секунд (25.01.2012 - 14:06) Rigel написал(а):
pavel24071988
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: )
Вот :

<!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 - массив = вроде оно удобнее
(Ну я наверное ошибаюсь...)
Быстрый ответ:

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