За последние 24 часа нас посетили 17452 программиста и 1721 робот. Сейчас ищут 1535 программистов ...

Редактирование массива POST и после занесение в БД UPDATE

Тема в разделе "PHP и базы данных", создана пользователем Барахтянский Владимир, 27 окт 2021.

Метки:
  1. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    Добрый день, уже существует база данных, далее есть страница на которой отображаются все данные данной базы с формой для редактирования некоторых параметров, после чего данный массив передается на страницу обработки этих всех данных методом POST, также существует страница обработки и отправки всего массива параметром UPDATE в базу данных.
    На проверку о получении массива страницей обработки, проверка проходит, но в базу не записывается, как я понял требуется правильная обработка этого массива для того чтобы можно было занести массивы в переменные и применить уже в UPDATE.

    Пожалуйста подскажите как обработать этот массив и возможно есть видео ролики подобной задачи с решением.

    Файлы во вложении.
    Скрипт формы: table-tabel.txt
    Скрипт обработки: update-tabel.txt
     

    Вложения:

  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    922
    Симпатии:
    143
    Бюджет?
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    :eek: оу щит...

    2021-10-27_18-44-27.png
    --- Добавлено ---
    убери в table все скобки [] по селектам
    select name="m31[]"

    с тебя 100 рублей. шутка
     
  4. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    Извини, бюджета вообще нет, пытаюсь себе работу облегчить, считаю зп сотрудникам(работаю экономистом), это делаю табель учета рабочего времени, там просто много условий при табелировании, все вроде как должно работать, но проблема в том что данные массивов уходят, но уходят на страницу обработки не в полном объеме, получается в табель отображает ~150 человек (в базе на каждого человека чуть более 40 параметров), методом POST передают, а на странице принимаемой приходит только массив до 30 человек, и только по ним соответственно UpDATE осуществляется. Если в Табеле до 30 человек, то программа работает исправно. Здесь какие-то ограничения по отправке методом POST, post_max_size увеличил до 400М (по максимуму), ничего не дает, вероятно есть какое-то ограничение по числу символов. На разных форумах пытался найти аналоговую проблему, но никто про такие большие массивы не пишет. Может есть решение по увеличению кол-ва символов? Если кто поможет решить проблему, чисто от себя могу 2000рублей перевести. Извините более средствами не располагаю. Для кого-то может это быстро решаемый вопрос.
    Приложил скрин того что только отдает, т.е. по все коду читает, но не до конца передает массивы.
    [​IMG]
    --- Добавлено ---
    Если в name уберу [] то не будет передаваться массив, а только первые полученные данные
     

    Вложения:

  5. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    Если в name уберу [] то не будет передаваться массив, а только первые полученные данные, глят
    Не тот скрипт обработки закинул Вам, вот верный:
    <?php
    ini_set('max_execution_time',60);
    set_time_limit(60);
    $ogms = $_GET['ogm'];
    $data = $_POST['data'];
    $shifrs = $_POST['shifrs'];
    $months = $_POST['months'];
    $fioman = $_POST['fioman'];
    $developer = $_POST['developer'];
    $id = $_POST['id'];
    $ogms_j = $_POST['ogmj'];




    $m1 = $_POST['m1'];
    $m2 = $_POST['m2'];
    $m3 = $_POST['m3'];
    $m4 = $_POST['m4'];
    $m5 = $_POST['m5'];
    $m6 = $_POST['m6'];
    $m7 = $_POST['m7'];
    $m8 = $_POST['m8'];
    $m9 = $_POST['m9'];
    $m10 = $_POST['m10'];
    $m11 = $_POST['m11'];
    $m12 = $_POST['m12'];
    $m13 = $_POST['m13'];
    $m14 = $_POST['m14'];
    $m15 = $_POST['m15'];
    $m16 = $_POST['m16'];
    $m17 = $_POST['m17'];
    $m18 = $_POST['m18'];
    $m19 = $_POST['m19'];
    $m20 = $_POST['m20'];
    $m21 = $_POST['m21'];
    $m22 = $_POST['m22'];
    $m23 = $_POST['m23'];
    $m24 = $_POST['m24'];
    $m25 = $_POST['m25'];
    $m26 = $_POST['m26'];
    $m27 = $_POST['m27'];
    $m28 = $_POST['m28'];
    $m29 = $_POST['m29'];
    $m30 = $_POST['m30'];
    $m31 = $_POST['m31'];




    $ktu = $_POST['ktu'];




    require_once '../connect-tabel.php';
    foreach($id as $key => $value) {
    mysqli_query($connect, "UPDATE `ogm` SET `shifr` = '".$shifrs[$key]."', `m1` = '".$m1[$key]."', `m2` = '".$m2[$key]."', `m3` = '".$m3[$key]."', `m4` = '".$m4[$key]."', `m5` = '".$m5[$key]."', `m6` = '".$m6[$key]."', `m7` = '".$m7[$key]."', `m8` = '".$m8[$key]."', `m9` = '".$m9[$key]."', `m10` = '".$m10[$key]."', `m11` = '".$m11[$key]."', `m12` = '".$m12[$key]."', `m13` = '".$m13[$key]."', `m14` = '".$m14[$key]."', `m15` = '".$m15[$key]."', `m16` = '".$m16[$key]."', `m17` = '".$m17[$key]."', `m18` = '".$m18[$key]."', `m19` = '".$m19[$key]."', `m20` = '".$m20[$key]."', `m21` = '".$m21[$key]."', `m22` = '".$m22[$key]."', `m23` = '".$m23[$key]."', `m24` = '".$m24[$key]."', `m25` = '".$m25[$key]."', `m26` = '".$m26[$key]."', `m27` = '".$m27[$key]."', `m28` = '".$m28[$key]."', `m29` = '".$m29[$key]."', `m30` = '".$m30[$key]."', `m31` = '".$m31[$key]."', `ktu` = '".$ktu[$key]."', `ogm_j` = '".$ogms_j[$key]."' WHERE `ogm`.`id` = '".$id[$key]."' ");

    }


    header("Location: ogm.php?month=$months&year=$data&ogm=$ogms");
    ?>
     
  6. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    PHP:
    1. <?php
    2. $default_array = array('id'        => 'default value',
    3.                        'name'      => 'default value',
    4.                        'address'   => 'default value',
    5.                        'zipcode'   => 'default value',
    6.                        'phone'     => 'default value',
    7.                        'email'     => 'default value',
    8.                        'sex'       => 'default value',
    9.                        'old'       => 'default value'
    10.                        );
    11. $new_array = array();
    12. foreach($default_array as $key => $value)
    13. {
    14.   if(isset($_POST[$key]))
    15.   {
    16.    $new_array[$key] = $_POST[$key]; // my_function($key, $_POST[$key]); //предобработка ввода
    17.   }
    18. //  else
    19. //  {
    20. //   $new_array[$key] = $value;
    21. //  }
    22. }
    23. if(count($new_array) == count($default_array))
    24. {
    25. $sql = sprintf("UPDATE `tablename`
    26. SET
    27. `name` = '%s',
    28. `address` = '%s',
    29. `zipcode` = '%s',
    30. `phone` = '%s',
    31. `email` = '%s',
    32. `sex` = '%s',
    33. `old` = '%s'
    34. WHERE `id` =%s;",
    35. $new_array['name'], $new_array['address'], $new_array['zipcode'], $new_array['phone'],
    36. $new_array['email'], $new_array['sex'], $new_array['old'], $new_array['id']);
    37. echo $sql;
    38. }
    39. else
    40. {
    41. echo 'something wrong<pre>';
    42. print_r($new_array);
    43. }
    44. ?>
     
  7. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Нашёл решение?
     
  8. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    Сейчас посмотрю, что за пример выше, и отпишусь
     
  9. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    Так и не решил
     
  10. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    У тебя есть доступ к таблице mysql с названием ogm ? Сколько там полей данных?
     
  11. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    45 всего вместе с id
    upload_2022-3-30_15-30-18.png
     
  12. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    У тебя 30 полей для 30 человек, если нужно для 40 человек, то и полей должно быть больше. А ещё запрос на UPDATE тоже рассчитан только на 30 записей.
     
  13. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    я просто проверяю передачу данных POST, на другую страницу, он еще до UPDATE не все данные передает, т.е. я просто закомментировал передачу данных в БД и отобразил полученные данные на странице, получается он не все данные передает
     
  14. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Тогда сколько переменных вида m1 - m31 передаётся в массив POST со страницы с формой?
     
  15. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    на каждого человека по разному в зависимости от заполнения, но если брать 150 человек, то в среднем 75*31 значений переменных m1-m31
     
  16. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Значит каждая переменная m это массив. Массив чего? Почему передается именно массив в каждой такой переменной? Это действительно необходимо, передавать столько данных за одну отправку формы?
     
  17. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    У меня есть табель учета рабочего времени, где есть необходимость редактировать каждого человека, добавляя или убирая дни. На самом деле я просто не вижу другой возможности сохранить данные изменения, как передать на UPDATE все параметры сразу ( сохранять каждую строчку по отдельности нет возможности, так как это затруднит работу человеку который должен заполнять этот табель. Если есть возможность сохранить все изменения разом каким-то другим способом, мне бы очень сильно это помогло, так как я не могу найти нигде другую информацию как это осуществить
    upload_2022-4-1_10-32-43.png
     
  18. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Поля m в базе данных имеют тип varchar и размер 11? Может быть такой длины недостаточно для сохранения всех данных?
     
  19. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    Попробую конечно поменять на text но там максимум 2 символа хранится
     
  20. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    короче, нашел решение, в .htaccess вот что прописал :php_value max_input_vars 200M, и заработало
     
  21. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    И я тоже кое что понял. И тебе спасибо за тему. Интересная была задача.
     
  22. Барахтянский Владимир

    С нами с:
    27 окт 2021
    Сообщения:
    13
    Симпатии:
    1
    Да, конечно, тебе спасибо, на самом деле без тебя бы не смог некоторые моменты проверить