В настоящее время у меня есть веб-страница html / PHP, которая использует ряд пользовательских вводов для запроса базы данных SQL и возврата данных для построения графиков. Пользовательский ввод управляется html-флажками, данными в базе данных SQL и создается с использованием кода PHP. Весь HTML-код слишком велик, чтобы поставить его здесь, но ниже приведен фрагмент части, о которой я хочу спросить ...
...
<div id="AccProject" class="w3-hide">
<?php
$queryProject = "SELECT DISTINCT ProjID, Project, Sample, Type, Description FROM PROJECTS ORDER BY Project ASC";
$resultProject = $dbhandle->query($queryProject) or exit("Error code ({$dbhandle->errno}): {$dbhandle->error}");
while($row=mysqli_fetch_array($resultProject)){
echo "<input id='".$row['ProjID']."' value='".$row['ProjID']."' name='projID[]' type='checkbox' class='chkbox'>";
echo "<label title='".$row['Description']." Project: ".$row['Project']." Sample: ".$row['Sample']." Type: ".$row['Type']."' for='".$row['ProjID']."' class='chkbox-label'> ".$row['Project']." | ".$row['Sample']." | ".$row['Type']."</label>";
}
?>
</div>
...
Вы видите, что я запрашиваю базу данных SQL, возвращаю количество полей и затем использую PHP для генерации ряда флажков. Позже в html я использую javascript, чтобы извлечь проверенное / непроверенное состояние этих флажков и снова запросить базу данных, чтобы получить больше данных.
Что я хотел бы сделать, это добавить несколько предварительных фильтров, которые уменьшат количество флажков, видимых пользователю на странице. Например, если поле «Тип» определяет, является ли запись данных «Cake», «Biscuit» или «Pudding», я хотел бы добавить некоторые параметры, которые затем изменили бы SQL-запрос. Я привел пример с псевдокодом ниже.
...
<div id="AccProject" class="w3-hide">
<label class="form-switch"><input type="checkbox" id="filterCake"><i></i> Select Cakes only </label>
<label class="form-switch"><input type="checkbox" id="filterBiscuit"><i></i> Select Biscuits only </label>
<label class="form-switch"><input type="checkbox" id="filterPudding"><i></i> Select Puddings only </label>
<?php
if filterCake == True
$queryProject = "SELECT DISTINCT ProjID, Project, Sample, Type, Description FROM PROJECTS WHERE Type == 'Cake' ORDER BY Project ASC";
if filterBiscuit == True
$queryProject = "SELECT DISTINCT ProjID, Project, Sample, Type, Description FROM PROJECTS WHERE Type == 'Biscuit' ORDER BY Project ASC";
if filterPudding == True
$queryProject = "SELECT DISTINCT ProjID, Project, Sample, Type, Description FROM PROJECTS WHERE Type == 'Pudding' ORDER BY Project ASC";
$resultProject = $dbhandle->query($queryProject) or exit("Error code ({$dbhandle->errno}): {$dbhandle->error}");
while($row=mysqli_fetch_array($resultProject)){
echo "<input id='".$row['ProjID']."' value='".$row['ProjID']."' name='projID[]' type='checkbox' class='chkbox'>";
echo "<label title='".$row['Description']." Project: ".$row['Project']." Sample: ".$row['Sample']." Type: ".$row['Type']."' for='".$row['ProjID']."' class='chkbox-label'> ".$row['Project']." | ".$row['Sample']." | ".$row['Type']."</label>";
}
?>
</div>
...
Как мне добиться этого с помощью моего кода?
Все, что мне нужно сделать, это изменить SQL-запрос в коде PHP (добавив предложение WHERE) в зависимости от состояния флажков «торт», «печенье» или «пудинг», но я изо всех сил пытался понять, как это сделать.
Любая помощь с благодарностью!