PHP表单复选框计算

PHP表单复选框计算,php,Php,我试图用表单执行一些计算,但每次我尝试使用复选框时,都会出错 复选框以其自身的形式设置在值1上,并且在是否选中时进行检查 $verdieping = isset($_POST["verdieping"]) ? $_POST["verdieping"] : 0; $telefoon = isset($_POST["telefoon"]) ? $_POST["telefoon"] : 0; $netwerk = isset($_POST["netwerk"]) ? $_POST["netwe

我试图用表单执行一些计算,但每次我尝试使用复选框时,都会出错

复选框以其自身的形式设置在值1上,并且在是否选中时进行检查

$verdieping = isset($_POST["verdieping"]) ? $_POST["verdieping"] : 0;  
$telefoon = isset($_POST["telefoon"]) ? $_POST["telefoon"] : 0;  
$netwerk = isset($_POST["netwerk"]) ? $_POST["netwerk"] : 0; 
当我尝试进行计算时,除了带有复选框的选项外,每个选项都有效。
选中两个复选框(telefoon和netwerk)时,值应为30。
如果只选择了一个,则该值应为20。
但是没有一个数学,我试着写下的东西总是会出问题,它总是用20,而不是30

我如何解决这个问题?或者假设我编写的语法完全错误,为计算设置了条件?欢迎您的任何意见

$standnaam = $_SESSION["standnaam"];
$oppervlakte = $_SESSION["oppervlakte"];
$verdieping = $_SESSION["verdieping"];
$telefoon = $_SESSION["telefoon"];
$netwerk = $_SESSION["netwerk"];


if ($oppervlakte <= 10)
$tarief = 100;

if ($oppervlakte > 10 && $oppervlakte <= 20)
$tarief = 90;

if ($oppervlakte > 20)
$tarief = 80;


if($verdieping == 1)
{
$prijsVerdieping = $oppervlakte * 120;
}
else
{
$prijsVerdieping = 0;
}

if(($telefoon == 1) && ($netwerk == 1))
{
$prijsCom = 30; // never get this value, it always uses 20
}

if(($telefoon == 1) || ($netwerk == 1))
{
$prijsCom = 20;
}

$prijsOpp = $tarief * $oppervlakte; // works
$totalePrijs = $prijsOpp + $prijsVerdieping + $prijsCom; //prijsCom value is always wrong
$standnaam=$\u会话[“standnaam”];
$oppervlakte=$\会话[“oppervlakte”];
$verdieping=$\会话[“verdieping”];
$telefoon=$\会话[“telefoon”];
$netwerk=$\u会话[“netwerk”];
如果($Opperlakte 10和$Opperlakte 20)
$tarief=80;
如果($verdieping==1)
{
$prijsVerdieping=$oppervlakte*120;
}
其他的
{
$prijsVerdieping=0;
}
如果($telefoon==1)和($netwerk==1))
{
$prijsCom=30;//永远不要获取此值,它总是使用20
}
如果($telefoon==1)| |($netwerk==1))
{
$prijsCom=20;
}
$prijsOpp=$tarief*$oppervlakte;//作品
$totalePrijs=$prijsOpp+$prijsVerdieping+$prijsCom//prijsCom值总是错误的
问候

编辑:下面2个php文件中的完整代码

<?php
if (!empty($_POST))
{ 
$standnaam = $_POST["standnaam"];
$oppervlakte = $_POST["oppervlakte"];
//value in the form van checkboxes op 1 zetten!
$verdieping = isset($_POST["verdieping"]) ? $_POST["verdieping"] : 0;  //if checkbox checked     value 1 anders 0
$telefoon = isset($_POST["telefoon"]) ? $_POST["telefoon"] : 0;  
$netwerk = isset($_POST["netwerk"]) ? $_POST["netwerk"] : 0; 


if (is_numeric($oppervlakte)) 
{
    $_SESSION["standnaam"]=$standnaam;
    $_SESSION["oppervlakte"]=$oppervlakte;
    $_SESSION["verdieping"]=$verdieping;
    $_SESSION["telefoon"]=$telefoon;
    $_SESSION["netwerk"]=$netwerk;
    header("Location:ExpoOverzicht.php"); //verzenden naar ExpoOverzicht.php
}
else 
{
    echo "<h1>Foute gegevens, Opnieuw invullen a.u.b</h1>";
}  
}

?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" id="form1">
<h1>Vul de gegevens in</h1>
<table>
    <tr>
        <td>Standnaam:</td>
        <td><input type="text" name="standnaam" size="18"/></td>
    </tr>
    <tr>
        <td>Oppervlakte (in m^2):</td>
        <td><input type="text" name="oppervlakte" size="6"/></td>
    </tr>
    <tr>
        <td>Verdieping:</td>
        <td><input type="checkbox" name="verdieping" value="1"/></td>
        <!--value op 1 zetten voor checkbox! indien checked is value 1 -->
    </tr>
    <tr>
        <td>Telefoon:</td>
        <td><input type="checkbox" name="telefoon" value="1"/></td>
    </tr>
    <tr>
        <td>Netwerk:</td>
        <td><input type="checkbox" name="netwerk" value="1"/></td>
    </tr>
    <tr>
        <td><input type="submit" name="verzenden" value="Verzenden"/></td>
    </tr>
