对此我挠了一下头,但希望有人可以指导我:
我的数据库中有一个表(标准),该表具有不同的外键(等级,主题,分支)。在用户方面,用户可以输入关键字,并可以根据年级(1st-12th),主题(数学,英语,科学)或分支(取决于主题选择)进行进一步过滤。这种额外的过滤是我面临的问题。建议根据选择的数据从数据中选择数据的方法是什么?
这是我不选择过滤数据时的情况:
function generalResult($keyword, $connection){
$sql = "SELECT standards_eng.Standard FROM standards_eng WHERE standards_eng LIKE '%".$keyword."%' ";
$query = $connection->query($sql);
if ($query->num_rows > 0) {
while ($row = $query->fetch_assoc()) {
echo '<p>' .$row['Standard']. '</p>';
}
}
}
我只能想出的解决方案是If / else语句,但这实在太多了。例如:
if(Grade!== "" AND SUBJECT == "" AND BRANCH =="") {
//Selects data where Standard is like keyword AND Grade_ID is equal to value selected
} Else if (Grade!== "" AND SUBJECT !== "" AND BRANCH == "") {
//Selects data where Standard is like keyword Grade_ID and Subject is equal to value selected
}Else if{
...
}Else if{...}
最佳答案
我不确定您要什么,但是如果我是对的,您需要可以保留为空的可选过滤器?
我需要做的是创建一个过滤器,并在需要附加过滤器时附加/连接该字符串。请参阅下面的示例。
$filter="WHERE standards_eng LIKE '%".keyword."%'";
if(Grade!==""){
$filter."AND Grade="value here";
}
if(SUBJECT!==""){
$filter."AND SUBJECT="value here";
}
if(BRANCH!==""){
$filter."AND BRACH="value here";
}
$sql = "SELECT standards_eng.Standard FROM standards_eng".$filter;
关于php - 根据下拉列表和表格选择数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48981509/