我在这里查找了一些示例,但其中很多对于我对 PHP 的掌握来说太高级了,或者它们的示例对于他们自己的项目来说过于具体。我目前正在努力解决 PHP 表单的一个非常基本的部分。
我正在尝试创建一个带有几个复选框的表单,每个复选框分配一个不同的值,我希望将它们发送到一个变量(数组?),我可以稍后回显/使用,在我的情况下,我将发送选中的值在电子邮件中。
到目前为止,我已经尝试了一些变体,但我最接近的是这个......
<form method='post' id='userform' action='thisform.php'>
<tr>
<td>Trouble Type</td>
<td>
<input type='checkbox' name='checkboxvar' value='Option One'>1<br>
<input type='checkbox' name='checkboxvar' value='Option Two'>2<br>
<input type='checkbox' name='checkboxvar' value='Option Three'>3
</td>
</tr>
</table>
<input type='submit' class='buttons'>
</form>
<?php
$checkboxvar[] = $_REQUEST['checkboxvar'];
?>
我将 $checkboxvar[] 回显到我的电子邮件中。 我的做法完全错误吗?我的另一个想法是使用大量 if 语句。
<form method='post' id='userform' action='thisform.php'> <tr>
<td>Trouble Type</td>
<td>
<input type='checkbox' name='checkboxvar[]' value='Option One'>1<br>
<input type='checkbox' name='checkboxvar[]' value='Option Two'>2<br>
<input type='checkbox' name='checkboxvar[]' value='Option Three'>3
</td> </tr> </table> <input type='submit' class='buttons'> </form>
<?php
if (isset($_POST['checkboxvar']))
{
print_r($_POST['checkboxvar']);
}
?>
您将表单名称作为数组传递,然后您可以使用 var 本身访问所有复选框,这将是一个数组。
要将选中的选项回显到您的电子邮件中,您可以执行以下操作:
echo implode(',', $_POST['checkboxvar']); // change the comma to whatever separator you want
请记住,您应该始终根据需要清理您的输入。
为了记录,存在关于此的官方文档:http://php.net/manual/en/faq.html.php#faq.html.arrays
在输入标签的属性名称中添加
[]
<form action="" name="frm" method="post">
<input type="checkbox" name="hobby[]" value="coding"> coding  
<input type="checkbox" name="hobby[]" value="database"> database  
<input type="checkbox" name="hobby[]" value="software engineer"> soft Engineering <br>
<input type="submit" name="submit" value="submit">
</form>
PHP 代码:
<?php
if(isset($_POST['submit']){
$hobby = $_POST['hobby'];
foreach ($hobby as $hobys=>$value) {
echo "Hobby : ".$value."<br />";
}
}
?>
通过 for 循环尝试这个
<form method="post">
<?php
for ($i=1; $i <5 ; $i++)
{
echo'<input type="checkbox" value="'.$i.'" name="checkbox[]"/>';
}
?>
<input type="submit" name="submit" class="form-control" value="Submit">
</form>
<?php
if(isset($_POST['submit']))
{
$check=implode(", ", $_POST['checkbox']);
print_r($check);
}
?>
您需要使用方括号表示法将值作为数组发送:
<form method='post' id='userform' action='thisform.php'>
<tr>
<td>Trouble Type</td>
<td>
<input type='checkbox' name='checkboxvar[]' value='Option One'>1<br>
<input type='checkbox' name='checkboxvar[]' value='Option Two'>2<br>
<input type='checkbox' name='checkboxvar[]' value='Option Three'>3
</td>
</tr>
</table>
<input type='submit' class='buttons'>
</form>
但请注意,只有选中的复选框的值才会被发送。
另请记住,您可以将自定义索引包含到发送到服务器的数组中,如下所示
<form method='post' id='userform' action='thisform.php'>
<tr>
<td>Trouble Type</td>
<td>
<input type='checkbox' name='checkboxvar[4]' value='Option One'>4<br>
<input type='checkbox' name='checkboxvar[6]' value='Option Two'>6<br>
<input type='checkbox' name='checkboxvar[9]' value='Option Three'>9
</td>
</tr>
<input type='submit' class='buttons'>
</form>
当您想要使用服务器数组中各个对象的
id
accounts
(例如) 将数据发送回服务器并在服务器上识别相同数据时,这特别有用
<form method='post' id='userform' action='thisform.php'>
<tr>
<td>Trouble Type</td>
<td>
<?php foreach($accounts as $account) { ?>
<input type='checkbox' name='accounts[<?php echo $account->id ?>]' value='<?php echo $account->name ?>'>
<?php echo $account->name ?>
<br>
<?php } ?>
</td>
</tr>
<input type='submit' class='buttons'>
</form>
<?php
if (isset($_POST['accounts']))
{
print_r($_POST['accounts']);
}
?>
有没有办法不对值进行排序? 如果我单击选项一、选项二和选项三,结果是 1, 2, 3。 但是,如果我想要像单击 3、而不是 2、而不是 1 这样的点击排序,我必须做什么。我想要的结果是 3、2、1
if (isset($_POST['submit'])) {
for($i = 0; $i<= 3; $i++){
if(isset($_POST['books'][$i]))
$book .= ' '.$_POST['books'][$i];
}