2013-02-26 66 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,任何幫助受到歡迎。

編輯 - 這工作得很好,直到我試圖在會議中添加得到它的工作在多個頁面,所以我敢肯定,這就是問題的所在

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

回答

4
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

2

您的循環寫入錯誤。

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 
}