[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Условие с нулевым значением
Страницы: 1, 2
6stPROD
То, над чем я бьюсь звучит так - если в базе с этим ID нет записи (нул) или запись в столбце равна нулю то выдать первое условие, в другом случае второе... if($get['id'] == 0) работает если только есть значение и стоит ноль...


if($get['id'] == NULL)
echo "<font color='#D16000'>Условие 1</font>";
else
echo "<font color='green'>Условие 2</font>";
}



Прошу помочь
Akarapidoz
попроси базу выдавать вместо NULL 0 в PDO такое есть

_____________
Прошу критиковать, если что-то не так.
GET
6stPROD

Цитата
если в базе с этим ID нет записи (нул) или запись в столбце равна нулю

Запрос покажите. То что записи нет не значит что придет NULL, это надо постараться написать запрос, чтоб NULL пришел.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
6stPROD
Цитата (GET @ 25.02.2015 - 10:45)
6stPROD

Цитата
если в базе с этим ID нет записи (нул) или запись в столбце равна нулю

Запрос покажите. То что записи нет не значит что придет NULL, это надо постараться написать запрос, чтоб NULL пришел.

 
<?PHP
$accpr = mysql_query("SELECT * FROM `".$server_adb."`.`accpr` WHERE id='".$accid['id']."'")or die(mysql_error());
while($get = mysql_fetch_array($accpr))
{
if (empty($get['active'])){
echo "<font color='#D16000'> ответ 1</font>";
} else {

echo "<font color='green'>ответ 2</font>";
}}
var_dump($get);
?>


выдает бул фальс
Valick
Цитата (6stPROD @ 25.02.2015 - 08:41)
если в базе с этим ID нет записи (нул) или запись в столбце равна нулю то выдать первое условие, в другом случае второе...

расскажите поконкретнее, что за условие и что за ответ 1
в общем какие действия полагается выполнять при этих условиях

_____________
Стимулятор ~yoomoney - 41001303250491
6stPROD
$account_premium = mysql_query("SELECT * FROM `".$server_adb."`.`account_premium` WHERE id='".$accid['id']."'")or die(mysql_error());
if(mysql_num_rows($account_premium)){
while($get = mysql_fetch_array($account_premium))
{
echo "<font color='green'>ПРЕМИУМ</font>";
}}else{
echo "<font color='#D16000'>ПОЛУЧИТЬ ПРЕМИУМ?</font>";
}


В этом разобрался, выводит при отсутствии значений (NULL) выдает - "получить премиум?" - при наличии значений по ID - "премиум" - НО как сравнить по столбцу "active" ? - То есть так -

Если в таблице записей нет - "ПОЛУЧИТЬ" - если запись есть НО столбец active = 1 - "ПРЕМИУМ" ?
GET
6stPROD

Может я неправильно понимаю...

$account_premium = mysql_query("SELECT * FROM `".$server_adb."`.`account_premium` WHERE id='".$accid['id']."' AND active = 1")or die(mysql_error());


или внутри
while($get = mysql_fetch_array($account_premium))
{
echo "<font color='green'>ПРЕМИУМ</font>";
}


ловить, типа
 if($get['active']=='1')echo "<font color='green'>ПРЕМИУМ</font>";


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
6stPROD
AND active = 1 помог! благодарю
sergeiss
Изначально неправильно был вопрос поставлен. И самое главное, что об этом в явном виде, по-моему, никто не сказал
Цитата (6stPROD @ 25.02.2015 - 09:41)
если в базе с этим ID нет записи (нул)

если записи нет, то ты в ПХП ничего и не получишь. Просто "тупо" не будет данных. Поэтому, естественно, ты ничего и не можешь прочитать.

Для анализа отсутствия записи надо либо считать записи в Мускуле ("select count(*)...") при определенных условиях, либо в ПХП делать анализ количества полученных по запросу записей.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
stump
Мне кажется получать аккаунт, а потом проверять его на премиум правильнее.
Можно например так:
if( !empty( $get['id'] ) )
{
echo "<font color='#D16000'>Условие 1</font>";
}
else
{
echo "<font color='green'>Условие 2</font>";
}


Проверяет значение null, 0, '', "".

_____________
Трус не играет в хокей
sergeiss
Цитата (stump @ 25.02.2015 - 17:21)
Мне кажется получать аккаунт, а потом проверять его на премиум правильнее.

Это не правильно.

