简体   繁体   中英

PHP - How to get the value of multiple checkbox along with an input type

I wanted to create an error when a specific value of $_POST['MAG'] is selected and the input type next to it isn't given.

I've tried to use other methods like if, else, foreach, for, and I still can't seem to get the right coding. I need really need help.

Its my first time coding and i'm taking online classes so its a bit difficult to get help from classmates or teacher

 <form method="post" action="">

  Select which magazine and type qty of subscriptions:<br><br>

  <input type="checkbox" name="MAG[]" value="TREASURE"><b>Treasure Magazine</b> | Qty of Subscriptions: <input type="number" name="TNUMSUBS" size="5px">
  <br>

  <input type="checkbox" name="MAG[]" value="VESSEL"><b>Vessel Magazine</b> | Qty of Subscriptions: <input type="number" name="VNUMSUBS" size="5px">
  <br>

  <input type="checkbox" name="MAG[]" value="MECH"><b>MECH Magazine</b> | Qty of Subscriptions: <input type="number" name="MNUMSUBS" size="5px">
  <br><br>

  <p><input type="submit" name="submit"></p>

</form>


<?php
if (isset($_POST["submit"]))
{
$vNumSubs = $_POST['VNUMSUBS'];
$tNumSubs = $_POST['TNUMSUBS'];
$mNumSubs = $_POST['MNUMSUBS'];

    if(empty($_POST["MAG"]))
    {
        print "You didn't select a magazine";

        foreach($_POST['MAG'] as $magazine)
        {

            if($magazine == "TREASURE" && empty($tNumSubs))
            {
            print "type quantity";
            }

            if($magazine == "VESSEL" && empty($vNumSubs))
            {
                print "type quantity";
            }

            if($magazine == "MECH" && empty($mNumSubs))
            {
                print "type quantity";
            }
        }
    }


}

I tried using the empty() and i'm having a hard time makign it show. please help

Your foreach is in the block that's executed when $_POST['MAG'] is empty, so there's nothing to loop over (it will actually get an error, since $_POST['MAG'] is undefined when none of the boxes are checked, and you can't use foreach on this).

It should be in the else block.

if(empty($_POST["MAG"])) {
    print "You didn't select a magazine";
} else {
    foreach($_POST['MAG'] as $magazine)
    {
        if($magazine == "TREASURE" && empty($tNumSubs))
        {
            print "type quantity";
        }

        if($magazine == "VESSEL" && empty($vNumSubs))
        {
            print "type quantity";
        }

        if($magazine == "MECH" && empty($mNumSubs))
        {
            print "type quantity";
        }
    }
}

But maybe you shouldn't bother with the checkboxes. Just let them fill in the quantity of each magazine, and use 0 to mean that they don't want that magazine.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM