在PHP表单处理中苦苦挣扎

时间:2013-11-13 12:09:54

标签: php arrays forms checkbox

任何人都可以帮助解决我无法理解的表单问题吗?我有一组复选框,其值无法显示在生成的邮件中。

这是我用来设置变量的方法:

    $benefit01  = ($_POST['benefit_01']);
$benefit02  = ($_POST['benefit_02']);
$benefit03  = ($_POST['benefit_03']);
$benefit04  = ($_POST['benefit_04']);
$benefit05  = ($_POST['benefit_05']);
$benefit06  = ($_POST['benefit_06']);

$property   = addslashes($_POST['property']);
$owner      = addslashes($_POST['owner']);
$mainHeating    = addslashes($_POST['Heating_mainHeating_answer']);
$boiler_working = addslashes($_POST['boiler_working']);
$boiler_age = addslashes($_POST['boiler_age']);

$postcode   = addslashes($_POST['postcode']);
$address1   = addslashes($_POST['address1']);
$address2   = addslashes($_POST['address2']);
$address3   = addslashes($_POST['address3']);
$city       = addslashes($_POST['town']);
$county     = addslashes($_POST['county']);

$name       = addslashes($_POST['firstName']);
$surname    = addslashes($_POST['surname']);
$email      = addslashes($_POST['email']);
$phone      = addslashes($_POST['phonenum']);


$type   = addslashes($_POST['type']);
$time   =   $_POST['time'];
$src = $_POST['urlsrc'] ;

$benefits   = $benefit01." ".$benefit02." ".$benefit03." ".$benefit04." ".$benefit05." ".$benefit06;
$address = $address1." ".$address2;
$note = "Benefits: ".$benefits.". Property Type: ".$property.". Home Owner: ".$owner.". Type of Heating: ".$mainHeating.". Boiler Working: ".$boiler_working.". Boiler Age: ".$boiler_age.". Timescales: ".$time.". Address Line 3: ".$address3;

所以“好处”是复选框。我曾尝试将它们命名为同一个来创建一个数组,然后插入值,但这也不起作用。最终这些数据被发送到dbase,这就是为什么大部分信息都被转储到$ note变量中。

我对此并不了解,并从一个有效的(尽管是简化的)表格中采用了这个例子。任何帮助表示赞赏。

**下面添加的表格的小样本:

    <input name="ctl00_chkBenefit" type="checkbox" id="benefit_01" class="checkbox-benefit" value="Child Tax Credit" />

儿童税收抵免(相关收入为15,860英镑或以下)

     <input name="ctl01_chkBenefit" type="checkbox" id="benefit_02" class="checkbox-benefit" value="State Pension Credit" />

国家养老金信贷

4 个答案:

答案 0 :(得分:1)

你的复选框的HTML是这样的吗?

<input type="checkbox" name="benefit_01" value="Benefit 01" /> Benefit 01

然后,如果用户选中该复选框,$_POST['benefit_01']将是该复选框的值 - 收益01

如果未选中,则不会设置$_POST['benefit_01']

已编辑1:

并且你应该在<form>中使用设定的方法和行动:

<form action="index.php" method="post">
     <input name="ctl00_chkBenefit" type="checkbox" id="benefit_01" class="checkbox-benefit" value="Child Tax Credit" />
</form>

已编辑2:

您对该复选框有不同的name。您在$_POST他们id使用了name,而不是$benefit01 = ($_POST['ctl00_chkBenefit']); $benefit02 = ($_POST['ctl01_chkBenefit']); $benefit03 = ($_POST['ctl02_chkBenefit']); $benefit04 = ($_POST['ctl03_chkBenefit']); $benefit05 = ($_POST['ctl04_chkBenefit']); $benefit06 = ($_POST['ctl05_chkBenefit']);

将您的代码更改为:

{{1}}

现在它将100%工作:)

答案 1 :(得分:1)

首先,

<input type="checkbox" name="benefits[]" value="one">
<input type="checkbox" name="benefits[]" value="2">
<input type="checkbox" name="benefits[]" value="III">

将在PHP中创建一个数组$ _POST ['benefits']。

其次,如果选中复选框,变量将仅包含该值。

答案 2 :(得分:0)

如果用户未选中,则在$ _POST中未设置输入复选框。您可以使用empty()确定它们是否已设置和/或为空,然后将值设置为要插入数据库的值。

答案 3 :(得分:-1)

crate the input field name like this 

<input type="checkbox" name="c[]" value="1">
<input type="checkbox" name="c[]" value="2">
<input type="checkbox" name="c[]" value="3">
<input type="submit" >

PHP你可以这样写 -

<?php 
$_POST['benefits'] 
?>