|
|
|
| Таблица: «colors»
(id_color TINYINT(2) UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
color_value FLOAT(2,1) UNSIGNED NOT NULL);
color_value содержит значения:
16.7
12.3
17.0
Данные в таблицу вводятся пользователем из HTML формы.
После ввода значение сравнивается с имеющимися в таблице.
При сравнении чисел с «нулевой» дробной частью всё происходит удачно, но стоит ввести число со значимой дробной частью, как сравнивание перестает работать…
Пользователь несколько раз подряд вводит 12.3 после чего колонка «color_value» принимает вид:
16.7
12.3
17.0
12.3
12.3
…
12.3
Ниже приведен код обрабатывающий пользовательский ввод.
PHP:
//$formValue – значение, введенное пользователем, полученное из формы
@ $db = new mysqli('myHost', 'myUser', 'myPassword', 'myDatabase');
$formValue=sprintf ("%01.1f", $formValue);
$query_select = "select * from $tableName where $itemInRow=$formValue";
$query_insert = "insert into $tableName values ('','$formValue')";
$result = $db->query($query_select);
$num_results = $result->num_rows;
if($num_results>0){
echo “такая запись уже существует!<br>”;
}
else
{
$result = $db->query($query_insert);
$num_results = $db->affected_rows;
$msg.= "запись успешно внесена!<br>";
}
$result->free;
$db->close(); | |
|
|
|
|
|
|
|
для: dogo
(06.03.2006 в 15:02)
| | Попробуйте вместо точки использовать запятую. | |
|
|
|
|
|
|
|
для: dogo
(06.03.2006 в 15:02)
| | Значения с плавающей точкой хранятся приближенно, и на строгое равенство не сравниваются. Если Вы хотите сравнивать их на равно/не равно, Вам придется хранить их в другом формате. | |
|
|
|
|
|
|
|
для: Trianon
(06.03.2006 в 15:17)
| | Например, придать полю, в котором хранится это число, тип FLOAT. | |
|
|
|