4

誰かがそれを助けることができれば、配列をセッションで動作させるために多くの問題を抱えています。検証などについて気にする必要はありません。

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からはうまくいきました:)どうもありがとう!

4

2 に答える 2

4
count($checked && $checked2)

...あなたの問題です。

$checked && $checked2は論理式であり、trueまたはfalseのいずれかになります。つまり、count()呼び出しは常に を返しfalse、数値比較 ( との小なり比較) ではfalseに等しいため、for ループは反復を実行しません。0<$i

ただし、この状況で配列を使用することは適切ではありません。プロパティ<select>を持たない要素を使用したmultipleため、単一の値のみを表すため、配列が単一の値しか保持しないことを意味します。これをスカラー値だけに単純化する必要があります。a) 機能し、b) 一般にはるかに簡単であることがわかります。

于 2013-02-26T10:47:16.413 に答える
2

あなたの for ループは間違って書かれています。

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

その count ステートメントは、あなたが思うようには機能しません。2 つの for ループまたは内部ループに分割します。

このような:

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

for($i=0; $i < count($checked2); $i++){
  echo stuff here
}
于 2013-02-26T10:47:50.837 に答える