</table>


我注意到的一个问题是这些线

if(($telefoon == 1) && ($netwerk == 1))  {
$prijsCom = 30; // will get set to 30.
}

if(($telefoon == 1) || ($netwerk == 1))  {
$prijsCom = 20; // will now be set to value of 20.
}
这就是为什么如果
$telefoon
$netwerk
都是
1
$prijsCom
被设置为
30
的值。它离开
if
块,进入下一个块,即

if(($telefoon == 1) || ($netwerk == 1))  {
    $prijsCom = 20;
}
它将计算为
true
,因为
$telefoon==1
计算为
true
,并将
$prijsCom
的值覆盖为
20

根据代码的使用方式,作为一种可能的解决方法,您可以先添加
|
条件,以便将值设置为
20
,无论
$telefoon
还是
$netwerk
设置为
1
,然后检查它们是否都是
1

更新: 查看代码时,我注意到您使用的是
$\u SESSION
变量,但您没有在文件开头调用
SESSION\u start()

<?php
session_start(); // <--you need to call this first
$standnaam = $_SESSION["standnaam"];
$oppervlakte = $_SESSION["oppervlakte"];
...

我注意到的一个问题是这些行

if(($telefoon == 1) && ($netwerk == 1))  {
$prijsCom = 30; // will get set to 30.
}

if(($telefoon == 1) || ($netwerk == 1))  {
$prijsCom = 20; // will now be set to value of 20.
}
这就是为什么如果
$telefoon
$netwerk
都是
1
$prijsCom
被设置为
30
的值。它离开
if
块,进入下一个块,即

if(($telefoon == 1) || ($netwerk == 1))  {
    $prijsCom = 20;
}
它将计算为
true
,因为
$telefoon==1
计算为
true
,并将
$prijsCom
的值覆盖为
20

根据代码的使用方式,作为一种可能的解决方法,您可以先添加
|
条件,以便将值设置为
20
,无论
$telefoon
还是
$netwerk
设置为
1
,然后检查它们是否都是
1

更新: 查看代码时,我注意到您使用的是
$\u SESSION
变量,但您没有在文件开头调用
SESSION\u start()

<?php
session_start(); // <--you need to call this first
$standnaam = $_SESSION["standnaam"];
$oppervlakte = $_SESSION["oppervlakte"];
...

调用
会话启动()
之后调用
会话_start()
之后,我不确定我是否理解您的问题,您的HTML正在提交带有复选框的表单,然后您正在根据已选中的内容分配值?你能再解释一下吗?你也可以发布你的HTML来确认没有问题吗?我想更多的是计算错误。我不确定我是否理解你的问题,你的HTML正在提交一个带有复选框的表单,然后你正在根据选中的内容分配值?你能再解释一下吗?你也可以发布你的HTML来确认没有问题吗?我认为更多的是计算错误。那么给复选框赋值的更好方法是什么呢?了解选中的复选框,并在选中时使用执行计算。干杯您可以将数组作为复选框的
name
属性,即
name[]
,然后如果调用
$var=$\u POST['name']
$var
将是所有选中复选框的数组。现在我想起来了,它将只包含数组中的
属性,在您的情况下,这些属性都是整数,我不确定这是否是您想要的。由于语言障碍,很难给出一个更好的例子,如果你需要我澄清,请让我知道。呵呵,是的,让我们保持这一点。上面的解决方案解决了这个问题,但我的代码似乎也有类似的问题。如果我选择了一切,我会得到正确的结果。如果我选择了除楼层以外的所有选项,则会得到正确的结果。任何介于两者之间的组合都会产生错误的结果。我是不是又重写了一些计算?呵呵,所有的代码都列在上面的编辑栏里了。例如,选中IBM 9(opp)3x复选框=2010(正确)。东芝6(opp)telefoon&netwerk检查630(正确)。然后错误:微软35判定0 telefoon 1网络0(应给出1470,但给出1370)。XXX 35(opp)判定1 telefoon 1 netwerk 1应给出7400,但仅给出7000(再次出错)。我很难实际帮助了解发生了什么,我不知道这些数字来自何处。那么,给复选框赋值的更好方法是什么?了解选中的复选框,并在选中时使用执行计算。干杯您可以将数组作为复选框的
name
属性,即
name[]
,然后如果调用
$var=$\u POST['name']
$var
将是所有选中复选框的数组。现在我想起来了,它将只包含t