php
  • arrays
  • forms
  • loops
  • foreach
  • 2013-07-18 9 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']; 
        } 
    } 
    ?> 
    

    Iが得る出力である: はここに私のコードである

    アレイ([数値2] =>アレイ([1] => 3 [2] => 4)[サブミット] =>確認!)配列、!

    セッションに番号を挿入するにはどうすればいいですか。

    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()TRUEまたはFALSEを返すだけなので、isset($_POST['number2'])は空の文字列と決して等しくないことに注意してください。

    +0

    実際、疎な比較では、falseは空の文字列に等しいです。だから 'false!=" "' *はfalseに評価されます。 – animuson

    +0

    正しいですが、常にFALSEに評価されるので、if文は常にTRUEに評価されます。 – jessepinho

    +0

    どのように常にfalseに評価されますか?変数が設定されている場合はtrueに評価される '(true!=" "") 'となります。変数が設定されていなければ 'false(false!=" "") 'と評価されます。余分な '!=" "'は必要ではありませんが、実際には条件の結果は変更されません。基本的に 'if(isset()!= false)'を実行するのと同じですが、不要ですが何も壊さないようにします。 – animuson

    関連する問題