Использование содержимого формы для добавления значений в массив $ _SESSION - PullRequest
0 голосов
/ 18 ноября 2010

Я пытаюсь создать страницу, которая принимает форму и добавляет содержимое в качестве нового значения в массиве $ _SESSION (), что, по-видимому, происходит, хотя значение переопределяется.

Форма имеет 3 текстовых ввода с именами a, b и c и обновляет страницу при отправке.Что говорит о том, что его заменяют, так это то, что $ _SESSION [0] будет отображать 1 2 и 3, как определено ниже, затем следующая строка, определенная $ _POST, будет такой же, но с заменой значений массива на последние переданные значения, а не на добавлениепредставлен как еще один ряд.

<form action="test2.php" method="post">
<input type="text" name="a">
<input type="text" name="b">
<input type="text" name="c">
<input type="submit" value="Submit">
</form>

<?php
    if (isset($_POST['a']))
    {
     $a = $_POST['a'];
     $b = $_POST['b'];
     $c = $_POST['c'];
     $order = array('a' => $a, 'b' => $b, 'c' => $c);
     $_SESSION[0] = array('a' => 1, 'b' => 2, 'c' => 3);
     $_SESSION[] = $order;
     $count = count($_SESSION);
     for ($i = 0; $i < $count; $i++) {
      echo "w: " . $_SESSION[$i]['a'] . "\n";
      echo "h: " . $_SESSION[$i]['b'] . "\n";
      echo "p: " . $_SESSION[$i]['c'] . "\n";
      echo "<br />";
      }
    }
?>

Был бы чрезвычайно признателен за любую помощь, спасибо

Ответы [ 2 ]

3 голосов
/ 18 ноября 2010

Мне кажется, что вы пытаетесь добавить новый массив в новую переменную $ _SESSION при каждой отправке формы. Метод, который вы используете, только добавит значение в массив $ _SESSION для загрузки страницы - на самом деле его не будет в массиве $ _SESSION! Смущает правильно? Так что ни один из них не сработает ...

$_SESSION[] = 'value or array';
$_SESSION[1] = 'some other stuff';

Но это произойдет из-за наличия текста в ключе $ _SESSION (и не забудьте начать сеанс).

session_start();
$next = count($_SESSION) + 1;
$next = 'foo' . $next;
$_SESSION[$next] = 'bar' . $next;

Это сгенерирует ниже для "print_r ($ _ SESSION)".

Array ( [foo1] => barfoo1 [foo2] => barfoo2 [foo3] => barfoo3 [foo4] => barfoo4...
2 голосов
/ 18 ноября 2010

Самый простой способ добавления значений формы будет

$_SESSION['form'] = $_POST; //once the form is posted

Затем получите доступ к значениям, используя

$_SESSION['form']['fieldname'];
...