Aynı Adı vasıflıklı Form Alanlarını ilanı

3 Cevap php

Eğer bir PHP dosyası ve yinelenen ad özellikleri ile formda metin girişleri vardır mesajları, hala $ _POST diziden hem de alanların değerlerini elde etmek mümkün olacak bir form varsa?

3 Cevap

Hayır Yalnızca son giriş elemanı kullanılabilir olacaktır.

Eğer giriş isim özniteliği için aynı ad kullanımı name="foo[]" ile çoklu giriş istiyorsanız. $_POST sonra giriş elemanları tüm değerler Foo'ları için bir dizi içerecektir.

<form method="post">
    <input name="a[]" value="foo"/>
    <input name="a[]" value="bar"/>
    <input name="a[]" value="baz"/>
    <input type="submit" />
</form>

HTML reference at Sitepoint bakın.

PHP temelde sadece patlayacak ve ham sorgu dize üzerinde foreach doldurmak çünkü [] kullanmak istemiyorsanız nedeni $_POST sadece son değeri içerecek {[(0) }]. Zaten var olan bir ad / değer çifti karşılaştığında, önceki olanın üzerine yazacaktır.

Ancak, yine de hala bu gibi ham sorgu dizesi erişebilirsiniz yapabilirsiniz:

$rawQueryString = file_get_contents('php://input'))

Eğer böyle bir formu var varsayarsak:

<form method="post">
    <input type="hidden" name="a" value="foo"/>
    <input type="hidden" name="a" value="bar"/>
    <input type="hidden" name="a" value="baz"/>
    <input type="submit" />
</form>

$ rawQueryString ardından içerecektir a=foo&a=bar&a=baz.

Daha sonra bir diziye bu ayrıştırmak için kendi mantığı kullanabilirsiniz. Saf bir yaklaşım olacaktır

$post = array();
foreach (explode('&', file_get_contents('php://input')) as $keyValuePair) {
    list($key, $value) = explode('=', $keyValuePair);
    $post[$key][] = $value;
}

o zaman sorgu dizesi her isim için dizilerin bir dizi verecek olan.

Ad dizisi yazdığınız sadece eğer names[] bu durumda size $ _POST değişkeni içinde değişken olarak bir dizi elde edilecektir.

Bunun yerine name="nfo[val]" sadece name="nfo[val][]" ve PHP bir foreach() kullanabilirsiniz kullanacağınız

HTML kodu:

<form method="post">
    <input name="nfo[val][]" value="val1"/>
    <input name="nfo[val][]" value="val2"/>
    <input name="nfo[val][]" value="val3"/>
    <input type="submit" />
</form>

PHP kodu:

$output='';
foreach ($nfo['val'] as $key=>$val) {
    $output.= $val.", ";
}

$output olacaktır: val1, val2, val3

Bu yardımcı olur umarım!