【问题标题】:Check if at least one checkbox is checked in PHP检查是否在 PHP 中至少选中了一个复选框
【发布时间】:2014-11-15 15:34:44
【问题描述】:

我已经发现了一个名为“检查 PHP 中是否至少勾选了 1 个复选框”的问题,但这并不能满足我的需求,因为我是一个有组织的人,而且这看起来不像是一种有组织的方式。我有这个复选框代码:

    <h1>_________</h1>
   <p>Which records would you like to see?<br />
   Enter as little or as many criteria as you want and then press Submit.</p>
   <form method = "get" action = "http://www.its-a-secret.com/validation.php">
     <div>
       <span>
         <label for = "lastname" id = "txtlabel">Last Name</label>
         <input type = "text" name = "lastname" />
       </span>
       <span>
         <label for = "firstname" id = "txtlabel">First Name</label>
         <input type = "text" name = "firstname" />
       </span>
       <span>
         <label for = "company" id = "txtlabel">Company</label>
         <?php
           session_start();
           mysql_connect("______","_______","________");
           mysql_select_db("____");
           $sql = "SELECT DISTINCT company FROM _____";
           $result = mysql_query($sql);
           print "<select name = 'company' id = 'company'> \n";
           print "           <option></option> \n";
           while ($row = mysql_fetch_array($result)) {
             print "           <option value='" . $row['company'] . "'>" . $row['company'] . "</option> \n";
           }
           print "         </select> \n";
         ?>
       </span>
       <span id = "spanaccttype">
         <label for = "accttype" id = "txtlabel">Account type</label>
         <?php
           mysql_connect("_____","_____","_______");
           mysql_select_db("_____");
           $sql = "SELECT DISTINCT accttype FROM _____";
           $result = mysql_query($sql);
           print "<select name = 'accttype' id = 'accttype'> \n";
           print "           <option></option> \n";
           while ($row = mysql_fetch_array($result)) {
             print "           <option value='" . $row['accttype'] . "'>" . $row['accttype'] . "</option> \n";
           }
           print "         </select> \n";
         ?>
       </span>
       <span id = "spanproductname">
         <label for = "productname" id = "txtlabel">Product Name</label>
         <?php
           mysql_connect("______","______","______");
           mysql_select_db("_____");
           $sql = "SELECT DISTINCT productname FROM ______";
           $result = mysql_query($sql);
           print "<select name = 'productname' id = 'productname'> \n";
           print "           <option></option> \n";
           while ($row = mysql_fetch_array($result)) {
             print "           <option value='" . $row['productname'] . "'>" . $row['productname'] . "</option> \n";
           }
           print "         </select> \n";
         ?>
       </span>
       <span id = "spansharetype">
         <label for = "sharetype" id = "txtlabel">Share Type</label>
         <?php
           mysql_connect("_____","_____","______");
           mysql_select_db("_____");
           $sql = "SELECT DISTINCT sharetype FROM _____";
           $result = mysql_query($sql);
           print "<select name = 'sharetype' id = 'sharetype'> \n";
           print "           <option></option> \n";
           while ($row = mysql_fetch_array($result)) {
             print "           <option value='" . $row['sharetype'] . "'>" . $row['sharetype'] . "</option> \n";
           }
           print "         </select> \n";
         ?>
       </span>
       <span id = "spanclosed">
         <label for = "closed" id = "txtlabel">Closed?</label>
         <?php
           mysql_connect("_________","______","__");
           mysql_select_db("____");
           $sql = "SELECT DISTINCT closed FROM _____";
           $result = mysql_query($sql);
           print "<select name = 'closed' id = 'closed'> \n";
           print "           <option></option> \n";
           while ($row = mysql_fetch_array($result)) {
             print "           <option value='" . $row['closed'] . "'>" . $row['closed'] . "</option> \n";
           }
           print "         </select> \n";
         ?>
       </span>
       <span id = "spanvaluegreaterthan">
         <label for = "valuegreaterthan" id = "txtlabel">Value Greater Than $</label>
         <input type = "number" name = "valuegreaterthan" />
       </span>
       <br />
    <span id = "spanwhatcolumnstoshowquestion">What columns would you like to show? (Note if none are checked none of the below will be shown.)</span>
           <table id = "showwhichcolumns">
             <tr>
               <td><input type = "checkbox" id = "showcolumncompany" name = "showcolumncompany" value = "showcolumncompany" title = "Show column company" /><label for = "showcolumncompany" id = "check">Company</label></td>
              </tr>
              <tr>
               <td><input type = "checkbox" id = "showcolumnaccountnumber" name = "showcolumnaccountnumber" value = "showcolumnaccountnumber" title = "Show column account number" /><label for = "showcolumnaccountnumber" id = "check">Account #</label></td>
              </tr>
              <tr>
               <td><input type = "checkbox" id = "showcolumncontractdate" name = "showcolumncontractdate" value = "showcolumncontractdate" title = "Show column contract date" /><label for = "showcolumncontractdate" id = "check">Contract Date</label></td>
              </tr>
              <tr>
               <td><input type = "checkbox" id = "showcolumnclosed" name = "showcolumnclosed" value = "showcolumnclosed" title = "Show column close" /><label for = "showcolumnclosed" id = "check">Closed?</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumndateclosed" name = "showcolumndateclosed" value = "showcolumndateclosed" /><label for = "showcolumndateclosed" id = "check">Date Closed</label></td>
             </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumndob" name = "showcolumndob" value = "showcolumndob" /><label for = "showcolumndob" id = "check">DOB</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumnproductname" name = "showcolumnproductname" value = "showcolumnproductname" /><label for = "showcolumnproductname" id = "check">Product Name</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumncommissionpercent" name = "showcolumncommissionpercent" value = "showcolumncommissionpercent" /><label for = "showcolumncommissionpercent" id = "check">Commission %</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumncommissionpayoutpercent" name = "showcolumncommissionpayoutpercent" value = "showcolumncommissionpayoutpercent" /><label for = "showcolumncommissionpayoutpercent" id = "check">Commission Payout (%)</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumncommissionpayoutdollars" name = "showcolumncommissionpayoutdollars" value = "showcolumncommissionpayoutdollars" /><label for = "showcolumncommissionpayoutdollars" id = "check">Commission Payout ($)</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumntrailcomm" name = "showcolumntrailcomm" value = "showcolumntrailcomm" /><label for = "showcolumntrailcomm" id = "check">Trail Comm?</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumnguaranteepercent" name = "showcolumnguaranteepercent" value = "showcolumnguaranteepercent" /><label for = "showcolumnguaranteepercent" id = "check">Guarantee %</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumnaccounttype" name = "showcolumnaccounttype" value = "showcolumnaccounttype" title = "Show column account type" /><label for = "showcolumnaccounttype" id = "check">Account Type</label></td>
           </table>

           <p>
             <input type = "submit" value = "Submit" id = "gobutton" />
           </p>

