0

phpとpdoを使用してソーターを構築しようとしています。ここで、ユーザーにタスクを表示できます。1つの値またはすべてを選択できるいくつかの選択があります。

<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 に答える