Forum Webscript.Ru

Программирование => Perl => Тема начата: Timofey от 30 Октября 2003, 12:22:21

Название: строка -> число
Отправлено: Timofey от 30 Октября 2003, 12:22:21
как из строки сделать число?

т.е. есть параметр переданный из формы, там число,но после разбора офрмы получается строка, вот эту строку и надо перевести в нормально число, т.к. нуна сделать запрос к базе,там это поле int
Название: строка -> число
Отправлено: ondr от 30 Октября 2003, 12:49:01
в perl нет способа явного задания числа или строки
есть лишь тип scalar
в твоем варианте достаточно убедиться что переданный параметр число. для этого достаточно прибавить к нему нулик
Название: строка -> число
Отправлено: metton от 31 Октября 2003, 13:06:56
2ondr
Имхо, не очень хороший выход из ситуации. Насколько я понимаю, любая строка, начинающаяся не с цифры в математических выражениях превращается в 0. Так что, прибавив нолик, не узнаешь, было ли это число или нет.

Может, простейший регэксп?
Название: строка -> число
Отправлено: ondr от 31 Октября 2003, 13:23:27
metton
Если ждешь именно число и должно прийти число, то зачем нужно знать было ли это строкой? Если уж горит, то проверь регэкспом или ещё чем нибудь.
Все зависит от конкретного случая.
Название: строка -> число
Отправлено: Phoinix от 31 Октября 2003, 13:56:55
Timofey
IMHO проблем нет когда ты будешь в запросах использовать что-то типа:

.... WHERE id = \'$form_id\' ....

где $form_id - переменная переданная из формы... даже если $form_id будет иметь не числовое значение, запрос просто ничего не вернет и все, а если числовое, то он выберет именно, то что нужно... а регами я бы проверял отсутствие пробелов и одинарных кавычек, не более того... строка или число в скаляре не указывается, но если вставляешь число, даже если оно вида:

$i = "1";

т.е. вроде как текст, но в запросе поймет его как $i = 1; по крайней мере у меня понимает...
Название: строка -> число
Отправлено: metton от 31 Октября 2003, 18:51:57
2ondr
Ситуация: юзер хочет ввести 23, а вместо этого нечаянно вводит 2w (не попадаети он по клавишам, ну что с ним поделаешь? - юзер :D ), а вводимое число, например, идентификатор стираемой записи. Вот и получится что он сотрёт запись с идентификатором 2 вместо 23, что не есть хорошо. Пример, конечно надуман, но выводы, думаю, напрашиваются сами собой. ЛУЧШЕ ТАК НЕ ДЕЛАТЬ! :D

2Phoinix
При выборке, конечно это во многих случаях не критично, но воть если опять же данные вставляются в базу. В этом случае там будет опять же нолик, и можно этого не заметить.
Название: строка -> число
Отправлено: ondr от 31 Октября 2003, 19:41:30
metton
ты забыл добавить ИМХО
Название: строка -> число
Отправлено: metton от 31 Октября 2003, 21:41:56
2ondr
То есть ты не согласен со мной? Твои аргументы...
Название: строка -> число
Отправлено: Phoinix от 01 Ноября 2003, 10:11:25
metton
Цитировать
Timofey
нуна сделать запрос к базе,там это поле int


вопрос - как сделать запрос, а не вставить данные в базу.
Название: строка -> число
Отправлено: metton от 01 Ноября 2003, 19:45:33
2Phoinix
Ок. Как тебе запрос на удаление?
Название: строка -> число
Отправлено: Phoinix от 02 Ноября 2003, 21:09:12
metton
IMHO начался спор ни о чем...
хуже не станет если запрос на удаление или изменение не пройдет из-за неправильно переданного параметра...