Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658

AJAX Редактирование ячейки таблицы в браузере и в БД

05.01.2017, 18:53. Показов 6678. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу сделать чтобы при клике по ячейке таблицы добавлялся временный тег input в который мы вводим новое значение, и при снятии фокуса выполнялся бы ajax. И в случае если запрос был успешным изменить содержимое ячейки в браузере. Передаваемые данные в ajax id тега tr, id тега td и значение введенное в input.

html:

HTML5
1
<tr id='1'><td id='ip' class='edit'>1231412411</td></tr>
ajax:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
                $('.edit').click(function(e) {
                    e.preventDefault();
                    $(this).html("<input type='text' value='"+$(this).text()+"'/>");
                }).click(function(e) {
                    e.preventDefault();
                    return false;
                }).blur(function(e) {
                    var send_id = $(this).closest('tr');
                    var tag = $(this).attr('id');
                    var info = $(this).text();
                    function funcSuccess(data)
                    {
                        if(data=='ok')
                        {
                            tag.text($(this).val());
                        }
                    }
                    e.preventDefault();
                        $.ajax ({
                        url: "edit.php",
                        type: "POST",
                        data: ({id: send_id, type: tag, value: info}),
                        dataType: "html",
                        success: funcSuccess
                    });
                });
и собственно PHP:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
include('connect_db.php');
if(isset($_POST['id'])&&isset($_POST['type'])&&isset($_POST['value'])){
    $id = $_POST['id'];
    $type = $_POST['type'];
    $value = $_POST['value'];
    if(mysql_query ("UPDATE dashboard SET '$type' = '$value' WHERE id = '$id'"))
        echo 'ok';
    }
    else {
        echo 'error';
    }
}
else {
    echo 'error';
}
?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2017, 18:53
Ответы с готовыми решениями:

Редактирование таблицы MySql в браузере
Доброго времени суток подскажите как реализовать редактирование таблицы MySql в браузере, как это сделано в phpMyadmin

Редактирование таблицы в браузере MySql
Доброго времени суток подскажите как реализовать редактирование таблицы MySql в браузере, как это сделано в phpMyadmin

Ajax редактирование записи таблицы
Помогите пожалуйста сделать редактирование записи,вывожу данные записи из таблицы в форму с id=&quot;bay&quot;,а как сделать чтобы при...

1
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
05.01.2017, 19:56
koc94ok, У вас планируется динамическое добавление/удаление строк?

Добавлено через 55 минут
koc94ok, Совсем недавно делал подобную задачу в качестве стажировки, основная проблема конечно заключается в валидации на стороне сервера и клиента, но сейчас эту тему не будет трогать.
В общем дам несколько советов. Динамически создавать инпут не нужно. Он должен уже лежать в ячейке, только скрытый. Присваивать значение ячейке лучше сразу, и откатывать в случае ошибки. Это визуально ускорит процесс. Иначе из-за задержек ответа от сервера будет не очень удобно пользоваться. Далее, если у вас id у tr предполагает значение id элемента в БД, то лучше не использовать аттрибут id, а лучше использовать data-id, тоже самое касается и имени поля ('ip'). Рекомендуется все-таки формировать ответ от сервера в формате json, да и все аякс запросы в прочем, таким образом вы сможете не только констатировать удачу/неудачу исполнения php кода, но и передавать различные дополнительные значение, к примеру текст либо код ошибки, таким образом поясняя, что именно произошло не так.
Вот накидал такой примерчик на скорую руку, код подстроен для сервиса jsfiddle
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<table class='wrap' border='1'>
  <tr data-id='1'>
    <td data-name='ip' class='edit'>
      <div>1231412411</div>
      <input value='1231412411'>
    </td>
  </tr>
  <tr data-id='2'>
    <td id='ip' class='edit'>
      <div>1231412411</div>
      <input value='1231412411'>
    </td>
  </tr>
</table>
CSS
1
2
3
.edit input {
  display: none;
}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$('.wrap').on('click', '.edit', function() {
  $this = $(this);
  $this.find('div').hide();
  $input = $this.find('input').show().focus();
});
$('.wrap').on('focusout', '.edit input', function() {
  var $input = $(this).hide();
  var $tr = $input.closest('tr');
  var $td = $input.parent();
  var defaultValue = $input[0].defaultValue;
  var newValue = $input.val();
  var $div = $tr.find('div').text($input.val()).show();
  
  if(defaultValue === newValue) {
    return false;
  }
  function fail(){
    $div.text(defaultValue);
    $input.val(defaultValue);
    alert('не удалось изменить элемент');
  }
  $.post('/echo/html/', {
    id: $tr.data('id'),
    name: $td.data('name'),
    value: newValue,
    html: 'ok'
  }).done(function(data){
    if(data==='ok'){
        $input[0].defaultValue = newValue;
    } else {
        fail()
    }
  }).fail(fail)
})
https://jsfiddle.net/c8z3guu1/2/
Здесь приходит тот ответ, который вы посылаете параметром html, таким образом можете генерировать ошибку, изменив передаваемый параметр html, отличный от "ок"
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.01.2017, 19:56
Помогаю со студенческими работами здесь

Редактирование одной ячейки таблицы
Создал таблицу и хочу чтоб только в одной ячейке вводилось значение. Но моим методом только добавлять строку... private void...

Ajax-редактирование строки таблицы при нажатии
в общем надо сделать редактирование выбранной строки, я выбираю строку нажимаю на ней кнопку и данные которые есть в нужных ячейках...

Таблица AdvStringGrid как правильно сделать редактирование базы через ячейки таблицы
Есть таблица AdvStringGrid, в которой отображаются данные базы данных. Грубо говоря есть три поля: цена закупки, цена продажи и разница....

Редактирование ячейки и перенос значения ячейки через форму
Доброго времени суток люди) Помогите чем сможете, всю голову уже изломали. Сначала хотели кнопку с формой поиск на втором листе сделать по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru