Помогите с функциональностью обновления БД - PullRequest
0 голосов
/ 05 сентября 2011

Я работаю над серверной функциональностью для клиента.Они хотят иметь возможность добавлять новые записи и редактировать старые записи с помощью очень простого представления;Я медленно добираюсь куда-то, но я застрял сейчас.Боюсь, я не продумал свой подход с самого начала.

Вот как это выглядит в данный момент: db update

Набор полей «Добавить» выдвигается из-подкнопка, которая не показывает атм.Он делает именно то, что говорит, добавляет новые записи в таблицу.Это прекрасно работает, мне удалось сделать представление динамическим (изменение полей в таблице и т. Д.), И операторы вставки работают также хорошо.Проблема, однако, заключается в функциональности редактирования.

Когда я нажимаю кнопку «Редактировать» рядом с записью, значения этой строки загружаются в приведенной выше форме.Затем клиент может редактировать значения и отправлять их. Или должен иметь возможность.

Я застрял здесь.В основном, заявление об обновлении заставляет меня хотеть ударить головой об стену.С таблицей видно, что написать запрос совсем не сложно:

$this->db->where('guestid' => $guestid)->update($table)

Первичный ключ здесь guestid.Я должен использовать этот идентификатор, чтобы узнать, какую строку я хочу обновить.Однако в настоящее время у меня нет возможности сообщить своей форме, какую строку я собираюсь обновить.Я мог бы сделать скрытое поле ввода и вставить туда идентификатор. Но!Я использую это представление, как я упоминал ранее, для разных таблиц.Не у каждой таблицы есть гестиды и т. Д. Я, конечно, мог бы написать огромный оператор switch или if-структуру, чтобы определить, какая таблица и, следовательно, какой идентификатор должен идти в скрытое поле, но я ищу более легкий путь.

Это в основном вызывает у меня головную боль, потому что некоторые таблицы имеют комбинированный PK (например, моя таблица event_pass имеет комбинированный PK eventID и passID).Я не уверен, как связать это с формой и как сказать моему приложению «посмотрите, обновите эти значения в этой строке этим PK».

У меня есть все метаданные таблицы в массиве, поэтому я знаю,PK и т. д.:

[eventID] => Array
    (
        [Field] => eventID
        [Type] => int(10) unsigned
        [Null] => NO
        [Key] => PRI
        [Default] => 
        [Extra] => 
    )

[passID] => Array
    (
        [Field] => passID
        [Type] => int(10) unsigned
        [Null] => NO
        [Key] => PRI
        [Default] => 
        [Extra] => 
    )
    etc..

Любая помощь с моим мыслительным процессом будет оценена здесь.Я не ищу полный фрагмент кода, просто некоторые мысли, предложения о том, как реализовать это и сделать мою жизнь немного проще.Я могу предоставить больше скриншотов того, как могут выглядеть другие таблицы, и, конечно, могу предоставить код, если это необходимо.Заранее спасибо.

1 Ответ

0 голосов
/ 05 сентября 2011

Вам необходимо получить первичный ключ из таблицы с помощью запроса SHOW INDEX FROM <table> (см. this ) и отправить данные первичного ключа на страницу - как вы и предлагали, скрытый ввод может быть способом чтобы сделать это, это, конечно, приятно и просто и должно делать именно то, что вы ожидаете, в каждом браузере.

Тогда все, что вам нужно сделать, - это прочитать эти данные при отправке запроса и соответственно построить условие where для запроса UPDATE ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...