Her iki formda bir sayfa sonrası iki form tüm alanları birini gönderme, yoksa benim kodunda bir hata var

3 Cevap php

Ben bir sayfada iki form var. Sayfa kendisinden daha gerçekçi kodu ile benim yazı güncellemek için karar verdik ...

 <form action="test.php" method="POST">
 <strong>Details of work carried out</strong>
 <textarea name="detailsOfWorkCarriedOut"></textarea>
 <strong>Materials used</strong>
 <textarea name="materialsUsed"></textarea>
 <input type="hidden" name="submitted" value="true">
 <input type="submit" value="Save">
 <form/>
 <br />
 <form action="test.php" method="POST">
 <strong>Details of work not carried out</strong>
 <textarea name="detailsOfWorkNotCarriedOut"></textarea>
 <input type="hidden" name="submitted" value="true">
 <input type="submit" value="Save">
 </form>

"Test.php" basitçe içerir:

 <?php
print_r($_POST)
?>

Ben sonrası formu olursa olsun, hep aynı dizi döndü olsun:

Array ( [detailsOfWorkCarriedOut] => [materialsUsed] => [submitted] => true [detailsOfWorkNotCarriedOut] => )

Neden bu?

3 Cevap

Senin sorun

<form/>

8. satırdaki: ile değiştirin

</form>

:)

Evet, tarayıcılar gönderme düğmesi iç içe olduğu şeklinde sadece alanları gönderin. Siz form gönderimleri izlemek ve teslimiyet, diğer formdan değerleri eklemek için JavaScript kullanabilirsiniz, ama şu anda beklenen davranışı görüyoruz.

Sizin gönderme düğmesi sadece o one formu gönderdiğinde, içeride one şeklidir, bu nedenle.

Yani, hayır, $_POST iki formlarının geldiğini verileri içermesi gerekir: sadece sunulan birinden gelen verileri içermelidir.

(but, why don't you try it ? )

Eğer test etmek için sadece istekli iseniz, bu gibi çirkin bir şey, hile yapmak gerekir:

<form method="get">
    <input name="a" type="text">
</form>

<form method="get">
    <input name="b" type="text">
</form>

<?php

var_dump($_GET);

(Yeah, it's ugly, I said ^^ )

Eğer ilk alana bir şey yazın ve ENTER tuşuna basarak gönderirseniz, siz alırsınız:

array
  'a' => string 'aa' (length=2)

Ve, ikinci alana sahip:

array
  'b' => string 'second field' (length=12)

Yani, sadece bir form her zaman :-)