Jquery -> php -> mysql и динамические поля формы - PullRequest
1 голос
/ 02 июня 2009

У меня есть многостраничная форма, которая использует несколько таблиц в MySQL для введенных значений. На одной из страниц есть форма, в которой должна быть опция, позволяющая пользователю нажимать +, чтобы добавить дополнительную строку, если они хотят включить дополнительную информацию. Может быть добавлено любое количество строк.

Когда пользователь нажимает +, jquery и php вставляет текущий идентификатор пользователя в строку в таблице базы данных, он обновляется при вводе дополнительной информации.

Проблема, с которой я столкнулся, заключается в том, чтобы вставить любое количество строк для этого конкретного идентификатора - при вводе данных событие размытия отправляет данные в код php для обновления базы данных. Однако проблема у меня заключается в том, что он обновит ВСЕ строки с этим конкретным идентификатором пользователя, а не с текущим.

Как лучше всего взять данные, введенные в новые строки, и обновить базу данных - я предполагаю, что мне придется использовать значение идентификатора, а не значение идентификатора пользователя, поскольку оно будет уникальным или существует другой способ Делать это?

Спасибо за любые предложения, которые вы можете дать, в настоящее время это затуманивает мой разум ...

Ответы [ 4 ]

1 голос
/ 02 июня 2009

да, лучше всего, чтобы mysql возвращал уникальный идентификатор для каждой созданной строки, а затем просто при каждом редактировании строки в форме отправляйте идентификатор вместе с ним. Теперь вы можете редактировать по одной строке за раз.

1 голос
/ 02 июня 2009

Да, вам нужно значение идентификатора вставляемых строк, а не только идентификатор пользователя. Я полагаю, что вы хотели бы сделать, это вернуть mysql LAST_INSERT_ID() из вашего Ajax-скрипта, который выполняет вставку, когда вы нажимаете +, и вставить этот идентификатор в информацию, которую вы используете позже для обновления строки. *

1 голос
/ 02 июня 2009

Ну, я думаю, что вам нужно использовать пару идентификаторов, ваш идентификатор пользователя и идентификатор поля. Для редактирования будет достаточно только filedid, но когда вам нужно будет перечислить все пользовательские поля, понадобится другая ссылка.

1 голос
/ 02 июня 2009

Вы правы, когда утверждаете, что вам следует использовать первичный ключ обновляемой таблицы, а не внешний ключ (UserId в вашем случае), который часто встречается в вашей таблице. Это гарантирует, что вы обновите ожидаемую строку.

Альтернативой может быть сужение строк, которые вы обновляете, например, путем обновления только самой последней / той, которая имеет самый высокий идентификатор, или использования комбинации полей, которые делают запись уникальной. Однако использование первичного ключа - лучший способ решить вашу проблему.

...