2013-02-26 2 views
4

У меня возникли проблемы с попыткой получить массив для работы с сеансами, если кто-то может помочь, это было бы здорово. Я не беспокоился о проверке и т. Д., Если я могу просто заставить его работать Затем я могу расширить его.Хранить массив php в сеансе из формы ввода

HTML

<form method="post" action="array2.php"> 
    Select amount of tickets you require. 
    <select name="options[]"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
     <option value="5">5</option> 
     <option value="6">6</option> 
     <option value="7">7</option> 
     <option value="8">8</option> 
     <option value="9">9</option> 
     <option value="10">10</option> 
    </select> 
    Select the acomidation you require. 
    <select name="options2[]"> 
     <option value="camping">Camping</option> 
     <option value="caravan">Caravan</option> 
    </select> 
    <input type="submit" value="Go!" /> 
</form> 

array2.php

<?php 
session_start(); 
$checked = $_POST['options']; 
$checked2 = $_POST['options2']; 
$_SESSION['user'] = true; 
$_SESSION['checked'] = $checked; 
$_SESSION['checked2'] = $checked2; 
header('Location: array3.php'); 
?> 

array3.php

<?php 
session_start(); 
if(!isset($_SESSION['user'])){ 
    die("To access this page, you need to <a href='register.html'>LOGIN</a>"); 
} 
$checked = $_SESSION['checked']; 
$checked2 = $_SESSION['checked2']; 
?> 

<?php 
    for($i=0; $i < count($checked && $checked2); $i++){ 
     echo "You have selected to receive " . $checked[$i] . " tickets<br/>"; 
     echo "And you have selected to receive " . $checked2[$i] . " for accommodation are you sure? <br/>"; 
    } 
?> 

Основная проблема заключается в том, что значения не передаются от array2 в array3, любая помощь приветствуется.

EDIT - это работало хорошо, пока я не попробовал добавить в сессиях, чтобы заставить его работать на нескольких страницах, так что я уверен, что тот, где проблема

EDIT2 - спасибо за помощь, ребята я получил это работает когда я достал

$checked = $_POST['options']; 
$checked2 = $_POST['options2']; 

Из массива 3 он работал :) высоко ценится!

+0

Вы уверены, что вы получаете значение в 'array2' и не в' array3'? , если вы можете перекрестно проверить меня. – Rikesh

+0

Что означает 'print_r ($ _ SESSION)' return in array3.php? – hjpotter92

+0

использовать мощность print_r ($ _ SESSION); после session_start(); in array3.php – DevMetal91

ответ

4
count($checked && $checked2) 

... есть ваша проблема.

$checked && $checked2 является логическим выражением будет либо true или false, что означает То будет count() вызов всегда будет возвращать false и false будет приравнивать к 0 в числовом сравнения (меньше, чем < сравнения с $i), поэтому для цикл не будет выполнять никакие итерации.

Однако использование массивов в этой ситуации не подходит в любом случае, поскольку вы использовали элемент <select> без свойства multiple, поэтому он будет представлять только одно значение, что означает, что массив будет хранить только одно значение. Вы должны упростить это только скалярными значениями, и вы обнаружите, что: a) он работает, и б) в целом это намного проще.

+0

ОК, я буду работать над этим, я получил его, удалив $ checked = $ _POST ['options']; $ checked2 = $ _POST ['options2']; и он работает, но я буду смотреть на то, что вы говорите. – jphillip724

+0

yeh Я буду изучать это, я занимаюсь только php в течение последних 6 недель, на самом деле просто пытаюсь понять, основываясь на идеях использования обоих в том же заявлении, что если у вас есть билеты, то вы должны иметь жилье надеюсь, я превращу его в лучшее заявление, но на самом деле не знаю, что я сейчас знаю, я не могу сделать гораздо лучше, чем сейчас. – jphillip724

2

Ваша петля написана неправильно.

for($i=0; $i < count($checked && $checked2); $i++) 

Этот счетчик не будет работать, как вы думаете. Разбейте его на 2 для циклов или внутреннего контура.

так:

for($i=0; $i < count($checked); $i++){ 
    echo stuff here 
} 

for($i=0; $i < count($checked2); $i++){ 
    echo stuff here 
} 
Смежные вопросы