Я использую библиотеку jquery для добавления динамических элементов формы для отправки данных (для вставки в базу данных MYSQL).
Часть JavaScript, как показано ниже:
<div>
<form method="get" action="testb1.php">
<div id="itemRows">
Item quantity: <input type="text" name="qty[]" size="4" /> Item name: <input type="text" name="name[]" /> <input onclick="addRow(this.form);" type="button" value="Add row" />
</div>
<input type="submit" />
</form>
</div>
<script>
var rowNum = 0;
function addRow(frm) {
rowNum ++;
var row = '<p id="rowNum'+rowNum+'">Item quantity: <input type="text" name="qty[]" size="4" > Item name: <input type="text" name="name[]"> <input type="button" value="Remove" onclick="removeRow('+rowNum+');"></p>';
jQuery('#itemRows').append(row);
frm.add_qty.value = '';
frm.add_name.value = '';
}
function removeRow(rnum) {
jQuery('#rowNum'+rnum).remove();
}
</script>
And the PHP part to test the submitted data:-
<?php$no = count($_GET['qty']);
for ($i=0; $i <$no ; $i++) {
echo $_GET['qty'][$i]."<br>";
echo $_GET['name'][$i]."<br>";
}
?>
До этой части все в порядке. Представленные данные отображаются, как ожидалось.
Но если я хочу отфильтровать отправленные данные, как показано ниже, я получаю один элемент (1-й): —
$gcode = filter_var($_GET['qty'],FILTER_SANITIZE_STRING);
$no = count($gcode);
Кажется проблема с массивом.
Как я мог отфильтровать представленную строку.
Должен ли я фильтровать каждый $_GET['qty'][$i]
по отдельности?
Если вы хотите фильтровать переменные массива, вы должны использовать filter_var_array ().
В вашем случае что-то вроде этого:
$gcode = filter_var_array($_GET['qty'],FILTER_SANITIZE_STRING);
Других решений пока нет …