PHP: Bazı POST değişkenleri almıyor?

2 Cevap php

Ben bir form var, o aşağıdaki değerleri geçirir:

image_title,
image_description,
image_file

Ben bu formu birden çok kez sunmak istedim, bu yüzden aşağıdaki yaptım:

image_title_1,
image_description_1,
image_file_1

image_title_2,
image_description_2,
image_file_2

. Birden çok kez, bu yüzden alanlar var 1 - 10 ben formu ve POST dizinin içeriği yazdırmak, tek sorun "image_title_1" sonra herhangi bir "image_title_ #" dizisinde yok: ama her şey yapar.

Yani dizi gibi görünecektir:

image_title_1 -> "title!"
image_description_1 -> "description!"
image_file_1 -> file

image_description_2 -> "description!"
image_file_2 -> file

image_description_3 -> "description!"
image_file_3 -> file

Bu yüzden ben birbirleri ile açıklama ve başlık takas ne çalışmak, ancak başlık hala 1 sonra için göstermez. HERHANGİ işlem yapmıyorum, ben gerçekten sadece bile dokunmadan önce $ _POST dizi yazdırarak ediyorum . İşte bu neden ne olabilir, hiçbir mantıklı?

Netleştirmek için: Sorun (örnek: image_title_3) "image_title_ #" dir image_title_1 hariç geçmedi, ben sırasını yeniden düzenlemek bile. Ben çıktısını almadan hiçbir işlem yok.

Düzen, html kaynak sadece budur:

<form method="post" action="">
    <input type="text" name="image_title_1"></input>
    <input type="text" name="image_description_1"></input>
    <input type="text" name="image_file_1"></input>

    <input type="text" name="image_title_2"></input>
    <input type="text" name="image_description_2"></input>
    <input type="text" name="image_file_2"></input>

    <input type="text" name="image_title_3"></input>
    <input type="text" name="image_description_3"></input>
    <input type="text" name="image_file_3"></input>

    <input type="submit" name="submit" value="submit"></input>
</form>

2 Cevap

Daha iyi bir çözüm yerine, bu deneyin, bunları diziye dönüştürülmesi olacaktır:

<form method="post" action="">
    <input type="text" name="image_title[]"></input>
    <input type="text" name="image_description[]"></input>
    <input type="text" name="image_file[]"></input>

    <input type="submit" name="submit" value="submit"></input>
</form>

Şimdi, PHP komut, bu gibi onların dizi alabilirsiniz:

print_r($_POST['image_title']);
print_r($_POST['image_description']);
print_r($_POST['image_file']);

.

Ile alan adı suffixing [] dizisine dönüştürür. Burada diğer iyi şey, çok kodunuzu kısaltılmış olmasıdır.

Eğer dizi var bir kere, sen yapabilirsiniz kullanarak onlar üzerinden döngü foreach:

foreach($_POST['image_title'] as $key => $value)
{
  // process them any way you want
}

Kod çalışır. Ben sadece kesilmiş ve formunuzu yapıştırın ve bir test gönderirim

  Array
(
[image_title_1] => 1
[image_description_1] => 2
[image_file_1] => 3
[image_title_2] => 4
[image_description_2] => 5
[image_file_2] => 6
[image_title_3] => 7
[image_description_3] => 8
[image_file_3] => 9
[submit] => submit
)