Здравствуйте!
В базе данных есть поле status (int)
По-умолчанию оно имеет значение 1, но можно задать значение 0, 2, 3 и другие.
Следующий код делает выборку из базы данных:
if ($page == 'news') {
$s = '';
$status = $inCore->request('status', 'int');
if (isset($status) && !empty($status)) { // Проблемный участок
if ($status == 0) { $s = ' AND status = 0 '; } else { $s = ' AND status = '.$status; }
if ($status == 6) { $s = ' OR adddate < (NOW() - INTERVAL 30 DAY) '; }
}
$res = $inDB->query("SELECT id FROM news WHERE id>0 $s"); $summ = $inDB->num_rows($res);
Проблема в том, что подразумевается, что при заходе на страницу
?page=news запрос будет обходить переменную $status, то есть будет иметь вид:
SELECT id FROM news WHERE id>0
Так оно и выходит, но проблема в том, что и страница, вида ?page=news&status=0
Также приводит к запросу
SELECT id FROM news WHERE id>0
То есть не получается прикрепить переменную status=0
Причем, страница вида ?page=news&status=3 отлично отрабатывается
SELECT id FROM news WHERE id>0 AND status = 3
НО, если заменить код, на такой:
if ($page == 'news') {
$s = '';
$status = $inCore->request('status', 'int');
// Проблемный участок
if ($status == 0) { $s = ' AND status = 0 '; } else { $s = ' AND status = '.$status; }
if ($status == 6) { $s = ' OR adddate < (NOW() - INTERVAL 30 DAY) '; }
$res = $inDB->query("SELECT id FROM news WHERE id>0 $s"); $summ = $inDB->num_rows($res);
То, начинает работать страница вида, ?page=news&status=0
Но, теперь, если зайти на ?page=news, мы видим пустую страницу и запрос вида:
SELECT id FROM news WHERE id>0 AND status = 0
Как можно решить данную проблему? Явно не получается у меня создать условие, вида
ЕСЛи ?page=news , то $s = ' ', иначе, если существует переменная $status , то $s = ' AND status = ' . $status ;