Печать numeric полей

alexd

Guest
Печать numeric полей

В базе данных (Sybase ASE 11.9.2) есть некое поле типа numeric(11). Естественно, все значения, которые там лежат - целые числа. Раньше (на PHP 4.0.6) все было хорошо, но вот понадобилось взгромоздить PHP 4.1.2. В результате, после выборки, вместо сообщения на экране типа "Номер заявки=12345" вижу "Номер заявки=12345.0".
Попытки понять, откуда взялся этот ноль привели только к changelog-у PHP 4.1.0, в котором есть радостная фраза "Floating point numbers are better detected when converting from strings. " - хотя, может быть, это и не к тому относится :).
Собственно вопрос - а как бы эту фичу обойти и получить номера в нормальном виде, без ".0" ?
 

tony2001

TeaM PHPClub
Re: Печать numeric полей

ну я могу посоветовать только обрезать все после точки вместе с ней самой.
можно substr(), лично я бы так и сделал.
можно глянуть number_format() и т.п.
 

antonio

Moderator
Команда форума
Re: Печать numeric полей

$var=intval($var) спасет отца русской демократии? А вобще, такие вещи в reportbug пишут.
 

alexd

Guest
Re: Re: Печать numeric полей

Автор оригинала: antonio
$var=intval($var) спасет отца русской демократии? А вобще, такие вещи в reportbug пишут.
Любые intval или тому подобное - это переделка офигительного количества уже имеющихся исходников :(
Видимо, перспективы не очень... Либо bugreport, либо в исходниках PHP копаться...
 

cnpait

Guest
Re: Печать numeric полей

Автор оригинала: alexd
В базе данных (Sybase ASE 11.9.2) есть некое поле типа numeric(11). Естественно, все значения, которые там лежат - целые числа. Раньше (на PHP 4.0.6) все было хорошо, но вот понадобилось взгромоздить PHP 4.1.2. В результате, после выборки, вместо сообщения на экране типа "Номер заявки=12345" вижу "Номер заявки=12345.0".
Попытки понять, откуда взялся этот ноль привели только к changelog-у PHP 4.1.0, в котором есть радостная фраза "Floating point numbers are better detected when converting from strings. " - хотя, может быть, это и не к тому относится :).
Собственно вопрос - а как бы эту фичу обойти и получить номера в нормальном виде, без ".0" ?
$x=floor($z)+0;
где $z - твое число.
 

alexd

Guest
Re: Re: Печать numeric полей

Автор оригинала: cnpait
$x=floor($z)+0;
где $z - твое число.
Еще раз :)
Эффект нужно получить НЕ МЕНЯЯ НИЧЕГО в текстах. Грубо говоря, заставить PHP вести себя "по-старому".
 

tony2001

TeaM PHPClub
Re: Re: Re: Печать numeric полей

Автор оригинала: alexd
Еще раз :)
Эффект нужно получить НЕ МЕНЯЯ НИЧЕГО в текстах. Грубо говоря, заставить PHP вести себя "по-старому".
наверное я чего-то не понимаю, но сам факт того, что такая ерунда требует переделки все исходников говорит уже о том, что исходники неправильные.
реальный пример:
клиент говорит мне: хочу даты не английские, а русские видеть.
я: ок, щас при тебе же и исправлю.
правлю класс работы с базой, там после выборки переделываю строчку, где дата выходит (date, setlocale). как результат - по всему проекту дата русская, а не английская.
не хочу сказать, что у тебя неправильно потому что не так как у меня, но ИМХО общее строение проекта должно позволять такие вещи переделывать за 2 сек.
 

alexd

Guest
Re: Re: Re: Re: Печать numeric полей

Автор оригинала: tony2001
наверное я чего-то не понимаю, но сам факт того, что такая ерунда требует переделки все исходников говорит уже о том, что исходники неправильные.
но ИМХО общее строение проекта должно позволять такие вещи переделывать за 2 сек.
В принципе - верно. Да и формат даты я у себя тоже поменяю за пару секунд :)
Но, грубо говоря, не ожидалось такой подлянки, что начнет себя вести по-другому элементарная последовательность функций sybase_fetch_array и echo :)
В чем готов признать свою ошибку, так в том, что надо было сразу printf юзать вместо echo...
 
Сверху