1. Как я совсем недавно сказал, значения $get['id'] может просто не быть. Если записи нет, то и в этой переменной ничего не будет вообще.
2. Максимум обработки данных надо делать внутри БД, это быстрее. В данном случае это означает наличие всех условий в запросе. В том числе то, что id не может быть пустыми или нулевым.
3. И еще раз повторю, что надо сначала проверить, сколько записей вернулось по данному запросу. Если нисколько, то это один вариант. Если сколько-то есть, то это другой вариант; тогда уже можно читать данные и работать с ними.

Все другие алгоритмы обработки будут или "говнокодом", или вообще не правильными.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
stump
Цитата (sergeiss @ 25.02.2015 - 17:54)
Цитата (stump @ 25.02.2015 - 17:21)
Мне кажется получать аккаунт, а потом проверять его на премиум правильнее.

Это не правильно.

1. Как я совсем недавно сказал, значения $get['id'] может просто не быть. Если записи нет, то и в этой переменной ничего не будет вообще.
2. Максимум обработки данных надо делать внутри БД, это быстрее. В данном случае это означает наличие всех условий в запросе. В том числе то, что id не может быть пустыми или нулевым.
3. И еще раз повторю, что надо сначала проверить, сколько записей вернулось по данному запросу. Если нисколько, то это один вариант. Если сколько-то есть, то это другой вариант; тогда уже можно читать данные и работать с ними.

Все другие алгоритмы обработки будут или "говнокодом", или вообще не правильными.

Я понял что вариантов когда строка отсутствует. Всегда будут строки которые отсутствуют! К примеру запись человека который только смотрит рекламу самого лучшего сайта который разработал ТС еще отсутствует, зато есть премиум аккаунт того, который смотрел рекламу вчера. Поэтому задачу на предмет наличия записи или ее отсутствия надо рассматривать отдельно и скорее всего она уже была рассмотрена в другом месте.

Поэтому в целом правильно, но можно и лучше!

К примеру хорошо бы сделать поле aacount_type и вписывать туда значения 0/null и 1 что будет означать 0 обычный аккаунт, 1 премиум. Если будет поставлена задача выбрать все примиум аккаунты то конечно подойдет рекомендованный запрос с проверкой на 1. Если стоит задача разобрать выбранные аккаунты на премиум и обычные то код про который [возможно Троль] sergeiss нехорошо высказался, а именно:
if( !empty( $get['id'] ) )
{
echo "<font color='#D16000'>Условие 1</font>";
}
else
{
echo "<font color='green'>Условие 2</font>";
}

вполне решит поставленную задачу!

Нам конечно неизвестна структура БД ТС и не известно какие еще есть поля кроме поля id и поэтому я предполагаю что полученная имеет вид:
array() $get['id_account' => 1, 'name_account' => 'any name', ..., 'id' => null, ...]

а вторая строка вид:
array() $get['id_account' => 1, 'name_account' => 'any name', ..., 'id' => 1, ...]


тогда строка полученная запросом будет иметь ключи: id_account', 'name_account', 'id', прочие и соответственно иметь поле $get['id'] и тогда предполагая что 1 это премиум аккаунт, а 0/null обычный аккаунт код
if( empty( $get['id'] ) )
{
echo "<font color='#D16000'>Простой</font>";
}
else
{
echo "<font color='green'>Премиум</font>";
}


строка которая отсутствует будет иметь вид:
array() $get['id_account' => null, 'name_account' => null, ..., 'id' => null, ...]


Кроме того [возможно Троль] sergeiss внимательно почитайте вопрос! После внимательного прочтения не трудно сообразить что ТС в качестве ответа на свой вопрос хотел спросить как именно можно проверять не только предмет равенства с 0, а еще и на предмет того что элемент массива $get['id'] будет равен null. !!!!!Прямо!!!!!! отвечая на вопрос ТС можно предоставить 2 вида кода:
1)

if( ($get['id'] == 0) && ($get['id'] == NULL)  )
{
echo "<font color='#D16000'>Простой</font>";
}
else
{
echo "<font color='green'>Премиум</font>";
}

2)
if( empty( $get['id'] ) )
{
echo "<font color='#D16000'>Простой</font>";
}
else
{
echo "<font color='green'>Премиум</font>";
}


Если отвечать так, чтобы написать ТС код best practice который на сегодня он не может написать самостоятельно, тогда пусть выкладывает свои наработки на github и ссылку в студию, не забыв прикрепить дамп БД! Тогда другое дело.

Пока что имеем с тем и работаем и поэтому 2 варианта кода в распоряжении ТС.

_____________
Трус не играет в хокей
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.