За последние 24 часа нас посетили 5714 программистов и 458 роботов. Сейчас ищет 221 программист ...

Обновление измененных строк

Тема в разделе "PHP и базы данных", создана пользователем lordconst, 14 дек 2019.

  1. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    134
    Симпатии:
    1
    Имеется код, который выводит в html-таблицу значения из базы данных, возможно даже из двух связанных таблиц, но не суть важно.
    У каждой строки имеется value, в которое подставляется значение из базы, но вывожу все это дело в тег input (это страница редактирования данных).
    Как мне с помощью нажатия кнопки сохранить новые данные в базе? Допустим, изменил я данные в одной строке (одно или несколько полей), нужно чтобы они сохранились в базе.
    Скорость работы не важна, можно просто топорно и грубо брать абсолютно все строки (даже те, которые не редактировались) и обновлять одним запросом.
    Как это сделать?
     
  2. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    134
    Симпатии:
    1
    Набросал такой код:
    PHP:
    1. <?php
    2. $text = file_get_contents( 'http://coursework/edit.php?value=personalAccount' );
    3. preg_match_all( '/<th scope="row">(.*)<\\/th>/' , $text , $title );
    4. print_r($title);
    5. ?>
    Выдает пустой массив. Что делаю не так?
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.494
    Симпатии:
    1.033
    Адрес:
    Лень
    помощь парсеру запрещен законодательством форума.
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.330
    Симпатии:
    462
    Адрес:
    Татарстан
    Парсинг тут не при чем, прочтите первый пост. Но ТС именно через парсинг пытается это делать. Это ппц просто.

    1. Простой способ. Таблицу оборачиваете в форму <form>. Инпутам даёте соотв имена например input[1] где 1,2 итд это id элемента из таблицы. Принимаете на бэке массив с ид и значениями, обновляете в бд
    2. Посложнее, но кошернее. На каждый инпут привязываете на событие chsnge или кнопочку сохранить рисуете функцию, которая ajax передает ид и значение в бек, там обновляете в бд
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.494
    Симпатии:
    1.033
    Адрес:
    Лень
    Достаточно двух строк кода, чем 96 слов
     
  6. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    134
    Симпатии:
    1
    Так и я об этом думал изначально, но я не знаю как принять этот массив.
    В случае с выборкой из бд при выводе значений проблем нет, просто делаем запрос и формируем массив с помощью функции, а в этом случае как?
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    2.680
    Симпатии:
    425
    Сохранять нужно отдельные записи или даже отдельные поля записи.

    Запрос к БД идет по id записи с перечнем обновляемых полей и их новых значений. Существование записи и изменяемых полей лучше предварительно проверять, значения экранировать или использовать подготовленные запросы.
    --- Добавлено ---
    Т.е. непосредственно при сохранении можно сделать выборку изменяемой записи, убедившись что она существует, и сравнить имена полей. Также можно сравнить и поступившие значения полей, чтобы не писать лишнее, если эти значения совпадают с оригинальными. Запись в БД – это дорогая операция, поэтому ее нужно по максимуму упрощать.
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    2.680
    Симпатии:
    425
    Пых тебе сохранит значения полей с формы в ассоциативном массиве $_POST. Тебе нужно только форму нормально сформировать, а потом обработать содержимое $_POST.