2016-04-07 5 views
0

Я генерирую таблицу из инструкции SQL Select, но также добавляя флажок в каждой строке, чтобы можно было выбирать строки, но я не могу разобраться, как проходить через каждую строку эта сгенерированная таблица, чтобы убедиться, что флажок установлен.Доступ к данным таблицы HTML в PHP

Возможно ли это?

Я знаю, как создать таблицу, заполнить ее и как проверить кнопку, я просто не могу решить, как получить доступ к ячейке, в которой кнопка находится в каждой строке.

Я не могу создать каждый флажок по отдельности они созданы вместе с таблицей, когда цикл по строкам моего SQL SELECT

+0

И что вы пробовали? –

+1

Это зависит от того, как организованы данные. Кнопки радиосвязи сконструированы таким образом, что пользователь может выбрать только один, поэтому вы просто выбираете, какой из них выбран. Если вам нужно несколько вариантов, вы можете использовать флажки, связывать их вместе как массив, добавляя '[]' в конец имени и значение в качестве идентификатора, а затем заходите через '$ _POST ['checkbox_name']'. –

ответ

0

Если вы хотите использовать радио кнопки соединить входы вместе с массив, добавив [] после имени. то есть <input type="radio" name="foo[]" /> Затем вы можете получить доступ к массиву с помощью цикла foreach.

Если вы хотите использовать чек -Box дать им все то же имя, и с [] в массиве, и каждый другой value атрибут. то есть <input type="checkbox" name="foo" value="1" /> Вы можете получить доступ к значениям с помощью цикла foreach.

(В обоих случаях вам необходимо значение по умолчанию в качестве скрытого ввода перед каждой кнопки радио. В противном случае ваш массив нельзя использовать в качестве PHP читает только выбранные радио кнопки.)

+0

Похоже, я должен использовать флажок, я забыл, что вы можете выбрать только один переключатель. Проблема, которая у меня есть, заключается в том, что таблица только генерируется при циклировании строк из моей инструкции SELECT, поэтому я не могу индивидуально создавать флажки. – DSTL

+0

Вы можете добавить счетчик, который добавляет 1 к каждой итерации. Или используйте значение из вашей строки SQL в качестве значения. – MartijnICU

+0

Это имеет смысл, я могу прирастить переменную каждый раз, когда она продолжает генерировать новую строку. Я не уверен, как использовать цикл foreach для доступа к значениям? – DSTL

0

Во-первых, я признаю это ISN Лучше всего это сделать, но проблема будет решена.
Во-вторых, я предлагаю вам изменить элемент ввода HTML на type="checkbox". Для того, чтобы иметь возможность знать, какие были проверены, вы должны настроить свой код, чтобы выглядеть, как показано ниже:

<!-- HTML part --> 
<form action="" method="post"> 
    <!-- we need the form as the parent to the table so content can be posted to the server --> 
    <table ....> 
     <thead> 
      <tr> 
       <th>&nbsp</th> <!-- we'll put our checkboxes in this column of the table --> 
       ... 
      </tr> 
     </thead> 
     <tbody> 
      <?php 
       foreach ($rows as $row) { 
      ?> 
      <tr> 
       <td><input type="checkbox" name="chkSelect[]" value="<?php echo $row['id']; ?>" /></td> 
       .... 
      </tr> 
      <?php 
       } 
      ?> 
     </tbody> 
    </table> 
    <button type="submit" name="btnDelete" value="">Delete</button> <!-- This is assuming we're trying to delete the selected items --> 
</form> 
<!-- HTML end --> 

На данный момент, у нас есть наша форма готова; обратите внимание, что после этого флажка имеет [], что позволяет обрабатывать его как массив на стороне PHP.
На стороне PHP, вы просто должны сделать свою нормальную обработку формы следующим образом:

if (filter_has_var(INPUT_POST, 'btnDelete')) { 
    $checkedIds = filter_input(INPUT_POST, 'chkSelect', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); 
    // if we loop through the array, we can see the selected item ids 
    var_dump($checkedIds); 
} 

Надеется, что это ответ на ваш вопрос, счастливого кодирование! ;)

+0

Спасибо, что выяснили некоторые из моих вопросов.Я немного незнакома с тем, как вы обрабатываете свою форму. Насколько я знаю, filter_has_var похож на isset? Что делает filter_input? Спасибо :) – DSTL

+0

@fesil 'filter_has_var' проверяет, существует ли переменная [действительно массив] с этим именем в указанном суперглобальном. 'filter_input' является предпочтительным способом доступа к суперглобалам сейчас, а не к выполнению' $ checkedIds = $ _POST ['chkSelect']; '. Другими параметрами, которые я предоставил для 'filter_input', было то, что я мог получить значение как массив, а не простой тип. Вы можете узнать больше о 'filter_input' здесь - http://php.net/manual/en/function.filter-input.php –

+0

Я только что вернулся к этому. Хорошо, я все это получаю, но я не уверен, куда я пойду отсюда. Как только я зациклился на таблице, я хочу добавить идентификаторы, которые были выбраны для массива, которые затем я могу сохранить в базе данных. is $ checkedInd массив здесь? – DSTL

Смежные вопросы