php
  • arrays
  • forms
  • loops
  • foreach
  • 2013-07-18 6 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) submitbutton] => 확인!) 배열,!

    어떻게 세션에 번호를 넣을 수 있는지 알고 싶습니다. 예를 Session[1]=3, Session[2]=4

    내가 배열의 foreach와 시도하지만 난 항상 오류에 대한

    .

    +0

    '는 isset ($의 submitbutton가)'는 isset '해야한다 ($ _ POST ['submitbutton '])'. 아니? 어떤 오류가 발생하고 있습니까? – 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

    정확하지만 _always_는 FALSE로 평가되므로, if 문은 항상 TRUE로 평가됩니다. – jessepinho

    +0

    어떻게 항상 false로 평가됩니까? 변수가 설정되면 true로 평가되는'(true! = "" ")'이됩니다. 변수가 설정되어 있지 않으면 false로 평가되는'(false! = "" ")'가됩니다. 여분의'! = ""'는 필요하지 않지만 실제로 조건 결과를 변경하지는 않습니다. 기본적으로'if (isset()! = false)'를하는 것과 비슷하지만 불필요하지만 아무 것도 깨지 않습니다. – animuson

    관련 문제