【发布时间】:2019-06-27 03:54:33
【问题描述】:
我正在设置一个目录页面,该页面根据通过文本字段(有效)和/或复选框(无效)搜索的内容显示不同的锻炼
我不知道是否可以没有提交按钮,但我希望它搜索项目并让它搜索多个复选框
我尝试在互联网上寻求帮助,但找不到与我的项目相关的任何内容。
$sqlBrowse = "SELECT * FROM workoutLibrary
WHERE name LIKE :findInName
OR bodyPart LIKE :findInBodyPart
OR muscleGroup LIKE :findInMuscleGroup
OR equipment LIKE :findInEquipment
ORDER BY name";
$searchTerm = '';
$search = '%';
if (isset($_POST['search'])) {
$searchTerm = $_POST['search'];
$search = '%' . $searchTerm . '%';
$stmt = $conn->prepare($sqlBrowse);
$stmt->bindParam(":findInName", $search);
$stmt->bindParam(":findInBodyPart", $search);
$stmt->bindParam(":findInMuscleGroup", $search);
$stmt->bindParam(":findInEquipment", $search);
$stmt->execute();
$exercises = $stmt->fetchAll();
}
else if (isset($_POST['checklist'])) {
$searchTerm = $_POST['checklist'];
$search = '%' . $searchTerm . '%';
$stmt = $conn->prepare($sqlBrowse);
$stmt->bindParam(":findInEquipment", $search);
$stmt->execute();
$exercises = $stmt->fetchAll();
}
?>
HTML:
<form action="directory.php" method="post">
<input type="checkbox" name="checklist[]" class="check" value="Dumbell"> Dumbbell<br>
<input type="checkbox" name="checklist[]" class="check" value="kettlebell"> Kettlebell<br>
</form>
<div class="col-sm-10">
<h1 class="theTitle"> Workout Directory </h1>
<div class="d-flex flex-wrap">
<?php
foreach ($exercises as $exercise) {
?>
<div class="card" id="workoutCard">
<div class="card-header"> <?= $exercise->name ?> </div>
<div class="card-body">
<div class="thumbnail"> </div>
<div class="info">
<a id="subTitle">Body Parts:</a> <?= $exercise->bodyPart ?><BR>
<a id="subTitle">Muscle Group:</a> <?= $exercise->muscleGroup ?><BR>
<a id="subTitle">Equipment Used:</a> <?= $exercise->equipment ?>
</div>
</div>
</div>
<?php
}
?>
我的搜索栏工作得很好,所以我没有显示它的 HTML。 我是初学者,所以我不确定我哪里出错了,我不确定我是否可以在同名变量下有两个 PDO 执行语句。
任何帮助或提示将不胜感激
更新:一个复选框现在将显示所有相关信息(没有清单 []),但其中两个不起作用(我相信我需要清单 [] 使这两个工作) 所以我的新问题是,我该如何做到这一点:
$search = '%' 。 $searchTerm 。 '%';
显示多于一个搜索词
【问题讨论】: