PHP表单复选框问题

时间:2010-04-16 09:12:52

标签: php

我有一个表格,其中包含以下输入:
姓名:IBM
表面(m ^ 2):9
楼层:( Checkbox1)
电话:( Checkbox2)
网络:( Checkbox3)
按钮发送到下一个php页面。

当我按下提交按钮时,上面的所有值都会在表格中显示 前两个(姓名和姓氏)正确显示在表格中 问题在于复选框。如果我选择第一个复选框,表中的值应显示为1.如果未选中,则表中的值应为空。

 echo "<td>$Name</td>"; // works properly
 echo "<td>$Surface</td>"; // works properly
 echo "<td>....no idea for the checkboxes</td>;

我的PHP代码的一部分包含变量:

<?php
if (!empty($_POST))
{
$name= $_POST["name"];
$surface= $_POST["surface"];
$floor= $_POST["floor"]; 
$phone= $_POST["telefoon"]; 
$network= $_POST["netwerk"]; 


if (is_numeric($surface)) 
{
    $_SESSION["name"]=$name;
    $_SESSION["surface"]=$surface;
    header("Location:ExpoOverzicht.php"); 
}
else 
{
    echo "<h1>Wrong input, Pleasee fill in again</h1>";
}  

if(!empty($floor) && ($phone) && ($network))
{
    $_SESSION["floor"]=$floor;
    $_SESSION["phone"]=$phone;
    $_SESSION["network"]=$network;
    header("Location:ExpoOverzicht.php"); 
}    
}

?>

带表格的第二页:

<?php

$name= $_SESSION["name"];
$surface= $_SESSION["surface"];
$floor= $_SESSION["floor"];
$phone= $_SESSION["phone"];
$network= $_SESSION["network"];

echo "<table class=\"tableExpo\">";

echo "<th>name</th>";
echo "<th>surface</th>";
echo "<th>floor</th>";
echo "<th>phone</th>";
echo "<th>network</th>";
echo "<th>total price</th>";

for($i=0; $i <= $_SESSION["name"]; $i++)
{
    echo "<tr>";

        echo "<td>$name</td>"; // gives right output
        echo "<td>$surface</td>"; // gives right output
        echo "<td>...</td>"; //wrong output (ment for checkbox 1)
        echo "<td>...</td>"; //wrong output (ment for checkbox 2)
        echo "<td>...</td>"; //wrong output (ment for checkbox 3)
        echo "<td>....</td>";

    echo "</tr>;";
}
echo "</table>";



<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" id="form1">
<h1>Vul de gegevens in</h1>
<table>
    <tr>
        <td>Name:</td>
        <td><input type="text" name="name" size="18"/></td>
    </tr>
    <tr>
        <td>Surface(in m^2):</td>
        <td><input type="text" name="surface" size="6"/></td>
    </tr>
    <tr>
        <td>Floor:</td>
        <td><input type="checkbox" name="floor" value="floor"/></td>
    </tr>
    <tr>
        <td>Phone:</td>
        <td><input type="checkbox" name="phone" value="phone"/></td>
    </tr>
    <tr>
        <td>Network:</td>
        <td><input type="checkbox" name="network" value="network"/></td>
    </tr>
    <tr>
        <td><input type="submit" name="verzenden" value="Verzenden"/></td>
    </tr>
</table>

由于我不得不翻译,可能会有一些拼写错误。 最好的祝福。

3 个答案:

答案 0 :(得分:2)

不是直接指定您的复选框变量,而是先查看它们是否已被选中。

$verdieping = isset($_POST["floor"]) ? $_POST["floor"] : 0; 
$telefoon = isset($_POST["telefoon"]) ? $_POST["telefoon"] : 0; 
$netwerk = isset($_POST["netwerk"]) ? $_POST["netwerk"] : 0; 

这样,如果用户没有勾选复选框,则为其分配值“0”而不是未定义的变量。

答案 1 :(得分:1)

如果您声明一个复选框:

<input type="checkbox" name="mycheckbox" value="1">

您可以在提交表单后检查值:

if(!empty($_POST["mycheckbox"])) {
    // checkbox was checked
}
else {
    // checkbox was not checked
}

答案 2 :(得分:1)

在这个php页面中你可以像这样写,它可能是你问题的解决方案

if (!empty($_POST))
{
$standnaam = $_POST["name"];
$oppervlakte = $_POST["surface"];
$verdieping = $_POST["floor"]; 
$telefoon = $_POST["telefoon"]; 
$netwerk = $_POST["netwerk"]; 


if (is_numeric($oppervlakte)) 
{
    $_SESSION["name"]=$standnaam;
    $_SESSION["surface"]=$oppervlakte;
    header("Location:ExpoOverzicht.php"); 
}
else 
{
    echo "<h1>Wrong input, Pleasee fill in again</h1>";
}  

if(!empty($verdieping) && ($telefoon) && ($netwerk))
{
    $_SESSION["floor"]=$verdieping;
    $_SESSION["phone"]=$telefoon;
    $_SESSION["network"]=$netwerk;
    header("Location:ExpoOverzicht.php"); 
}    
}