对此我挠了一下头,但希望有人可以指导我:

我的数据库中有一个表(标准),该表具有不同的外键(等级,主题,分支)。在用户方面,用户可以输入关键字,并可以根据年级(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/

10-11 01:27
查看更多