Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   передача данных из таблицы в php (https://javascript.ru/forum/server/35366-peredacha-dannykh-iz-tablicy-v-php.html)

alexvb 08.02.2013 20:57

передача данных из таблицы в php
 
Господа, такой вопрос. Есть таблица, заполняется добавлением строк через table.insertRow, insertCell. Визуально на странице таблица заполняется. Как можно данные этой таблицы передать на сервер (PHP)?

Deff 08.02.2013 21:12

alexvb,
через Аякс
К примеру http://jquery-docs.ru/Ajax/jQuery.po...tacallbacktype

alexvb 10.02.2013 09:24

Deff, спасибо огромное!

LOCb 03.04.2013 01:06

Доброго времени суток. Столкнулся с параллельной проблемой.
Есть таблица, в ечейках лежат input`ы. Задача: сделать кнопку, которая добавляет в таблицу строчки. Я сделал так:
function cl()
{

kol++;

document.getElementById('table_element').innerHTML =document.getElementById('table_element').innerHTM L+'<tr><td><!--&nbsp;Производитель--><select class="inp" name="maker'+kol+'" size="1"><option value="Форпост">Форпост</option><option value="Геона">Геона</option></select></td><td><!--&nbsp;Марка--><input class="inp" name="model'+kol+'" type="text" size="10" maxlength="25"/></td><td><!--&nbsp;Раз-р--><input class="inp" name="size'+kol+'" type="text" size="8" maxlength="10"/></td><td><!--Открыв--><select class="inp" name="rl'+kol+'" size="1"><option selected="" value=""></option><option value="Прав">Прав</option><option value="Лев">Лев</option></select></td><td><!--&nbsp; Кол-во--><input class="inp" name="tk'+kol+'" type="text" size="5" maxlength="8" /></td><td><!--&nbsp;Цена--> <input class="inp" name="tz'+kol+'" type="text" size="15" maxlength="20"/></td></tr>';
var i= document.getElementById('num').value;
var a=parseInt(i)+1;
document.getElementById('num').value=new String(a);
}
Проблема в следующем. Юзер заполняет инпуты в строчках, а когда нажимает "добавить строку", то функция перерисовывает таблицу заново и текст в инпутах слетает во всей таблице. В первом посте увидел намёк на решение проблемы, но на скрипте пишу второй день, подскажите по подробнее.


И кстати есть у меня ответ на первый пост. Именно посредством PHP. Из функции выше видно, что инпутам к имени приписывается номер строчки( var kol). Вся таблица находится внутри тэга <form> и после таблицы следует <input id="num" name="kolvo" type="hidden" value="1"/>
Последняя строка функции задаёт в скрытом инпуте количество имеющихся строк. А скрипт обработчик - счётчик от 1 до $_POST[kolvo] c циклом, если надо подробнее - пишите.

danik.js 03.04.2013 01:18

Лось, во-первых, оборачивай код в
[JS]..[/JS]

Во-вторых, твой пример не работает в IE8.
В-третьих смесь js и html в кучу вызывает тошноту и головную боль.
В-четвертых не нужно ни каких kolvo. Если поля именовать как name="field[]" то в php придет массив $_POST['field'].
Делай так: изначально у тебя же есть как минимум одна строка таблицы? Вот и клонируй ее через cloneNode(true). Потом клонируешь клон и добавляешь в таблицу.

LOCb 03.04.2013 01:50

Не суди строго. Второй день JS учу. По поводу IE - я пишу не для широкого пользования, у меня просто есть задача написать небольшую программу с каталогом и генерацией документов, с числом клиентов от 1 до 20. Я не профи и не скоро им стану. В пост уходит всё как надо, это уже проверено, всё работает. В общем, мой вариант астрономически далёк от совершенства, но всётаки он работает. Спасибо за критику, учту замечания.

Кстати о "шедеврах"... ещё одна адовая строчка родилась:
...
cell1.innerHTML='<select class="inp" name="maker'+kol+'" size="1"> <?php include('../../../config/makers.php'); ?></select>';
...

У меня чуть мозг не взорвался когда ЭТО появилось на уме.

danik.js 03.04.2013 02:29

Цитата:

Сообщение от LOCb
У меня чуть мозг не взорвался когда ЭТО появилось на уме.

В /config/ файл выводящий теги <option>? Действительно, уму не постижимо ))

danik.js 03.04.2013 02:39

<table id="mytable">
    <tr>
        <td><input /></td>
        <td><select><option>Бла бла</option></select>
    </tr>
</table>
<button id="mybutton">Еще</button>
<script>
(function(){
    var table = document.getElementById('mytable'),
         tbody = table.tBodies[0];
         button = document.getElementById('mybutton'),
         sample = table.rows[0];
    
    button.onclick = function() {
        tbody.appendChild(sample.cloneNode(true));
    }
})()
</script>

LOCb 03.04.2013 02:52

Цитата:

Сообщение от danik.js (Сообщение 244016)
Если поля именовать как name="field[]" то в php придет массив $_POST['field'].
.

Можно об этом явлении поподробнее? Можно это обойти?

danik.js 03.04.2013 03:08

Цитата:

Сообщение от LOCb
Можно это обойти?

Это простой массив. Не умеешь обходить массивы?
foreach(array('a','b') as $item) {
    echo $item;
}


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