Сообщение от Bearon
|
Как такое провернуть с <td>? Так же нужно просто присвоить ему id?
|
Есть пока еще проблемы с форумом, не стал писать об этом сразу.
Допустим, принимаем, что вы получаете списки и итоговую форму асинхронными запросами. В вашем коде при этом есть потенциальные проблемы.
1) Неизвестно чем обрабатываются у вас ошибки/исключения запросов БД, на что должна быть реакция и ответ клиенту, но даже без их наличия не проверяется вернул ли вообще что-то запрос.
2) Без проверки указанного в п. 1, формируется html-код ответа клиенту, а значит при ошибках запроса или запросах возвращаемых null, клиент получит "битый код". Особенно узкое место в этом плане, это в цикле, где производится группа отдельных запросов к БД.
Такой код будет источником проблем и даже для случая когда формы будут отправляться естественным путем, без Ajax.
Идентификаторы у списков служат для их идентификации в обработчике событий. Форма же для группового обновления, так что каких то id для отдельных строк таблицы не требуется назначать. Если форму отдает сервер и она помещается к примеру DIV уже имеющийся на странице, у вас есть такой, который и можно использовать, <div id="divstud_edit">. То есть он постоянно на странице, а не результат запросов списков, тогда при получении формы нужно устанавливать ее обработчик, например:
//возьмем не ваш метод асинхронных запросов group.load
//а $.ajax, который обрабатывает запросы списков, тогда
var dst = this.id; //запомним источник события - текущий список
....
success: function(data) {
//data может содержать как списки так и форму
//что получена форма можно узнать по id источника события
if(dst=='semestr') { //получена форма
$("#divstud_edit").html(data).find('form').submit(function(e) {
e.preventDefault();
//отправляем форму асинхронным запросом
$.ajax(....)
})
} else $("#group").html(data) //получен список
}
....
А вот сама таблица/форма, это как ранее говорилось, только необходимое для обновления
<td><?=$disc['name']?></td>
<td><?=$group['group_name']?></td>
.....
<td><input type="text" name="upd[<?=идентификатор обновляемой записи?>]" value ="<?=текущее значение?>"></td></tr>
И сервер получить массив upd ключами которого будут ID для WHERE, и значение для SET. Именовать поля как name1...nameN, кроме геморроя ничего не дает. Уж коли ID и значение, это двумя полями формы, тогда проще name="name[]" для всех полей, а на сервере
foreach(array_chunk($_POST['name'], 2) as $data) {
....
Это тоже самое, ибо как ваши нумерованные, но никак не связанные поля, так и этот подход, не есть гарантия того, что вы чинным порядком получите поля формы так как ожидаете.