powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PERL+Oracle
7 сообщений из 7, страница 1 из 1
PERL+Oracle
    #33557772
Sasha_Greck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день дорогие товарищи прогаммисты. обращаюсь к вам с такой проблемой: есть форма - прайс лист транспортныйх услуг в ней есть поля
стоимость километра и количество километров. после нажания кпонки на форме данные передаються параметрами в модуль перл где происходит инсерт в БД оракле. Суть проблемы в том что если я заполняю стоимость километра 1,25 то в базу записываеться 1 только.
...
Рейтинг: 0 / 0
PERL+Oracle
    #33557807
Sasha_Greck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл уточнить одну важную деталь, когда я формирую строки прайся (HTML) каждой строке прайся я в поле name полей input количесва и цены километра формирую так:

Код: plaintext
1.
2.
<td><input size='3' name='roadcost<TMPL_VAR NAME=fcposprice>' type="text"></td>
		<td><input size='3' name='b<TMPL_VAR NAME=fcposprice>' type="text"></td>


А в перле проверяю параметры вот так, то есть как я понимаю у меня не правильное разделение параметров и из-за этого в базу записываеться неправильное значение вернее его часть до запятой(10,25 в базе = 10):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
foreach my $pospruslmc (sort @params) 
	{ 
		if (substr($pospruslmc, 0 , 1 ) eq 'b')
		{
		   if ($q->param($pospruslmc) >  0 )
			{
				#$fnrecpos=$fnrecpos.','.substr($pospruslmc, 1 , 16 ); # Строка с сылками на выбранные позиции прайса
				#$kolvopos=$kolvopos.','.$q->param($pospruslmc);  # Строка с количествами выбранных позиций
         
			
				$fnrecpos= substr($pospruslmc, 1 , 16 );  
				$kolvo	= $q->param($pospruslmc);
				$cenaval = $q->param('roadcost'.$fnrecpos)+ 0 ;
				$cena    = $cenaval;
.......................................
тут операторы инсерта
.......................................
.......................................
--
Чем дальше в лес, тем ... тем больше вылез!
...
Рейтинг: 0 / 0
PERL+Oracle
    #33562332
ap99ap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код не смотрю.
Вопрос первый - поле в базе целочисленное?
На всякий случай второй вопрос - если ручками вставить в базу '1,25' - будет правильная цифра? Или правильная цифра будет если вставлять '1.25'? ;)

Код: plaintext
1.
WBR,
    A.P.
...
Рейтинг: 0 / 0
PERL+Oracle
    #33562420
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо писать 1.25
меняйте регулярным выражением запятую на точку.
...
Рейтинг: 0 / 0
PERL+Oracle
    #33568889
Sasha_Greck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если в базу записать 1,25 то будет все окей
...
Рейтинг: 0 / 0
PERL+Oracle
    #33568917
Фотография Olympico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sasha_Greckесли в базу записать 1,25 то будет все окей

Такая бадья не только в Oracle, но и в MySQL.

Хорошо, что уменя были числа все целые, просто секретарка заполняя прайс десятки и сотни с тысячами отделяла запятой или это 1С такой экспорт мутит я не заню, вообщем мне пришлось просто перед инсертом отсекать запятые, а вариант авторнадо писать 1.25
меняйте регулярным выражением запятую на точку. дельный, я его запишу, он для не целых отлично подойдет.
...
Рейтинг: 0 / 0
PERL+Oracle
    #33569287
g613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай aka Motodorнадо писать 1.25
меняйте регулярным выражением запятую на точку.

не красиво...

засада там если я правильно ошибаюсь в строке:
Код: plaintext
$cenaval = $q->param('roadcost'.$fnrecpos)+ 0 ;

в локале по умолчанию разделитель чисел с плавающей точкой - `.` (точка),
в российской же локали может быть и запятая... Поэтому надо просто выставить локаль...

Код: plaintext
1.
2.
3.
4.
use locale;
use POSIX qw( locale_h );

POSIX::setlocale( POSIX::LC_NUMERIC, 'ru_RU.KOI8-R' ); # или чего вы там пользуете...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PERL+Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]