Здравствуйте.возникла проблема не могу проверить если в ячейке данные или она пуста. делаю так: Код (Text): if ( $row['bdate'] != NULL) { $bdate = explode('.', $row['bdate']); $birthdate_unix = mktime(0, 0, 0, $bdate[1], $bdate[0], $bdate[2]); $current_unix = time(); $period_unix=$current_unix - $birthdate_unix; $age = floor($period_unix / (365*24*60*60)); } else if ( $row['bdate'] == NULL) { $age = 'Скрыто'; } Суть в том, что если ячейка в столбце bdate пустая, то мы переменной age присваиваем значение "Скрыто", если есть дата вида 1.1.2011 то высчитываем количество лет.. Так вот почему то такое условие не работает.. Переменной age не присваивается значение Скрыто. Помогите пожалуйста..
ну для твоего примера я бы посоветовал в условиях не производить сравнения с NULL , а просто PHP: if ( $row['bdate']){ .. } else{ ... } а вообще возраст лучше в мускле определяй, например так http://kobzarev.com/programming/determi ... mysql.html или может сам что придумаешь (смотри работу в мускле с датами http://mysql.ru/docs/man/Date_and_time_functions.html). и есть подозрение что у тебя поле bdate текстового типа, сделай его типа date или timestamp
Спасибо, но почему то проверку не проходит правильно.. Код (Text): if ( $row['bdate']){ $bdate = explode('.', $this->bdate); $birthdate_unix = mktime(0, 0, 0, $bdate[1], $bdate[0], $bdate[2]); $current_unix = time(); $period_unix=$current_unix - $birthdate_unix; $age = floor($period_unix / (365*24*60*60)); } else { $age = 'Скрыто'; } Все время выводит 'Скрыто', даже если есть значения в ячейке. Пробовал еще заменить Код (Text): else на else if (empty( $row['bdate'])) тоже самое. Поле bdate - varchar(12), просто у меня дата записывается в виде : день.месяц.год , например в виде 1.1.2001, а в типе date вид 00-00-0000..[/code]
ну так посмотри что у тебя в твоей переменной, походу там пусто. и не храни ты дату в текстовом поле, ни к чему пополнять ряды говнокодеров!
В том то и дело, что оно не пусто) а дату приходится хранить в строковом виде из-за того, что она на входе подается в виде день.месяц.год и если поле в таблице будет типа date, то там все даты будут нулевыми ( 00-00-0000). А преобразовать ее не получается.. Вот так я записываю в базу: Код (Text): $bd = new BD(); $bd->sql("INSERT INTO user ( bdate) VALUES ('$user->bdate')"); unset($bd); ?>
проблема с невозможностью конвертации даты вообще мне не понятна, вариантов полно, хотя бы как то так PHP: /*$date_string формата dd.mm.yyyy или dd.mm.yy в зависимости от значения $q_zn*/ function DateToMySQL($date_string,$q_zn=4){ $result = ""; if(ereg ("([0-9]{2})\.([0-9]{2})\.([0-9]{".$q_zn."})", $date_string, $datetime)) { if ($q_zn==2) { if (intval($datetime[3])>30) $year = "19" . $datetime[3]; else $year = "20" . $datetime[3]; } else $year = $datetime[3]; $result = $year."-".$datetime[2]."-".$datetime[1]; } return $result; } не лучший пример, с некоторыми ньюансам, но работает. а по твоему коду... НЕ ВЕРЮ. до условия поставь PHP: var_dump($row['bdate']); и напиши сюда результат. и заодно весь кусок кода скопипасть сюда