存储在会话PHP数组从输入表格

问题描述:

我有麻烦试图让一个阵列会议工作,如果有人可以帮助将是巨大的,我不打扰有关验证等如果我可以得到它的工作配发然后我可以扩展它。存储在会话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,任何帮助受到欢迎。

编辑 - 这工作得很好,直到我试图在会议中添加得到它的工作在多个页面,所以我敢肯定,这就是问题的所在

EDIT2 - 感谢所有帮助家伙我得到它的工作当我拿出

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

从数组3它工作:)非常感谢!

+0

你确定你和不'array3'获得在'array2'价值? ,如果你能交叉检查我。 – Rikesh 2013-02-26 10:43:06

+0

什么在array3.php一个'的print_r($ _ SESSION)'回报? – hjpotter92 2013-02-26 10:44:28

+0

使用的print_r的功率($ _ SESSION); session_start();之后在array3.php – DevMetal91 2013-02-26 10:44:33

count($checked && $checked2) 

...是你的问题。

$checked && $checked2是一个逻辑表达式要么是truefalse,这意味着这就是所述count()呼叫将总是返回false,并false将等同于0在数值比较(与$i的小于<比较),因此,为循环将不会执行任何迭代。

但是,在这种情况下使用数组并不合适,因为您已经使用了<select>元素而没有multiple属性,因此它只会表示一个值,这意味着该数组只能保存单个值。您应该将其简化为标量值,您会发现:a)它的工作原理和b)总体上更容易。

+0

好吧我会努力的,我通过删除 $ checked = $ _POST ['options']; $ checked2 = $ _POST ['options2']; 和它的作品,但我会看看你在说什么。 – jphillip724 2013-02-26 10:48:42

+0

你好,我会研究一下,我过去6周只做过php,真的只是想让基础知识在同一个声明中同时使用两个概念,就是如果你选择了票,那么你必须有住宿希望我把它变成一个更好的声明,但实际上我现在知道我不能做得比现在好得多。 – jphillip724 2013-02-26 11:13:00

您的循环写入错误。

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

这个count语句不会像你想象的那样工作。将其分为2个循环或一个内部循环。

这样的:

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

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