【问题标题】:How do I use a PHP form with checkboxes to select data from mySQL?如何使用带有复选框的 PHP 表单从 mySQL 中选择数据?
【发布时间】:2021-11-13 03:57:27
【问题描述】:

我创建了一个表单,该表单旨在根据工作开发人员的需求使用 PHP 从 mySQL 表中提取雇主信息。当输入为“文本”时,我可以从表中选择行,但在选择使用复选框或单选按钮的行时遇到问题。感谢您提供任何帮助。

这是我的表单代码的一部分:

<h2>Find an employer:</h2><br>
    <form action="phpdoc_JDspecsearch.php" method="POST">
       <label for="city">City</label><br>
       <input type="text" id="city" name="city"><br><br>
       <input type="checkbox" id="ft" name="ft" value="1">
       <label for="ft">Full-time</label>
       <input type="checkbox" id="pt" name="pt" value="1">
       <label for="pt">Part-time</label><br><br>
       <label for="minwage">Minimum Acceptable Wage (hourly)</label><br>
       <input type="number" id="minwage" name="minwage" maxlength="3"><br><br>

这是我在 PHP 中所拥有的:

$city = $_POST['city'];
$ft = $_POST['ft'];
$pt = $_POST['pt'];
$minWage = $_POST['minwage'];

$pt1 = isset($pt);
$ft1 = isset($ft);

$sql = "select * from EmployerInfo where City='$city' AND minWage>=$minWage AND (($pt1=true 
       and partTime='Yes') or ($ft1=true and fullTime='Yes'))";

$result = $conn->query($sql);


if ($result->num_rows > 0) {
   while($row = $result->fetch_assoc() ) {
      echo "<h3>";
      echo $row["companyName"]." </h3> <h4> 
        ".$row["Address"]." <br> ".$row["City"]." ".$row["State"]." ".$row["Zip"]." <br> 
        ".$row["minWage"]."";
      echo "</h4>";
}
}

else {
    echo "<h3>";
    echo "0 records";
    echo "</h3>";
}

最后,这是我的一些 mySQL 表。请注意,我目前只查看 City、fullTime、partTime 和 minWage:

mySQLtable

我的主要问题是,我只有在选中全职/兼职复选框时才能获得结果。如果我只选中一个框,那么当仍然应该有多个结果时,我会得到 0 个结果。有什么帮助吗?抱歉,我知道我的代码有时不是最干净或最有效的。

【问题讨论】:

标签: php mysql sql forms


【解决方案1】:

因为$pt$ft 的值不是“yes”而是值1,所以当只选中一个框时,两个条件都失败。

试试这个:

$sql = "select * from EmployerInfo where City='$city' AND minWage>=$minWage AND (($pt1=true 
       and partTime=1) or ($ft1=true and fullTime=1))";

【讨论】:

  • 感谢您的回答。不幸的是,这似乎仍然不起作用。 fullTime 和 partTime 是我的表中的列,其值为“是”或“否”。我是否需要在 mySQL 中将值更改为 1 而不是“是”?我对此很陌生,所以也许我理解不正确。
  • 我认为当您只选中一个框时,脚本的执行会在 $ft = $_POST['ft']; 处停止。或 $pt = $_POST['pt'];因为其中一个不在全局 $_POST 中。你应该这样做 if(isset($_POST['ft']){$ft1 = $_POST['ft'] } 和 $pt 一样
猜你喜欢
  • 2011-11-05
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多