Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как вытащит значения строки массива и внести новою форму? (https://javascript.ru/forum/dom-window/72251-kak-vytashhit-znacheniya-stroki-massiva-i-vnesti-novoyu-formu.html)

olegalimov 18.01.2018 08:56

Как вытащит значения строки массива и внести новою форму?
 
Доброе время суток.
У меня php скрипт по получению списка записей с SOAP-сервере.
Записи получаю виде формирования таблицы в массиве цикле.
Вот кусок php
//Успешно получили список записей с SOAP-сервера.
echo "<form id='myForm' method='post' style='display:inline;'><table class='info'><tr><td><h1>Существующие записи в доменном имени $namedomain</h1></td></tr><tr><td><table class='info_2'><tr><td>N</td><td class='number_id'>ID *</td><td>Действие</td><td>Хост</td><td>Тип записи</td><td>Приоритет</td><td>Вес</td>
<td>Порт</td><td style='width:200px'>Значение</td><td>Алгоритм</td><td>Приведение типа</td><td>Комментарий</td></tr>";
foreach($getrrrecord->data as $key =>$record)
  {
  echo"<tr class='$record->id' name='domain_id'><td>".($key+1)."</td>
  <td><span class='number_id'>".$record->id."</span></td>
  <td><button id='butt_cler' name='submitData'>Удалить</button></td>
  <td>".$record->owner."</td>
  <td>".$record->type_record."</td>
  <td>".$record->pri."</td>
  <td>".$record->weight."</td>
  <td>".$record->port."</td>
  <td class='td_value'>".$record->data."</td>
  <td>".$record->sshfp_algorithm."</td>
  <td>".$record->sshfp_type."</td>
  <td>".$record->info."</td></tr>";
  }
echo '</table></td></tr></table></form>';


Мне нужно при клике по кнопке вывести проверочную форму на удаления записи домена со значениями строки где была нажата кнопка.
В проверочной форме должны быть
<form class='forma_3' action='soap_action_deleterrrecord.php' method='post'>
<table class='info_2'>
<tr<td></td>
<td><input type='text' name='id' value='".$record->id."'></td>
<td>".$record->owner."</td>
<td>".$record->type_record."</td>
<td>".$record->pri."</td>
<td>".$record->weight."</td>
<td>".$record->port."</td>
<td class='td_value'>".$record->data."</td>
<td>".$record->sshfp_algorithm."</td>
<td>".$record->sshfp_type."</td>
<td>".$record->info."</td>
</tr>
<input class='button' type='submit' name='deleteRrRecord' value='Удалить запись домена'>
</table></form>


Я спрашивал форумах, одни пишут что нужен ajax, другие что достаточно javascript.
Помогите пожалуйста.

laimas 18.01.2018 09:31

Для удаления нужен Ajax запрос на сервер, или где вы собираетесь удалять?

Показывать нужно HTML код, то есть просто взять результирующий со страницы без всякого РНР.

olegalimov 18.01.2018 09:49

Цитата:

Сообщение от laimas (Сообщение 475531)
Для удаления нужен Ajax запрос на сервер, или где вы собираетесь удалять?

Показывать нужно HTML код, то есть просто взять результирующий со страницы без всякого РНР.

Мне нужно получить tr данные строки где была нажата кнопка.
и эти данные внести в появляющуюся форму.
Я собираюсь чтоб новая форма отправляла запрос на сервер.
Я не знаю ajax

ksa 18.01.2018 09:57

Цитата:

Сообщение от olegalimov
Я не знаю ajax

Дык!
https://javascript.ru/ajax/intro

laimas 18.01.2018 09:58

Цитата:

Сообщение от olegalimov
Я собираюсь чтоб новая форма отправляла запрос на сервер

А зачем тогда первая форма? Вы не считаете, что довольно таки странно иметь форму в которой все и так расписано, но при этом порождать другую форму дабы что-то удалить?

К примеру, результат запроса SOAP сервера вы отдали клиенту как форму (что у вас собственно и есть), в которой клиент может что-то удалить. То есть нажатие кнопки "Удалить", это удаление этой записи из таблицы в форме. Для этого Ajax не требуется. Удалив необходимое, эта форма отправляется на сервер для сохранения.

Ни какой второй формы не требуется.

Либо, запрос SOAP сервера, это сохранение данных на сервере, и одновременно выдача клиенту формы. В этом случае можно и флажками выбрать необходимые для удаления записи и отправить форму, сервер удалит выбранное. Можно как и в первом случае удалять каждую запись в таблице/форме отдельно, но с одновременным запросом к серверу для удаления выбранного на нем.

Зачем посредники? Что за задача вообще стоит, если

У меня php скрипт по получению списка записей с SOAP-сервере.
Записи получаю виде формирования таблицы в массиве цикле.


то что за удаление?

olegalimov 18.01.2018 10:08

Цитата:

Сообщение от ksa (Сообщение 475533)

я не понимаю как мне получить данные строки в ajax с php?
В php что добавлять нужно?
может на кнопку повесить onclick?

olegalimov 18.01.2018 10:20

Цитата:

Сообщение от laimas (Сообщение 475534)
А зачем тогда первая форма? Вы не считаете, что довольно таки странно иметь форму в которой все и так расписано, но при этом порождать другую форму дабы что-то удалить?

Может я неверно задаю вопрос.
зайдите на сайт http://juntik.ru/
логин olegalim@yandex.ru
пароль R0k0B7g4
далее
Доменное имя: juntik.ru
кнопка "удалить" должна родить форму для повержения удаления

laimas 18.01.2018 10:27

Мне вход ни о чем не говорит. У вас странная логика, которую вы описали в теме - иметь две формы не понятно для чего.

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

Вы либо некорректно описали суть задачи, либо ваша логика страдает излишеством, которое ни серверу, ни клиенту не нужно.

olegalimov 18.01.2018 11:26

Цитата:

Сообщение от laimas (Сообщение 475541)
иметь две формы не понятно для чего.
уникальный ключ этой записи.

Хочу объяснить зачем иметь две формы.
Вторая форма появляется после того как клиент нажмет кнопку удалить.
Чтоб клиент случайно не удалил запись. Разные люди бывают с разными болезнями например "Паркинсон, ДЦП"

Про уникальный ключ я знаю, это id записи домена.

Если я правильно думаю мне нужно с начала как-то получить значение строки
Я написал так но не работает
$(document).ready(function() { 
	$("#butt_cler").on("click", function(event, elem){
    $(this).closest("tr").find("td").each(function(idx, itm){
        console.log(itm);
    });
});
});

laimas 18.01.2018 12:09

Вторая форма не есть гарантия от случайного удаления, чтобы не было случайностей нужно спрашивать пользователя уверен ли он в своих действиях - cofirm-диалог.

У вас главная неразбериха в коде самой второй формы - не может быть в форме на клиенте, которая формируется по нажатию кнопки, РНР вставок.

Вы не описываете суть задачи. Предположим, что удаление, это все-таки удаление данных на сервере, которые были сохранены как данные SOAP сервера. Каждая такая запись сохранена под идентификатором - поле ID в таблице. Эти данные пользователю отдаются просто таблицей, а не формой, в которой есть кнопки "Удалить". Значениями этих кнопок являются эти идентификаторы, то есть:

<button value="'.$record->id.'">Удалить</button>


id='butt_cler' у кнопок удалено, так как id должно быть уникальным значением, да и в данном случае оно не требуется. РНР по разному интерпретирует строковые значения вставленные в одинарные и двойные кавычки. Если двойные, то он будет производить разбор строки в поисках вставленных в нее переменных. В вашем случае, это нагрузить его бесполезной работой, а поэтому выгоднее echo 'строка с атрибутами в двойных кавычках'.

Запрос на удаление:

$(function() {
    var btn = $('button').click(function() {
        if(confirm('Вы уверены, что хотите удалить ID '+this.value+'?')) {
            var bt = this;
            btn.prop('disabled', 1); //заблокировать запросы от кнопок на время запроса сервера
            $.ajax({
                //параметры запроса
                data: 'del='+this.value,
                success: function(data) {
                    btn.prop('disabled', 0); //разрешаем запросы от кнопок
                    //если сервер вернул ОК (это образно, а должен быть оговоренный параметр)
                    //то удаляем строку в таблице принадлежащей этой кнопке
                    $(bt).closest('tr').remove();
                    //иначе ошибка удаления
                }
            })
        }
    })
});


А вот что вы делаете не понять, по крайней мере логика странная.


Часовой пояс GMT +3, время: 14:54.