簡體   English   中英

通過PHP的POST復選框形式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM