|
| |
|
|
| |
для: abord
(24.08.2006 в 17:04)
| | | Если вас беспокоит слишком большое число, да можно воспользоваться третьим решением, но обычно это не делают, так как пользователь вряд ли в этом случае что-то реально покупать будет... | |
| |
|
|
| |
|
|
| |
для: RV
(24.08.2006 в 18:59)
| | | проверить сколько есть на складе и дальше плясать уже от этого
Не ну можно в goods заделать поле count и через админку бы заполнялось для каждого товара его количество. Это тоже стандартно и мое решение легко расширяемо и для такого случая, но если заказчику это не нужно. Те админу проще не заполнять это поле. Я просто выношу в настройки $maxcount = 10000 согласовав с заказчиком, если сделали заказ на какое нибудь реальное число товаров, то его можно рассматривать, а если ввели например 10000000 то такой заказ даже не пройдет.
Как вы считаете? | |
| |
|
|
| |
|
|
| |
для: abord
(24.08.2006 в 18:49)
| | | проверить сколько есть на складе и дальше плясать уже от этого | |
| |
|
|
| |
|
|
| |
для: RV
(24.08.2006 в 18:42)
| | | Задача корзина, интернет магазина, в пользователь вводит count, количество товара в текстовое поле, конечно он туда не введет 10000000000000, если он нормально делает заказ, но теоритически ему никто не мешает этого сделать. Так же как и ввести например отрицательное число. А зачем мне в таблице заказов бессмысленные значения?
mysql_error() конечно ничего не возвращает, но тем не менее если бы был не INT а TINYINT урезались бы уже достаточно небольшие числа. Почему бы не проверять большие значения?
Насчет goodid тут как и в любом каталоге, можно сделать просто SELECT count(*) FROM goods WHERE goodid =".$this -> goodid и далее товар/рубрика найден/не найден.
Но помойму, условие не повредит
$maxid = getoneresult("SELECT MAX(goodid) FROM goods WHERE 1");
if($this -> goodid > 0 && $this -> goodid < $maxid){
}
Если $this -> goodid > $maxid в данном случае имело место редактирование адресной строки и не подставлять $this -> goodid в запрос, по мойму уже плюс к безопасности... | |
| |
|
|
| |
|
|
| |
для: abord
(24.08.2006 в 18:35)
| | | а где неправильный запрос? mysql_error() что то возвращает?
и что за такой id который пользователь сам должен делать?
получается что вы сами не знаете структуру вашей таблицы.
какая первоначальная задача? потому как решение очень странное | |
| |
|
|
| |
|
|
| |
для: RV
(24.08.2006 в 18:30)
| | | INSERT INTO `basket` ( `sid` , `dateadd` , `goodid` , `count` )
VALUES (
'0', '0', '100000000000000000000000000', '0'
);
В таблице получается 0 0 2147483647 0 | |
| |
|
|
| |
|
|
| |
для: abord
(24.08.2006 в 18:28)
| | | >Если п-ль ввел огромный id будет неверный sql запрос
покажите пример такого запроса | |
| |
|
|
| |
|
|
| |
для: abord
(24.08.2006 в 18:11)
| | | Решение такое:
Запрос
&goodid=65&count=432
function CheckGoodid(){
$maxid = getoneresult("SELECT MAX(goodid) FROM goods WHERE 1");
if($this -> goodid > 0 && $this -> goodid < $maxid){
if(getoneresult("SELECT count(*) FROM goods WHERE goodid =".$this -> goodid)){
return TRUE;
}
}
return FALSE;
}
function CheckCount(){
global $maxgoodcount;
if($this -> count > 0 && $this -> count < $maxgoodcount){
return TRUE;
}
return FALSE;
}
//getoneresult возвращает одно выбранное значение
|
вот я введу id=4, а у вас такого нет. и что теперь? general protection fault как поговаривала винда.
Сначала смотрим, что 4 больше 0 и меньше моего максимального id в базе,
а затем SELECT count(*) FROM goods WHERE goodid =4 | |
| |
|
|
| |
|
|
| |
для: abord
(24.08.2006 в 18:11)
| | | в таком случае как вы защищаетесь от отсутствующих id в базе.
вот я введу id=4, а у вас такого нет. и что теперь? general protection fault как поговаривала винда.
во-вторых с чего вы взяли что при большом id будет неверным sql запрос? | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(24.08.2006 в 17:35)
| | | Если п-ль ввел огромный id будет неверный sql запрос
Допустим у меня поле Id типа INT
У него есть свой предел, если число превысит этот предел то вместо него будет занесено значение соответсвующее границе предела.
По мойму оно не надо:) | |
| |
|
|
|