FORM ve POST dizideki Kutularını sırası aynı mı?

3 Cevap php

Ben birkaç onay kutularını var ve ben DB içine koymadan bir tembel yaklaşım almaya çalışıyorum.

Yani bilmek istedim, POST süper dizideki onay kutusunu dizi (onay kutularını []) emri onlar benim html sayfası olduğunu sırayla olurdu?

Eğer değilse, o zaman sadece bir tembel geliştirici olmaktan çıkacak!

Herhangi bir yardım için teşekkür ederiz.

3 Cevap

Evet, bakın 17.13.4 Form content types of the HTML 4 specification. Için application/x-www-form-urlencoded,

Kontrol adları / değerleri, belgede göründükleri sırayla listelenir. Adı = ve isim / değer çiftleri & ile birbirinden ayrılır ile değerine ayrılır.

Ve için multipart/form-data,

Parçalar karşılık gelen kontrol belge akışında görünen aynı sırayla işleme maddesi için gönderilmektedir.

PHP kılavuzu devletler aynı (bkz. How do I create arrays in a HTML <form> ?):

Bir dizi anahtarı belirtmek HTML isteğe bağlıdır. Eğer anahtarları belirtmezseniz, dizi elemanları formda görünen sırayla doldurulur.

Teknik cevap "Evet" ise, hala gerçekten, tüm erişilen nasıl bağlıdır (ve bu konuda tembel davranıyorsun nasıl!) Olacaktır.

Onay kutusu işaretli değilse, örneğin, o POST dahil değil. Bu tarayıcı tarafından gönderilen değil çünkü bu. Evet, diğerleri sırayla hala, ancak 'tembellik' o hesaba sahip.

Ayrıca unutmayın ki sizin gibi form alanı adlarını kullanarak bunu yapıyoruz 'kutusu [1]', 'onay kutusu [2]' ve böylece, daha sonra bu da, onları olmasını bekliyoruz sırayla olmayabilir, Eğer PHP erişmek nasıl bağlı.

Doing sonra bakıyor "$ i $ number_of_known_checkboxes

Karşı dikkatli olması gereken bir şey var. HTML 4 spec ne derse desin, onlar DOM görünen sırayla sunulmuştur.

Bu (geçersiz) HTML bakabilirsiniz.

<html>
<head>
    <title>Test Page</title>
</head>
<body>
    <form name="f1" method="get" action="fostered.htm">
        <label>A <input type="checkbox" name="a" checked="checked" /></label>
        <table>
            <tbody>
                <tr>
                    <td>
                        <label>B <input type="checkbox" name="b" checked="checked" /></label>
                    </td>
                </tr>
                <tr>
                    <label>C <input type="checkbox" name="c" checked="checked" /></label>
                </tr>
            </tbody>
        </table>
        <input type="submit" />
    </form>
</body>
</html>

Bu durumda, teslim tarihinde sipariş A, C, B, çünkü ayrıştırma esnasında, C onay kutusunu bir tablo hücresinde değil çünkü tablonun başlangıcından önce olması "parented teşvik" dir.

Tabii ki, bu normal hale sayfada göstermek istiyorum, ama CSS bu maske olabilir.

HTML'nizi doğrulamak için sorun almak için iyi bir neden.

Bu C gizli bir alan olsaydı, teslim tarihinde sipariş A, B, C olurdu "gizli" giriş alanları teşvik, parented olmadığını fazlalaştı