[英]POST checkbox form via PHP
我的表單同時具有文本區域和復選框。 當我POST
的結果,只有復選框值中的一個被貼出來,即使不止一個選擇。
這是我的表格:
<form action="search.php">
<input type="text" name="term">
<input type="checkbox" name="filter" value="subject"> Subject
<input type="checkbox" name="filter" value="course"> Course
<input type="checkbox" name="filter" value="professor"> Professor
<input type="submit" name="submit" value="Go" />
這就是我如何echo
表單( search.php
):
<?php
$term = $_GET['term'];
$filter = $_GET['filter'];
echo "$term $filter";
?>
嘗試以下方法:
<input type="checkbox" name="filter[]" value="subject" /> Subject
<input type="checkbox" name="filter[]" value="course" /> Course
<input type="checkbox" name="filter[]" value="course" /> Professor
在您的search.php腳本中,提交的“ filter”變量將被視為一個數組。
有關更多信息,請參見此處: http : //us2.php.net/manual/zh/faq.html.php#faq.html.arrays
我認為另一個類似的問題是: HTML輸入數組
問題是您為每個復選框分配了名稱,當前正在發生的情況是PHP讀取了第一個復選框並將其值分配給變量,正在讀取下一個過濾器復選框,但隨后覆蓋了變量的當前分配值,然后再次使用第三個復選框。 因此,您永遠只會獲得最后一個被選中的復選框作為$ filter變量的值。
您需要為每個復選框分別分配不同的名稱,例如:
<form action="search.php">
<input type="text" name="term" />
<input type="checkbox" name="filter1" value="subject" /> Subject
<input type="checkbox" name="filter2" value="course" /> Course
<input type="checkbox" name="filter3" value="professor" /> Professor
<input type="submit" name="submit" value="Go" />
然后是PHP:
<?php
$term = $_GET['term'];
$filter1 = $_GET['filter1'];
$filter2 = $_GET['filter2'];
$filter3 = $_GET['filter3'];
echo "$term $filter1 $filter2 $filter3";
?>
您還將最后一個復選框的值與第二個復選框的值相同,因此我將其值從課程更改為教授,如果這實際上是錯誤的,則顯然可以將其更改回去。
另一個注意事項,使用POST而不是GET方法可能也是一個好主意,因為它更安全,但是,您可能有理由使用GET,但這只是一個提示:)
我認為您有3個輸入框,它們都命名為相同的“過濾器”,而php有望獲得其中的一個?
對於單選按鈕,我們使用數組過濾器[],因此,如果您確實想要復選框並且您真的希望它們都具有相同的名稱,請嘗試
<input type="checkbox" name="filter[]" value="subject"/> Subject
<input type="checkbox" name="filter[]" value="course"/> Course
<input type="checkbox" name="filter[]" value="course"/> Professor
然后在您的PHP中,您將獲得過濾器作為數組。
可能是因為您沒有關閉輸入標簽,而是將它們全部視為一個?
您還可以為每個復選框使用不同的名稱,例如filter_1,filter_2等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.