【问题标题】:Change a sql statement when a checkbox is checked选中复选框时更改 sql 语句
【发布时间】:2014-02-17 09:30:33
【问题描述】:

因此,我在发布此内容之前尝试了 Google,但没有找到任何适合我需要的内容。我希望你们能帮忙。

我有一个简单的表单,只有一个下拉框和一个复选框。下拉框显示从数据库中提取的名称列表。该复选框最初未选中。我想要发生的是,当用户单击该框时,页面将刷新并更新下拉框以在列表中包含更多名称,具体取决于我设置的 sql 查询。

所以表格看起来像这样:

    <form name="search" method="post" action="myaction.php">
       <table width="100%">
          <tr>
             <td><label>Select a name to search for:</label></td>
             <td><select name='mynames'><?php 
              echo "<option value='0'>-- Select a Name --</option>";
              mysql_data_seek($request_staff, 0);
              while ($row_mynames = mysql_fetch_assoc($mynames)) {
              echo "<option value='".$row_mynames['myID']."'>".$row_mynames['firstName'] . " " . $row_mynames['lastName'] ."</option>" ; }?></select></td>
              <td><input type="checkbox" name="checkActive" value="1">Include additional Names</td>                                                                                    
              <td><button id="submit" type="submit" ><span>Search</span></button></td>
         </tr>
       </table>
     </form>

我想我可能需要一些 javascript,但我不确定我是否找到了一些建议在检查提交按钮时检查的内容,但我需要在提交表单之前检查它。

sql语句很简单

    $sql = "Select myID, fName, lName, extraNames from myTable $mysearch;

我想要一个这样的 where 子句:(我知道这不是正确的代码,但这是我想要的)

    if checkbox is checked {
       $mysearch = "";
    }else {
       $mysearch = "Where extraNames = 1";
    }

我有一些 javascript 可以检查另一个页面上的复选框,但我不知道如何使用 javascript 更改 sql 查询(用 php 编写)。感谢您提供的任何帮助。

【问题讨论】:

  • 你需要 Ajax 和 JS。
  • 好的,所以我有一个函数来检查复选框是否在 jquery 函数中进行检查,但是如何设置变量或从该函数内部更改 sql 语句?

标签: javascript php sql checkbox


【解决方案1】:

HTML

<form name="search" method="post" action="myaction.php" id="myForm">
   <table width="100%">
      <tr>
         <td><label>Select a name to search for:</label></td>
         <td><select name='mynames'><?php 
          echo "<option value='0'>-- Select a Name --</option>";
          mysql_data_seek($request_staff, 0);
          while ($row_mynames = mysql_fetch_assoc($mynames)) {
          echo "<option value='".$row_mynames['myID']."'>".$row_mynames['firstName'] . " " . $row_mynames['lastName'] ."</option>" ; }?></select></td>
          <td><input type="checkbox" name="checkActive" value="1" onclick="$('#myForm').submit();">Include additional Names</td>                                                                                    
          <td><button id="submit" type="submit" ><span>Search</span></button></td>
     </tr>
   </table>
 </form>

PHP

$sql = "Select myID, fName, lName, extraNames from myTable";
if (!empty($_POST['checkActive'])) {
   $sql .= "WHERE `extraNames` = 1";
}

【讨论】:

  • 我尝试了你建议的 onclick,它没有重新加载下拉菜单,它仍然显示初始值。
  • 可以输出$_POST的内容吗? (var_export($_POST) 这样你就可以看到checkActive 是否确实是1,当复选框被选中时
  • 好的我如何让它显示值状态?我尝试过的方法似乎不起作用。
  • var_export($_POST);死;单击复选框并选中它后,它会显示什么?
  • 我在选中该框之前获得了数组 ( ),并且选中后页面保持不变。
【解决方案2】:

由于网页在客户端(HTML)的浏览器中运行并且 SQL 查询在服务器(PHP)上运行,您需要向页面(HTML)添加一个参数指示是否单击了复选框。当表单提交到服务器上的myaction.php URL 时,您可以将该参数的值输入到if checkbox is checked 语句中。

【讨论】:

  • 你的意思是在 php 中还是在 javascript 函数中?
  • 我已经更新了我的答案以澄清。本质上,cornelb 提供了我所推荐的示例。
  • 好的,但是cornelb提供的也不起作用。当我选中该框时,该页面不会“重新加载”。因此,下拉菜单仍将保留与开始时相同的数据。
猜你喜欢
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2012-06-05
  • 2015-04-18
  • 1970-01-01
相关资源
最近更新 更多