Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
arava
312 / 115 / 62
Регистрация: 30.06.2014
Сообщений: 631
#1

Обработка данных в модели

27.01.2017, 11:48. Просмотров 195. Ответов 8

С формы приходят данные на контроллер :

PHP
1
2
3
4
5
<form method="post" action="/warehouse/show/<?=$value['id']?>">
          <input class="input-sm-form-text" type="text" name="quantity" placeholder="Количество кабеля"/>
          <input class="input-sm-form-text" type="text" name="num_todo" placeholder="TODO"/>&nbsp;&nbsp;&nbsp;
          <input class="btn-default" type="submit" name="saveCable" value="Сохранить"/>
        </form>
Контроллер принимает данные и должен передавать на модель, которая по этим данным сделаем выборку с БД

PHP
1
2
3
4
5
6
7
8
9
 public function action_show()
    {
        if(isset($_POST['saveCable'])) {
 
            $quantity_form = $_POST['quantity'];
 
            $data = Model_warehouse::saveQuantity($quantity_form);
 
        }
Модель :

PHP
1
2
3
4
5
6
7
8
    public static function saveQuantity($quantity_form)
    {
        $id = Routing::getParameters();
 
        $db = DB::getConnection();
        $data = $db->query("SELECT quantity FROM warehouse WHERE id='".$id."' ");
 
        $array = $data->fetch_all(MYSQLI_ASSOC);// Выбираем все строки и помещеаем их в асоциативный массив
Прошу помощи в понимании как сделать обработку данных в моделе .
Задача такова : В форме я ввожу число, передаю его на контроллер. В моделе я с БД получаю число
SQL
1
SELECT quantity FROM wareheouse WHERE id=$id;
выполняю арифметическую операцию ( число с формы отнимаю от числа с БД ) . Получаю результирующее число и выполняю
SQL
1
UPDATE TABLE SET quantity="рузультат вычитания" WHERE id=$id;
Честно уже запутался совсем
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2017, 11:48
Ответы с готовыми решениями:

Поинтервальная обработка данных из БД
Добрый день уважаемые пользователи. У меня следующая проблема. Есть таблица в...

Обработка данных формы
Здравствуйте. Помогите пожалуйста, нужно создать электронный формуляр...

Обработка большого объема данных
Добрый ночи ребята помогите с одной проблемой. У на старом сайте одного...

Обработка формы. Запись данных в базу
Добрый день господа, Есть проблема с записью данных в базу. Помогите решить....

Обработка и получение данных из многомерного массива
Всем привет! Что мы имеем: 2 таблицы в базе данных:groups и emails Запросом...

8
Jodah
Эксперт PHP
2706 / 2378 / 1013
Регистрация: 01.08.2012
Сообщений: 8,405
27.01.2017, 12:03 #2
Может так?
PHP
1
2
$db = DB::getConnection();
$db->query("UPDATE `warehouse` SET `quantity` = `quantity` - $quantity_form WHERE `id` = '$id'");
Только не забудьте экранировать $quantity_form или привести к числу, а то могут взломать.
0
arava
312 / 115 / 62
Регистрация: 30.06.2014
Сообщений: 631
27.01.2017, 12:51  [ТС] #3
Такое приведение к числу валидно ?

PHP
1
  $db->query("UPDATE warehouse SET quantity=quantity-'".intval($quantity_form)."' WHERE id='".$id."' ");
Добавлено через 3 минуты
Если в форме вписать число -130 то в UPDATE число увеличивается . Получается в запросе происходит 500 - -130 = 630

Почему так? вычисление интерпретатора?

Добавлено через 3 минуты
Проверил такой код :
PHP
1
2
3
4
5
$a = 5;
$b = 10;
 
$total = $a - -$b;
echo $total;
// result 15

0
Para bellum
Эксперт PHP
4058 / 3024 / 967
Регистрация: 06.01.2011
Сообщений: 8,862
27.01.2017, 13:07 #4
Цитата Сообщение от arava Посмотреть сообщение
Почему так? вычисление интерпретатора?
Минус на минус -- даёт плюс.
0
andr-xw
121 / 76 / 32
Регистрация: 05.03.2013
Сообщений: 447
27.01.2017, 13:09 #5
Математика 5й класс
0
Jodah
Эксперт PHP
2706 / 2378 / 1013
Регистрация: 01.08.2012
Сообщений: 8,405
27.01.2017, 13:51 #6
Цитата Сообщение от arava Посмотреть сообщение
Такое приведение к числу валидно ?
Да.
Цитата Сообщение от arava Посмотреть сообщение
Почему так? вычисление интерпретатора?
Ответили выше. От себя добавлю, что -130 - это корректное число. Если нужно чтобы число не было отрицательным - делайте соответствующую проверку.
1
arava
312 / 115 / 62
Регистрация: 30.06.2014
Сообщений: 631
27.01.2017, 13:51  [ТС] #7
Ладно ладно, это понятно.

Вы скажите валидно ли такое приведение к числу ??
PHP
1
  $db->query("UPDATE warehouse SET quantity=quantity-'".intval($quantity_form)."' WHERE id='".$id."' ");
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16751 / 6642 / 864
Регистрация: 12.06.2012
Сообщений: 19,892
Завершенные тесты: 1
27.01.2017, 13:56 #8
да, валидно.
1
Para bellum
Эксперт PHP
4058 / 3024 / 967
Регистрация: 06.01.2011
Сообщений: 8,862
27.01.2017, 14:05 #9
Что у Вас за объект возвращает DB::getConnection()? Если PDO или MySQLi -- лучше используйте подготовленные запросы:
PHP
1
2
3
$stmt = $db->prepare("UPDATE `warehouse` SET `quantity` = `quantity` - :quantity WHERE `id` = :id ");
 
$stmt->execute([':quantity' => $quantity_form, ':id' => $id]);
1
27.01.2017, 14:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2017, 14:05

Обработка формы и отправка данных в MySQL?
Доброго времени суток!!! Подскажите пожалуйста где ошибка всю голову сломал....

Обработка формы, проверка типа данных
Здравствуйте. Через форму передаю определенное число: &lt;input type=&quot;text&quot;...

Дать определение модели данных и назвать основные модели данных
Дать определение модели данных и назвать основные модели данных. Только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru