Sonrası şeklinde veri sipariş web formunda ona aynı mı olacak?

6 Cevap php

Web formunda 5 girişler vardır varsayarsak

<input name='the_same[]' value='different' />
<input name='the_same[]' value='different' />
<input name='the_same[]' value='different' />
<input name='the_same[]' value='different' />
<input name='the_same[]' value='different' />

Sunucu tarafında yazılan veri aldığınızda, ben diyelim ki, verileri kabul etmek için bir foreach kullanın

$the_same = new array();
foreach($_POST['the_same'] as $data)
    $the_same[] = $data;

Sunucu tarafında kaydedilmiş verilerin sipariş web formunda ona aynı mı olacak? ve çapraz tarayıcı, tüm tarayıcılar takip bir kriter olabilir.

6 Cevap

Peki, W3C recommentation on HTML forms diyor:

The control names/values are listed in the order they appear in the document.

Yine de, ben app ayrıntı eleştirel bağımlı olması biraz riskli düşünecektim.

PHP zaten adından sonra [] koyduğunuzda diziler içine POSTed / geted değişkenleri dönüştürerek işler. Yerine kendinizi yanlış alma olduğunu yapmak.

Html yapmak için daha iyi bir yolu:

<input name='the_same[]' value='different' />

Ardından sunucu:

$the_same = new array();
foreach($_POST['the_same'] as $data) // or $_GET if you prefer
    $the_same[] = $data;

Bu şekilde hiçbir değişken yazma olacaktır.

Eğer bir düzen içinde olmasını istiyorsanız, size dinamik değişkenleri kullanabilir veya sadece açıkça dizi erişebilirsiniz

the_same1 the_same2 the_same3

Eğer zaten isimlerini biliyorum, çünkü bunları kolayca erişebilirsiniz

$the_same = array();
for($i=1; ; $i++){
    $tmp =$_REQUEST["the_same".$i]
    if( empty($tmp) ){
            // no more stuff
            break;
    }
    $the_same[] = $tmp;
}

Size the_same[] sizin giriş adını değiştirirseniz - $_REQUEST['the_same'] eleman sırayla son ilk bu değerlerin bir dizi (tüm güncel tarayıcılar inanıyorum) olacaktır.

Ayrıca gerekirse, belirli bir sırasını belirlemek, hatta dize tuşlarını kullanabilirsiniz. Örneğin, bir <input name='the_same[apple][2]'/> olacak $_REQUEST['the_same']['apple'][2]

Giriş adları [] kullanmadan, PHP sadece last değerini göreceksiniz. Diğer değerler $_REQUEST / $_GET / $_POST dizileri inşa edilir, daha sonra değeri "üzerine" olacaktır.

HTML onay kutusu yalnızca kontrol ederken, bir "işaretli değil" değer somtime göndermek isteyebilirsiniz bir değer gönderir olarak sizin için bir avantajdır kullanarak bir örnek, bir onay kutusu ile olabilir:

<input type='hidden' name='check' value='not checked' />
<input type='checkbox' name='check' value='checked' />

Büyük olasılıkla evet, ama bu girmemelisiniz. Bu girişler göndermek ediliyor nasıl tarayıcınızda bağlıdır ve aditionally PHP elemanları olarak aynı sırayla bir foreach döngü dolaşır ilave olduğunu garanti etmez.

Bu girisleri aynı adı vermek için kötü bir uygulamadır.

Sen (isterseniz bile javascript ile) her isim değerinden sonra bir dizin eklemek ve daha sonra sırası korunur emin olmak için PHP bu okuyabilir.