Yamenko, то, что сейчас пишешь -- это полное гуанище.
Дело поповщины цветёт и пахнет.
Я так сейчас быстро пробегусь по самым самым:
У тебя должен быть всегда на полную катушку взведён уровень ошибок.
(эррор репортинг, ини сет дисплей эррорс)
Нельзя доверять вообще ничему, что присылает клиент.
Если сказано вообще ничему, значит так и есть.
Ты должен проверить всьо!
Если надо в базу слазить -- слазий, но провалидируй.
Посмотри на мой код -- большая часть телодвижений это валидация.
Валидация каждой какашечки присланной клиентом.
Ой, нет, не каждой, но дальнейшая сверка уже зависит от ТЗ, я то только почистил то что понял.
Все ф-ции mysql_* объявлены устаревшими.
Они настолько устарели, что даже старше самого старого мамонта.
Используй PDO или на худой конец mysql i_*
Ты должен четко представлять что ты делаешь.
Я понимаю что ты щас можешь часть финтов происходящих в коде не понять.
Это не важно -- позже поймёшь.
Сейчас пиши так как умеешь.
Пошагово, с запросами в цикле.
Но валидируй данные приходящие от клиента!
Как патологоанатом в перчаточках.
Ах, да! Форматирование кода.
Не надо калякать ака курица лапой.
Ты программу пишешь а не картину.
Иначе тебе к малевичам.
Кароче вот мой ответ засилью поповщины:
PHP:
скопировать код в буфер обмена
<?PHP $requiredKeys = array('ID_QT', 'QT'); $requiredSize = null; // validate foreach ($requiredKeys as $key) { // check for exists keys exit('Данные отсутствуют!'); } // check for data type exit('Я ожидаю массивы!'); } // compare sizes of dependency arrays $currentSize = sizeof($_POST[$key]); if ($requiredSize !== null && $requiredSize != $currentSize) { exit('Размеры массивов должны совпадать!'); } // check items data type foreach ($_POST[$key] as $item) { } $intItem = (int) $item; if ($item != $intItem) { exit('Это не целое число!'); } // store valid item value if ($key == 'ID_QT') { if ($intItem < 1) { exit('Некорректный идентификатор!'); } $whereIn[] = $intItem; } else if ($key == 'QT') { if ($intItem < 0) { exit('Некорректное кол-во!'); } $whenThen[] = $intItem; } } $requiredSize = $currentSize; } if ($whereIn) { // prepare foreach ($whenThen as $k => $qt) { $whenThen[$k] = 'WHEN ID = ' . $whereIn[$k] . ' THEN ' . $qt; } // run query (use mysql_query instead exit) 'UPDATE `PLAN` SET `QUANTITY` = CASE ' . ' ELSE `QUANTITY` END WHERE ID IN(' . ');' ); }
|