Приветствую, пишу не большой скрипт блога. При написание категорий к постам задался вопросом, как можно организовать выборку категорий к постам с наименьшим написанием кода.
Вот сам фрагмент:
function GetHashtagInfo($id = null, $tag = null, $type = null)
{
if(!is_null($id) && is_numeric($id) && !is_null($tag) && !is_numeric($tag) && !is_null($type) && !is_numeric($type))
$sql = "SELECT * FROM `hashtags` WHERE `id` = '$id' AND `tag` = '$tag' AND `type` = '$type'"; //1, 1, 1
else if(!is_null($id) && is_numeric($id) && !is_null($tag) && !is_numeric($tag) && is_nullt($type))
$sql = "SELECT * FROM `hashtags` WHERE `id` = '$id' AND `tag` = '$tag'"; //1, 1, 0
else if(!is_null($id) && is_numeric($id) && is_null($tag) && is_null($type))
$sql = "SELECT * FROM `hashtags` WHERE `id` = '$id'"; //1, 0, 0
else if(!is_null($id) && is_numeric($id) && is_null($tag) && !is_null($type) && !is_numeric($type))
$sql = "SELECT * FROM `hashtags` WHERE `id` = '$id' AND `type` = '$type'"; //1, 0, 1
else if(is_null($id) && !is_null($tag) && !is_numeric($tag) && !is_null($type))
$sql = "SELECT * FROM `hashtags` WHERE `tag` = '$tag' AND `type` = '$type'"; //0, 1, 1
$sql_result = $this->mysql->Query($sql);
if(($sql_row = mysqli_fetch_assoc($sql_result)) != null)
return $sql_row;
else
return $sql_row = null;
}
Входные переменные: $id = Идентификатор тэга из бд, $tag = Системный тэг для фильтрации, $type = маркер для назначения тэга к примеру стоит
articles
Как вы видите очень много ветвления, что приводит к путанице, можно ли иначе реализовать данный подход?
В голове крутится switch, но он ведь тоже из той оперы.