php
  • arrays
  • forms
  • loops
  • foreach
  • 2013-07-18 41 views 5 likes 
    5

    我有一個內部循環的窗體。 這是我的代碼:以foreach和會話的形式循環

    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">  
    <?php 
    for ($i = 1; $i <= 2; $i++) { 
        echo "Numero "; 
        echo $i; 
        echo "<input type='text' name='number2[$i]' id='number2{$i}' />"; 
    } 
    
        ?> 
        <input type="submit" name="submitbutton" value="Confirm!"> 
        </form> 
        <?php 
        print_r($_POST ); 
    if(!isset($submitbutton)) { 
        if (isset($_POST['number2']) != "") { 
         echo "<b>{$_POST['number2']}</b>, !\n"; 
         $nI = $_POST['number2']; 
        } 
    } 
    ?> 
    

    我得到的輸出是:

    陣列([數字2] =>數組([1] => 3 [2] => 4)[提交按鈕] =>確認!)Array,!

    我想知道如何將數字放在會話中。

    例如Session[1]=3, Session[2]=4

    我嘗試用數組和foreach,但我總是得到錯誤。

    +0

    'isset($提交按鈕)'應該是'isset($ _ POST [ '提交按鈕'])'。沒有?你遇到了什麼錯誤 ? – BlitZ

    +0

    您是否在代碼的開頭使用帶有'session_start()'的'$ _SESSION [1] = 3'來嘗試? –

    回答

    2

    像這樣的東西應該爲你工作:

    <?php 
    // Start a PHP Session 
    session_start(); 
    ?> 
    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">  
        <?php 
        for ($i = 1; $i <= 2; $i++) { 
         echo "Numero "; 
         echo $i; 
         echo "<input type='text' name='number2[$i]' id='number2{$i}' />"; 
        } 
        ?> 
        <input type="submit" name="submitbutton" value="Confirm!"> 
    </form> 
    <?php 
    // If the form was submitted and number2 is an array 
    if(isset($_POST['submitbutton']) 
         && isset($_POST['number2']) 
         && is_array($_POST['number2'])) { 
    
        // Loop through each posted value and save it to the session 
        foreach ($_POST['number2'] as $key => $value) { 
         $_SESSION["number2_{$key}"] = $value; 
        } 
    } 
    echo "number2_1 = " . $_SESSION["number2_1"] . "<br />"; 
    echo "number2_2 = " . $_SESSION["number2_2"] . "<br />"; 
    ?> 
    
    +0

    如果我這樣做,我得到以下錯誤 注意:未知:跳過第0行未知的數字鍵1注意:未知:在第0行跳過未知數字鍵2 – usertfwr

    +0

    啊,是的,你不能有數字鍵在你的$ _SESSION。你必須把它們放在一個數組中或者以它們爲前綴(注意我的改變)。 –

    +0

    感謝它的作品! – usertfwr

    2

    你得到了什麼錯誤?請注意,isset()僅返回TRUEFALSE,因此isset($_POST['number2'])永遠不會等於空字符串。

    +0

    實際上,在寬鬆的比較中,false等於空字符串。所以'false!=「」'*會*評估爲false。 – animuson

    +0

    正確,但會將_always_評估爲'FALSE',因此'if'語句會將_always_評估爲'TRUE'。 – jessepinho

    +0

    它會如何評價爲假?如果變量被設置,那麼它將是'(true!=「」)',其值爲真。如果該變量未設置,則它將是'(false!=「」)',其計算結果爲false。額外的'!=「」'不是必需的,但實際上並沒有改變條件的結果。這基本上就像做'if(isset()!= false)' - 不必要,但不會破壞任何東西。 – animuson

    相關問題