Получить значения в тд, когда флажок отмечен

0

У меня есть запрос, который получает адреса от людей. Данные представлены в таблице:

echo "<div id='rightcontent'><table id='one-column-emphasis'>";
echo "<th><input type='checkbox' name='csv_all' id='csv_all'></th><th>Namn</th><th>Adress</th><th>Adress2</th><th>Adress3</th><th>Personnummer</th><th>Telefonnummer</th><th>Telefonnummer2</th>";
$antal_sidor = round($obj->search->wp->totalHits / $obj->search->wp->pageSize); 

foreach($obj->search->wp->features as $fish) //Loopar ut 50st (pageSize)
{
    echo "<tr>";
    echo "<td><input type='checkbox' value='csv' class='csv'></td>";
    echo "<td>" . $fish->name . "</td>";
    foreach($fish->addresses as $ad)
    {
        echo "<td>" . $ad->label . " " . $ad->postcode . " " . $ad->area . "</td>";
    }   
    if(!empty($fish->dateOfBirth))
    {
        echo "<td>" . $fish->dateOfBirth . "</td>";
    }   
    if(!empty($fish->phoneNumbers))
    {
        foreach($fish->phoneNumbers as $ph)
        {
            echo "<td>" . $ph . "</td>";
        }
    }       

    echo "</tr>";
}
echo "</table>";

Как вы можете видеть, в строках указано поле флажка. Цель состоит в том, чтобы отметить все чекбокс, а затем экспортировать адреса в CSV. Но как мне получить значения, адреса, tds, когда я выбираю все флажки?

  • 0
    Возможный дубликат Как получить значение флажка в php?
  • 0
    @AmalMurali: В этом случае я не хочу получать значение из отмеченного флажка?
Показать ещё 4 комментария
Теги:
checkbox

2 ответа

0
Лучший ответ

Не указав детали, хотите ли вы сделать эту клиентскую часть в javascript или серверной стороне с PHP при отправке формы? Для серверной стороны вам нужно добавить имя в свои флажки, и это поле будет отправлено вместе с его значением в PHP. Для клиентской стороны вы можете сначала вставить данные в DOM, затем использовать jQuery для поиска проверочных входов и получения данных.

foreach($obj->search->wp->features as $fish) //Loopar ut 50st (pageSize)
{
    echo "<tr data-phone-numbers='" . json_encode($fish->phoneNumbers) . "' data-addresses='" . json_encode($fish->addresses) . "'>";
    echo "<td><input type='checkbox' value='csv' class='csv'></td>";
    echo "<td>" . $fish->name . "</td>";
...

Затем с помощью jQuery просто соберите проверенные входы и найдите закодированные адреса:

var addressList = [];
$("input[type='checkbox']:checked").each(function(){
    addressList.push({
        "phones": JSON.parse($(this).closest("tr").data("addresses")),
        "addresses": JSON.parse($(this).closest("tr").data("phone-numbers"))
    });
});
//addressList now is an array phones and addresses objects for all the checked items

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

  • 0
    Как я могу получить номера телефонов от тдс? Не только адреса?
  • 0
    Зависит от того, как вы хотите, чтобы данные отображались в конце, но вы можете добавить больше полей данных рядом с адресами данных в TR. Обновлю ответ.
Показать ещё 1 комментарий
0

Вот полностью функциональная версия, которая создает CVS из проверенных строк и добавляет, что принимает JSON из PHP вместо отправки таблицы через сеть

Live Demo

$("#csv_all").on("click", function () {
    $(".csv").prop("checked", this.checked);
});
$("#makeCsv").on("click", function () {
    var csv = [];
    $(".csv:checked").each(function () {
        var row = [];
        $(this).parent().siblings().each(function () { // all TDs
            row.push('"' + $(this).text() + '"');
        });
        if (row.length > 0) csv.push(row.join(","));
    });
    $("#csv").val(csv.length > 0?csv.join("\n"):"");

});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню