2015-06-16 1 views
0

Возможно, это дублированный вопрос, но я не нашел ответа. У меня есть поле выбора, значение которого должно быть сохранено в переменной массива сеанса. Я пробовал, но не работал.Как сохранить значение поля выбора в переменной массива сеанса без использования нескольких?

Вот код: form1.php

<form name="input" action="result.php" method="post"> 
    <input type="text" name="product" /> 
    <input type="text" name="name1" /> 
    <select name="strtpnt" id="strtpnt" class="inp_bx"> 
    <option>-Select-</option> 
    <option value="1">Cat</option> 
    <option value="2">bat</option> 
    <option value="3">rat</option> 
    <option value="4">mat</option> 
    </select> 
    <input type="submit" value="Add" /> 
</form> 

Вот result.php код:

<?php 
session_start(); 
$strtpnt1 = array(); 
if(isset($_POST['product'])) { 
    $products = isset($_SESSION['products']) ? $_SESSION['products'] : array(); 
    $products[] = $_POST['product']; 
    $_SESSION['products'] = $products; 
} 
if(isset($_POST['name1'])) { 
    $name = isset($_SESSION['name']) ? $_SESSION['name'] : array(); 
    $name[] = $_POST['name1']; 
    $_SESSION['name'] = $name; 
} 
if(isset($_POST['strtpnt'])) { 
    $strtpnt1 = isset($_SESSION['strtpnt1']) ? $_SESSION['strtpnt1'] :array(); 
    $strtpnt1[] = $_POST['strtpnt']; 
    $_SESSION['strtpnt1'][] = $strtpnt1; 
} 
print_r($_SESSION['products']); 
print_r($_SESSION['name']); 
print_r($_SESSION['strtpnt1']); 
?> 

Входные значения коробки хранятся в сессии arrray переменной, но не выберите поле.

Array ([0] => 2 [1] => Array ([0] => 2) [2] => Array ([0] => 2) [3] => Array ([0] => 2 [1] => Array ([0] => 2) [2] => Array ([0] => 2) [3] => Array ([0] => 2))) 

Я хочу, чтобы получить значение выбора коробки как:

Array ([0] => ddd [1] => ddd [2] => sss [3] => sss [4] => ss [5] => ss [6] => ttt) 

Любые предложения или помощь относительно этого более приветствуется.

+1

$ _POST [ «strtpnt»] не является массив с поста вы получите только значение этого выбранным я полагаю, не все значений – Goikiu

ответ

0

Попробуйте это изменить:

$_SESSION['strtpnt1'][] = $strtpnt1; 

к этому:

$_SESSION['strtpnt1'] = $strtpnt1; 

UPDATE:

if(isset($_POST['strtpnt'])) { 
    $strtpnt1 = isset($_SESSION['strtpnt1']) ? $_SESSION['strtpnt1'] : array(); 
    array_push($strtpnt1, $_POST['strtpnt']); 
    $_SESSION['strtpnt1'] = $strtpnt1; 
} 

Edit: Непосредственно нажать значение из $_POST без сохранения в любом массиве.

array_push() используется для добавления значений в массив.

+0

Вместо извлечения выбранного значения и сохранения в массиве '$ strtpnt1 []', просто вставьте его в массив в переменной сеанса. – kRiZ

+0

Удалить это: '$ strtpnt1 [] = $ _POST ['strtpnt'];' Непосредственно выполните: 'array_push ($ selects, $ _POST ['strtpnt']);' как показано в обновлении ответа. – kRiZ

+0

Я попробовал код ниже, и я получаю сообщение об ошибке msg следующим образом: "array_key_exists(): Первый аргумент должен быть строкой или целым числом" – user12688

0

Пожалуйста, попробуйте это [учитывая ваше обсуждение Атмосферостойкого KŘÍŽ]

if(isset($_POST['strtpnt'])) { 
    $strtpnt1 = isset($_SESSION['strtpnt1']) ? $_SESSION['strtpnt1'] :array(); 

    if(!array_key_exists($_POST['strtpnt'],$_SESSION['strtpnt1'])) 
    { 
     $strtpnt1 = array_push($strtpnt1,$_POST['strtpnt']); 
    } 

    $_SESSION['strtpnt1'] = $strtpnt1; 
} 
+0

nope it wont work ... существует массив_push() ожидает 1 параметр чтобы быть ошибкой массива – user12688

+0

** ПРИМЕЧАНИЕ: ** Первый параметр для 'array_key_exists()' должен быть ключом для проверяемого массива, что, другими словами, является индексом (либо числовым индексом по умолчанию [0, 1 , ...] или string, если ваш массив ассоциативен). – kRiZ

Смежные вопросы