复选框仅返回第一个值

时间:2014-08-28 08:58:14

标签: php html checkbox

我正在创建一个带复选框的表单。但不知怎的,我只得到第一个结果..

希望你能帮忙!

<strong>My form </strong>

<form action="historie.php" method="post">
<?php
// ophalen van bijbehorende producten
    $sql_product_opzoek = "SELECT * FROM product_bestellingen WHERE bestelnummer = $bestelnummer_opzoek";
    $sql_p_opzoek = mysqli_query($con, $sql_product_opzoek);
    $count = 0;
    while ($row = mysqli_fetch_array($sql_p_opzoek)) {

        $artikelnr_retour = $row['artikelnr'];
        $merk_retour = $row['merk'];
        $artikelnr_lev_retour = $row['artikelnr_lev'];
        $kleur_retour = $row['kleur'];
        $maat_retour = $row['maat'];
        $prijs_retour = $row['prijs'];


        if ($count === 0) {
            $sql_opzoek = "SELECT * FROM bestellingen WHERE bestelnummer = $bestelnummer_opzoek";
            $sql_b_opzoek = mysqli_query($con, $sql_opzoek);

            while ($row = mysqli_fetch_array($sql_b_opzoek)) {
                $tent = $row['tent'];
            }

            echo $tent;
        }

        echo "
            <input type=\"checkbox\" name=\"retour[" . $artikelnr_retour . "]\" value=\"" . $artikelnr_retour . "\">
            <input type=\"hidden\" name=\"merk\" value=\"" . $merk_retour . "\">
            <input type=\"hidden\" name=\"art_lev\" value=\"" . $artikelnr_lev_retour . "\">

            <input type=\"hidden\" name=\"kleur\" value=\"" . $kleur_retour . "\">
            <input type=\"hidden\" name=\"maat\" value=\"" . $maat_retour . "\">
            <input type=\"hidden\" name=\"prijs\" value=\"" . $prijs_retour . "\">
            <input type=\"hidden\" name=\"bestelnummer\" value=\"" . $bestelnummer_opzoek . "\">
        ";

        if ($count === 0) {
            echo "<input name=\"submit\" type=\"submit\">";
        }

    echo "</form>";
        $count++;
}

这导致下一个HTML

<strong>HTML</strong>
<form action="historie.php" method="post">
    <tr>
        <td>654655</td>
        <td>Huggo Boss</td>
        <td>xwsmcdD</td>
        <td> 13</td>
        <td>45</td>
        <td>€ 99,95</td>
        <td>123456</td>
        <td>
            <input type="checkbox" name="retour[654655]" value="654655">
            <input type="hidden" name="merk" value="Huggo Boss">
            <input type="hidden" name="art_lev" value="xwsmcdD">

            <input type="hidden" name="kleur" value=" 13">
            <input type="hidden" name="maat" value="45">
            <input type="hidden" name="prijs" value="99,95">
            <input type="hidden" name="bestelnummer" value="987654">
        </td>
        <td><input name="submit" type="submit"></td>
    </tr>
</form>
    <tr>
        <td>100254</td>
        <td>Maripe</td>
        <td>Stun</td>
        <td> 66</td>
        <td>33</td>
        <td>€ 295,95</td>
        <td></td>
        <td>
            <input type="checkbox" name="retour[100254]" value="100254">
            <input type="hidden" name="merk" value="Maripe">
            <input type="hidden" name="art_lev" value="Stun">

            <input type="hidden" name="kleur" value=" 66">
            <input type="hidden" name="maat" value="33">
            <input type="hidden" name="prijs" value="295,95">
            <input type="hidden" name="bestelnummer" value="987654">
        </td>
        <td></td>
    </tr>
</form>

为了得到结果,我使用下一个PHP

PHP获得结果

 foreach ($_POST['retour'] as $value) {
     echo $value; 
 }

这仅在第一个结果中产生:654655

希望你能帮忙!

3 个答案:

答案 0 :(得分:1)

无需使用<input type="checkbox" name="retour[654655]" value="654655">

只需使用数组。即。

 <input type="checkbox" name="retour[]" value="654655">
<input type="checkbox" name="retour[]" value="100254">

这将为您提供$retour[0]=654655$retour[1]=100254

答案 1 :(得分:1)

您的表单在第二个复选框之前关闭。请尝试以下代码: -

 <strong>HTML</strong>
<form action="historie.php" method="post">
    <tr>
        <td>654655</td>
        <td>Huggo Boss</td>
        <td>xwsmcdD</td>
        <td> 13</td>
        <td>45</td>
        <td>€ 99,95</td>
        <td>123456</td>
        <td>
            <input type="checkbox" name="retour[654655]" value="654655">
            <input type="hidden" name="merk" value="Huggo Boss">
            <input type="hidden" name="art_lev" value="xwsmcdD">

            <input type="hidden" name="kleur" value=" 13">
            <input type="hidden" name="maat" value="45">
            <input type="hidden" name="prijs" value="99,95">
            <input type="hidden" name="bestelnummer" value="987654">
        </td>
        <td></td>
    </tr>

    <tr>
        <td>100254</td>
        <td>Maripe</td>
        <td>Stun</td>
        <td> 66</td>
        <td>33</td>
        <td>€ 295,95</td>
        <td></td>
        <td>
            <input type="checkbox" name="retour[100254]" value="100254">
            <input type="hidden" name="merk" value="Maripe">
            <input type="hidden" name="art_lev" value="Stun">

            <input type="hidden" name="kleur" value=" 66">
            <input type="hidden" name="maat" value="33">
            <input type="hidden" name="prijs" value="295,95">
            <input type="hidden" name="bestelnummer" value="987654">
        </td>
        <td></td>
    </tr>
    <input name="submit" type="submit">
</form>

答案 2 :(得分:0)

如果您同时选中这两个框,则两个值都应通过$_POST。如果您只选中其中一个框,则只会通过$_POST发送该值。

实施例

选中了一个复选框:

Only one checked

选中了两个复选框:

enter image description here

解决方案:

请尝试以下操作以确保$_POST始终存在某些内容:

<input type="hidden" name="retour[654655]" value="0">
<input type="checkbox" name="retour[654655]" value="1">

如果$_POST['654655']的值等于1,则它存在。如果它等于0则不存在。只要没有选中复选框,就不会提交复选框的值。使用上面给出的解决方案,选中复选框后将隐藏隐藏字段的值。