0

我正在尝试使用 php 和 pdo 构建一个排序器,我可以在其中为用户显示任务。我有几个选择,我可以从中选择一个值或全部。

<select id="select_user">
    <option data-id="all">All</option>
    <option data-id="1">User 1</option>
    <option data-id="2">User 2</option>
    <option data-id="3">User 3</option>
    <option data-id="4">User 4</option>
</select>

根据任务是否完成来显示任务。

<select id="task_done">
    <option data-id="all">All</option>
    <option data-id="1">Done</option>
    <option data-id="0">Not Done</option>
</select>

根据截止日期是否已过显示任务。

<select id="task_deadline">
    <option data-id="all">All</option>
    <option data-id="1">Passed</option>
    <option data-id="0">Not passed</option>
</select>

通过一些 Ajax,我调用了如下所示的 php 函数:

function getTasksSorter($userid, $done, $passed) {
    $stmt = $this->conn->prepare('SELECT * FROM tasks WHERE user_id = :userid AND done = :done AND deadline_date = :passed');
    $stmt->execute(array('userid' => $userid,'done' => $done, 'passed' => $passed));
    $row = $stmt->fetchAll();

       foreach.. $row... build $html;

    }
    return $html;
}

如果我选择全部,显然这不起作用。我试图解决这个问题,但我无法弄清楚。如何修改代码以使所有选择起作用?

编辑:好的,我添加了很多更多信息,因为我第一次问的时候还不够清楚。我不想用一堆 if 语句来解决这个问题,必须有更好的解决方案。

4

1 回答 1

3

那么你的逻辑可能取决于提供这样的价值$userid

function getTasksSorter($userid = null) {
    if(is_null($userid)){
        $stmt = $this->conn->query('SELECT * FROM tasks');
    } else {
        $stmt = $this->conn->prepare('SELECT * FROM tasks WHERE user_id = :userid');
        $stmt->execute(array('userid' => $userid));
    }

    $row = $stmt->fetchAll();

       foreach.. $row... build $html;

    }
    return $html;
}
于 2012-12-16T22:30:04.903 回答