表单提交到名为 validation.php 的页面,这是该页面的代码(我几乎没有任何东西):

    <?php
      $lastname = $_REQUEST["lastname"];

      $firstname = $_REQUEST["firstname"];

      $company = $_REQUEST["company"];

      $accttype = $_REQUEST["accttype"];

      $productname = $_REQUEST["productname"];

      $sharetype = $_REQUEST["sharetype"];

      $closed = $_REQUEST["closed"];

      $valuegreaterthan = $_REQUEST["valuegreaterthan"];
      header("Location: http://www.its-a-secret/?lastname=" . htmlspecialchars($lastname) . "&firstname=" . htmlspecialchars($firstname) . "&company=" . htmlspecialchars($company));
    ?>

我想删除 HTML 特殊字符,而不是更改它们,我还希望名字和姓氏只有一个大写字母,只需告诉用户,如果他们不想,我想要 SQL能够验证名字或姓氏都是大写或类似的东西。我还希望名字和姓氏都有所有空格(如果有的话)。我希望至少选中一个复选框。我还希望有一个正数,即数字文本框中的数字。

【问题讨论】:

    标签: php validation checkbox


    【解决方案1】:

    我不确定您要做什么,但这是我的猜测代码:

      if(isset($_GET['showcolumnxx']) || isset($_GET['showcolumnxx']) || isset($_GET['showcolumnxx'] || etc.))  {
      $newUrl = "http://something.site.end/otherpageshere/[screenAfterValidation].php";
      header('Location: ' . $newUrl);
        } else {
           print "<p style = "color: red;">You must at least check one checkbox.</p>\n";
    
        }
    

    【讨论】:

    • 这基本上检查是否有任何复选框被张贴(选中)
    • 这基本上检查用户是否在他在 HTML 上的复选框中提交了任何数据。
    • 上面写着 $newUrl = "something.site.end/otherpageshere/[screenAfterValidation].php";其实也可以通过验证,验证后直接进入屏幕,所以验证后直接在屏幕上做验证比较好。
    【解决方案2】:

    这可能会有所帮助。我只是在同一个页面上呼应。您可以根据需要进行更改。

    <?php
    if(!empty($_GET['check'])) {
        foreach($_GET['check'] as $check) {
            echo $check."<br />"; 
        }
    }
    ?>
    
    <form method="GET" action="<?php echo $_SERVER['PHP_SELF'];?>">
        <span id = "spanwhatcolumnstoshowquestion">What columns would you like to show? (Note if none are checked none of the below will be shown.)</span>
           <table id = "showwhichcolumns">
             <tr>
               <td><input type = "checkbox" id = "showcolumncompany" name = "check[]" value = "showcolumncompany" title = "Show column company" /><label for = "showcolumncompany" id = "check">Company</label></td>
              </tr>
              <tr>
               <td><input type = "checkbox" id = "showcolumnaccountnumber" name = "check[]" value = "showcolumnaccountnumber" title = "Show column account number" /><label for = "showcolumnaccountnumber" id = "check">Account #</label></td>
              </tr>
              <tr>
               <td><input type = "checkbox" id = "showcolumncontractdate" name = "check[]" value = "showcolumncontractdate" title = "Show column contract date" /><label for = "showcolumncontractdate" id = "check">Contract Date</label></td>
              </tr>
              <tr>
               <td><input type = "checkbox" id = "showcolumnclosed" name = "check[]" value = "showcolumnclosed" title = "Show column close" /><label for = "showcolumnclosed" id = "check">Closed?</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumndateclosed" name = "check[]" value = "showcolumndateclosed" /><label for = "showcolumndateclosed" id = "check">Date Closed</label></td>
             </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumndob" name = "check[]" value = "showcolumndob" /><label for = "showcolumndob" id = "check">DOB</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumnproductname" name = "check[]" value = "showcolumnproductname" /><label for = "showcolumnproductname" id = "check">Product Name</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumncommissionpercent" name = "check[]" value = "showcolumncommissionpercent" /><label for = "showcolumncommissionpercent" id = "check">Commission %</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumncommissionpayoutpercent" name = "check[]" value = "showcolumncommissionpayoutpercent" /><label for = "showcolumncommissionpayoutpercent" id = "check">Commission Payout (%)</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumncommissionpayoutdollars" name = "check[]" value = "showcolumncommissionpayoutdollars" /><label for = "showcolumncommissionpayoutdollars" id = "check">Commission Payout ($)</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumntrailcomm" name = "check[]" value = "showcolumntrailcomm" /><label for = "showcolumntrailcomm" id = "check">Trail Comm?</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumnguaranteepercent" name = "check[]" value = "showcolumnguaranteepercent" /><label for = "showcolumnguaranteepercent" id = "check">Guarantee %</label></td>
              </tr>
              <tr>
                <td><input type = "checkbox" id = "showcolumnaccounttype" name = "check[]" value = "showcolumnaccounttype" title = "Show column account type" /><label for = "showcolumnaccounttype" id = "check">Account Type</label></td>
           </table>
    
           <p>
             <input type = "submit" value = "Submit" id = "gobutton" />
           </p>
    </form>
    

    【讨论】:

    • @ewe,你没有要求安全。无论如何,要获得干净的数据,您有很多选项,例如 htmlspecialchars()、htmlentities()、stripcslashes,或者您可以制作自己的自定义函数。
    猜你喜欢
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2012-04-11
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多