2013-07-18 35 views
5

Tôi có biểu mẫu có vòng lặp bên trong. Đây là mã của tôi:Vòng lặp với biểu mẫu và phiên

<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']; 
    } 
} 
?> 

Kết quả tôi nhận được là:

Array ([number2] => Array ([1] => 3 [2] => 4) [submitbutton] => Xác nhận!) Mảng,!

Tôi muốn biết cách tôi có thể đặt số trong phiên.

Ví dụ Session[1]=3, Session[2]=4

tôi cố gắng với mảng và foreach nhưng tôi luôn nhận được lỗi.

+0

'isset ($ submitbutton) 'nên được' isset ($ _ POST [ 'submitbutton']) '. Không? Lỗi gì bạn nhận được ? – BlitZ

+0

bạn đã thử với '$ _SESSION [1] = 3' với một' session_start() 'ở đầu mã của bạn chưa? –

Trả lời

2

Something như thế này nên làm việc cho bạn:

<?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

nếu tôi làm điều đó tôi nhận được lỗi sau Thông báo: Không xác định: Bỏ qua phím số 1 trong Không xác định trên dòng 0 Chú ý: Không biết: Bỏ qua phím số 2 trong Không xác định trên dòng 0 – usertfwr

+0

Ah, phải, bạn không thể có các phím số $ _SESSION của bạn. Bạn sẽ phải đặt chúng trong một mảng hoặc tiền tố chúng (lưu ý những thay đổi của tôi). –

+0

Cảm ơn nó hoạt động !!! – usertfwr

2

Bạn gặp phải lỗi gì? Lưu ý rằng isset() chỉ trả về TRUE hoặc FALSE, vì vậy isset($_POST['number2']) sẽ không bao giờ bằng chuỗi rỗng.

+0

Vâng, trên thực tế, trong so sánh lỏng lẻo là bằng một chuỗi rỗng. Vì vậy, 'false! =" "' * Sẽ * đánh giá sai. – animuson

+0

Đúng, nhưng nó sẽ _always_ đánh giá thành 'FALSE', do đó câu lệnh' if' sẽ _always_ đánh giá là 'TRUE'. – jessepinho

+0

Làm thế nào nó luôn luôn đánh giá sai? Nếu biến được thiết lập, thì nó sẽ là '(true! =" ")' Để đánh giá đúng. Nếu biến không được thiết lập, thì nó sẽ là '(false! =" ")' Để đánh giá sai. Không cần thêm '! =" "', Nhưng không thực sự thay đổi kết quả của điều kiện. Nó về cơ bản giống như làm 'if (isset()! = False)' - không cần thiết nhưng không phá vỡ bất cứ điều gì. – animuson

Các vấn đề liên quan