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

    İçinde bir döngü olan bir form var.Foreach ve oturum ile formda döngü

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

    Elde çıkış: İşte kodu

    Array ([2 nolu] => Array ([1] => 3 [2] => 4) [submitbutton] => Onayla!) Array,!

    Numarayı nasıl oturum açabileceğimi bilmek istiyorum. Örneğin Session[1]=3, Session[2]=4

    Ben diziden ve foreach ile deneyin ama her zaman hata alıyorum İçin

    .

    +0

    'isset ($ submitbutton)' isset 'olmalıdır ($ _ POST [ 'submitbutton'])'. Yok hayır? Ne hatayı alıyorsun? – BlitZ

    +0

    kodunuzun başında '$ _SESSION [1] = 3' ile' session_start() 'ı denediniz mi? –

    cevap

    2

    şey sizin için çalışması gerekir:

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

    Bunu yaparsam aşağıdaki hata iletisini alırım Uyarı: Bilinmiyor: Satırda Bilinmeyen'de sayısal anahtar 1 atlanıyor 0 Bildir: Bilinmiyor: Bilinmeyen satır 2'de bilinmeyen satır 0'da atlanıyor – usertfwr

    +0

    Ah, sağa, sayısal tuşlara sahip olamazsınız. $ _SESSION. Onları bir diziye veya ön eke koymanız gerekir (değişikliklerimi not et). –

    +0

    Teşekkürler çalışıyor! – usertfwr

    2

    Ne tür bir hata alıyorsunuz? isset() yalnızca TRUE veya FALSE döndürdüğünü unutmayın, bu nedenle isset($_POST['number2']) hiçbir zaman boş dizeye eşit olmaz. Böyle

    +0

    Aslında, gevşek karşılaştırmalarda yanlış bir boş dizgeye eşittir. Yani 'false! =" "' * Yanlış olarak değerlendirir. – animuson

    +0

    Doğru, ama _always_ "FALSE" olarak değerlendirir, böylece "if" ifadesi _always_ "TRUE" olarak değerlendirirdi. – jessepinho

    +0

    Her zaman yanlış olarak nasıl değerlendirirdi? Eğer değişken ayarlanmışsa, o zaman doğru olarak değerlendiren '(true! =" ")' Olacaktır. Eğer değişken ayarlanmamışsa, o zaman false olarak değerlendiren '(false! =" ")' Olacaktır. Fazladan '! =" "' Gerekli değildir, ancak durumun sonucunu gerçekten değiştirmez. Temelde 'if (isset()! = False) 'yapmak gibi - gereksizdir ama hiçbir şeyi kırmaz. – animuson

    İlgili konular