Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010
Помог: 2 раз(а)
В php пишу mysql_query("CREATE TABLE $mstable ( num INT, title TEXT, comm DEC)");
mysql_query("INSERT INTO $mstable VALUES (1, 'trata-ta', 0.12);
ввожу 0,12 -> выводит 0
ввожу 0,5 -> выводит 1
В mysql пишу INSERT INTO table VALUE(1001, 'trata-ta', 0.12);
Выводит 0
происходит окугление, а мне нужно выдеть, то что я ввел, как это сделать или что я делаю не правильно?
----- Нет ничего более постоянного, чем временное.
SAD
Отправлено: 19 Мая, 2010 - 10:08:16
Постоянный участник
Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009 Откуда: Днепропетровск, Украина
Помог: 75 раз(а)
А тип поля какой?
Djin_dj
Отправлено: 19 Мая, 2010 - 10:10:25
Частый гость
Покинул форум
Сообщений всего: 180
Дата рег-ции: Июнь 2008 Откуда: Россия
Помог: 0 раз(а)
Petro пишет:
В php пишу mysql_query("CREATE TABLE $mstable ( num INT, title TEXT, comm DEC)");
mysql_query("INSERT INTO $mstable VALUES (1, 'trata-ta', 0.12);
ввожу 0,12 -> выводит 0
ввожу 0,5 -> выводит 1
В mysql пишу INSERT INTO table VALUE(1001, 'trata-ta', 0.12);
Выводит 0
происходит окугление, а мне нужно выдеть, то что я ввел, как это сделать или что я делаю не правильно?
comm decimal(10,10)
10 до запятой, 10 после запятой
Petro
Отправлено: 19 Мая, 2010 - 10:50:50
Гость
Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010
Помог: 2 раз(а)
Я пробовал место DEC писать DECIMAL
Выводит тоже самое.(округляет)
Цитата:
А тип поля какой?
Я думал что DEC определил тип поля или я все же ошибаюсь?
----- Нет ничего более постоянного, чем временное.
Djin_dj
Отправлено: 19 Мая, 2010 - 11:05:31
Частый гость
Покинул форум
Сообщений всего: 180
Дата рег-ции: Июнь 2008 Откуда: Россия
Помог: 0 раз(а)
Petro пишет:
Я пробовал место DEC писать DECIMAL
Выводит тоже самое.(округляет)
Цитата:
А тип поля какой?
Я думал что DEC определил тип поля или я все же ошибаюсь?
Скобки указал?
Petro
Отправлено: 19 Мая, 2010 - 11:20:42
Гость
Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010
Помог: 2 раз(а)
пробовал так
mysql_query("CREATE TABLE $mstable ( num INT, title TEXT, comm DEC(10.10))");
и так
mysql_query("CREATE TABLE $mstable ( num INT, title TEXT, comm DEC())");
потом так
mysql_query("INSERT INTO $mstable VALUES (1, 'trata-ta', (0.12));
и так
mysql_query("INSERT INTO $mstable VALUES (1, 'trata-ta', '0.12');
все так же как и раньше.
может ошибка сдесь:
#$sql = "SELECT * FROM $mstable";
$res = mysql_query("SELECT * FROM $mstable") or die(mysql_error());
while($row=mysql_fetch_array($res)){
$num=$row['num'];
$title=$row['title'];
$comm=$row['comm'];
echo "($num) - $title - $comm <br>";
}
----- Нет ничего более постоянного, чем временное.
Djin_dj
Отправлено: 19 Мая, 2010 - 11:24:07
Частый гость
Покинул форум
Сообщений всего: 180
Дата рег-ции: Июнь 2008 Откуда: Россия
Помог: 0 раз(а)
Petro пишет:
comm DEC(10.10)
Вот ошибка посмотри в скобках comm decimal(10,10)
Petro
Отправлено: 19 Мая, 2010 - 11:26:53
Гость
Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010
Помог: 2 раз(а)
пробовал decimal(10,10) и decimal(10.10) (Добавление)
Все заработало )) просто нужно было обновить таблицу, а я создал таблицу и потом строку создания таблицы закоментировал. (Добавление)
А что означает это дополнение (10,10) почему когда я подставляю (1,2) выдает ошибку For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 'comm'). (Добавление)
и еще выдало 0.1200000000, но мне не нужны 0 как их убрать? (Добавление)
и еще один вопрос, как записать это непосредственно в sql?
я пишу вот так CREATE TABLE table VALUE(num integer, title char(10), comm decimal);
так происходит округление.
CREATE TABLE table VALUE(num integer, title char(10), comm decimal(10,10));
а так пишет ошибку
comm decimal(10,10))' at line 1
----- Нет ничего более постоянного, чем временное.
Djin_dj
Отправлено: 19 Мая, 2010 - 14:44:25
Частый гость
Покинул форум
Сообщений всего: 180
Дата рег-ции: Июнь 2008 Откуда: Россия
Помог: 0 раз(а)
Petro пишет:
1)и еще выдало 0.1200000000, но мне не нужны 0 как их убрать?
2)и еще один вопрос, как записать это непосредственно в sql?
1) Поставь не 10,10 а 10,2 я же написал что после запятой указыввается количество цифр после округления
2) Уверен что у тебя есть phpmyadmin, создай таблицу вручную и в нем печатается сам запрос вот его и воткни в скрипт
Petro
Отправлено: 19 Мая, 2010 - 15:02:34
Гость
Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010
Помог: 2 раз(а)
спасибо.
phpmyadmin у меня нет.
----- Нет ничего более постоянного, чем временное.
JustUserR
Отправлено: 19 Мая, 2010 - 15:13:29
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Petro У вас же SQL-поле с названием num имеет типа данных INT и следовательно может хранить только целые числа Использование различных функций округления не поможет поскольку дробная часть отсекается уже при сохранении данных - ведь в типе INT хранятся целые числа и в INSERT/UPDATE запросе они преобразуются в соответствующий тип
Решением вашей проблемы будет указание для поля num тип данных FLOAT при создании таблицы - или изменение типа поля в существующей таблице за счет запроса ALTER - но в таком случае ранее сохраненные данные соответственно не будут иметь дробной части
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Petro
Отправлено: 19 Мая, 2010 - 15:55:23
Гость
Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010
Помог: 2 раз(а)
num integer, title char(10), но я эти поля не трогаю, с ними все нормально
меня интересует comm поле, именно при записи в это поле происходит округление (
----- Нет ничего более постоянного, чем временное.
JustUserR
Отправлено: 19 Мая, 2010 - 16:09:09
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Petro пишет:
Меня интересует comm поле, именно при записи в это поле происходит округление (
Значит установите для него значение FLOAT - или если данные в таблице уже существуют то измените этот типа с помощью соответствющего ALTER-запроса
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Petro
Отправлено: 19 Мая, 2010 - 16:53:10
Гость
Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010
Помог: 2 раз(а)
создал новую таблицу CREATE TABLE tablenew VALUES(num integer, title char(10), comm float);
Заработало ))) спасибо.
Потом создал еще одну таблицу с 1 полем CREATE TABLE tablenew0 VALUES(comm decimal);
И все равно идет округление ((
это значит что decimal не работает?
----- Нет ничего более постоянного, чем временное.
Djin_dj
Отправлено: 19 Мая, 2010 - 18:47:27
Частый гость
Покинул форум
Сообщений всего: 180
Дата рег-ции: Июнь 2008 Откуда: Россия
Помог: 0 раз(а)
Petro пишет:
это значит что decimal не работает?
Это просто разные типы данных, которые в определенных обстоятельствах нужны!
А так как этих типов много то все типы работают!
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.