Наткнулся на них не знаю как забороть есть некая выборка select id,column1, column2 from table коегде значения column1 и column2 не вбиты и пользователю тупо вываливается null в ответ. Естественно пользователь пугается и говорит что это за текст такой переодически когда там нет данных. как разом заменить null на '' а не заниматься вот таким ПИП select id, COALESCE (column1,''), COALESCE (column2,'') from table колонок естесно больше =)
непонятно как твой пользователь ухитряется получать буквально "null", вроде бы пыха везде изображает его пустой строкой... рецепт: Код (Text): update xxx set col1='' where col1 is null; alter table xxx modify col1 varchar(100) not null default '';
очень просто я с postgres json гоню он там их и видит - вот что json гоняет [{"ARXNOM_HOB":"013581","S_HOB":"3393.2","XAR_HOB":"отдельностоящее здание","RESH_HOB":"","DATE_RESH_HOB":null,"AKT_HOB":null,"DATE_AKT_HOB":null,"PRAVO_HOB":null,"DATE_PRAVO_HOB":null}] а потом я просто циклом раскладываю все на морде $.getJSON( "link.php", function(data){ for (var key in data[0]) { var val = data[0][key]; $("#"+key).text(val); } }); и соответственно при выводе на экран - вижу Вот такое чудо Акт: № null от null Право: № null от null то что данных нету это уже не мои проблемы - вобьют будет все красиво. вариант по изменению данных не годится (( я с руководством поговорил - не нравится даже если сделать разом на всю базу вывод вместо null пустоты. я пока нашел вот эту команду но как я понял она работает только из консоли и сразу все базы и все выводы .. а как такое сделать перед конкретным селектом пока не знаю \pset null ' ***null*** ' использовать пока не решаюсь. Добавлено спустя 14 минут 31 секунду: не имея пока другого решения плюнул и сделал на стороне клиента проверку на null вот так $.getJSON( "link.php", function(data){ for (var key in data[0]) { var val = data[0][key]; if (val == null) {val='';} $("#"+key).text(val); } }); если есть какие еще мысли жду с нетерпением
не стоит перекладывать работу на JS. это костыли! ты вообще обратил внимание на update и alter table? если этот вариант не подходит (а почему, блин?!), то можно в отдающем php-скрипте между pg_fetch_row и json_encode добавить array_map() и там конвертировать null в ''.
обратил - к постгришным базам цепляется еще аксес - а там какие то фичи накручены ( почему я собственно и делаю веб морду- мы хотим с аксеса уйти) сейчас попробую ваш вариант
1. а почему не стоит отдавать это клиенту ? формы не очень большие .. да даже если где то сбойнет ну подумаеш null выскочит 2. толи лыжи не едут то ли .. куку делаю так array_map("self::test_null", $data) вот функция function test_null($n){ die ("приходит:".$n); if ($n=='null'){ return '';} else {return $n;} } воткнул дай изза того что не хотело работать ни как 'null' ни как NULL ни как is_null($n) от увиденного был шокирован приходит:Array вот так выглядит $data $data = array(); While ($row_tmp = pg_fetch_array($return) ) { $data[$i]['ARXNOM_HOB']=$row_tmp['ARXNOM']; $data[$i]['S_HOB']=$row_tmp['S']; ... $++; }
WTF? Добавлено спустя 2 минуты 24 секунды: я понял, тебе надо не весь $data подсовывать в array_map, а $row_tmp, прямо внутри цикла - тогда всё получится p.s. die ("приходит:".$n); я бы заменил на die ("приходит:".var_export($n, true)); Добавлено спустя 1 минуту 6 секунд: "self::test_null" -- оно точно статика? не ты ли намедни мучался со статика/нестатика? array($this, 'test_null') или лямда-функцию делай прямо по месту. будет напоминать твой любимый js )))
не забивай голову - не весь код копировал =) эту строчку бил руками i не пропечаталась (( ага фокус удался теперь точно хотя если честно я пока никак не прочитаю в разница между динамикой и статикой все никак глаза не дойдут. только я так и не понял почему обрабатывать лучше на сервере, а не на клиенте. сейчас я увидел вот что - приходится использовать дополнительную функцию, приходится пересматривать и хранить в памяти массив, при чем его приходится дублировать. вот как я сейчас сделал While ($row_tmp1 = pg_fetch_array($return) ) { $row_tmp= array_map("self::test_null", $row_tmp1) ; $data[$i]['ARXNOM_HOB']=$row_tmp['ARXNOM']; ..
не понимаю твоей тревоги. ты получил немного новых знаний и решил проблему. что не так, хочешь поговорить об этом? ))) static переменные принадлежат классу а не объекту. то есть существует только один экземпляр. у этого факта есть богатые следствия, постепенно освоиш.
о.. не знал что она одна и все. ладно оставляю как насоветовал - потом буду разбираться. Спасибо огромное за подсказки и рекомендации.