Я начинаю со следующего:
<form action="" method="post" enctype="multipart/form-data" id="form">
<?php foreach($attributes as $attribute){ ?>
<input type="checkbox" name="attribute[][attr_id]" value="<?php echo $attribute['attribute_id']; ?>">
<input type="text" name="attribute[][attr_name]"> value="<?php echo $attribute['attribute_name']; ?>">
<?php } ?>
</form>
Таким образом, каждый атрибут $ имеет флажок и текстовый ввод; всякий раз, когда кто-то проверяет (один или несколько полей) и вставляет текст (только в отмеченные элементы), я хочу получить в БД [attr_id]
и [attr_name]
для конкретного элемента.
Поэтому я продолжаю:
if(isset($_POST['attribute'])){
foreach($_POST['attribute'] as $attribute){
$attr_id = $attribute['attr_id'];
$attr_name = $attribute['attr_name'];
"INSERT INTO " . DB_PREFIX . "attribute_xref SET productid = '" . $productid . "', attribute_id='". $attr_id ."', attribute_name='" . $attr_name . "'";
}
}
Но результат немного отличается от того, что я ожидал. Каждый раз, когда поле проверяется и вводится его ввод текста, их значения отправляются в две разные строки БД:
productid -- attribute_id -- attribute_name
10 -- 102 -- empty
10 -- 0 -- somename
В вышеприведенной второй строке атрибут_id имеет нулевое значение, которое не проверяется.
Я не могу получить всю картину, где моя ошибка.
В заключение. Трудный ответ заключался в том, чтобы добавить идентичный числовой индекс к ассоциативным входам следующим образом:
<form action="" method="post" enctype="multipart/form-data" id="form">
<?php foreach($attributes as $attribute){ ?>
<input type="checkbox" name="attribute[i][attr_id]" value="<?php echo $attribute['attribute_id']; ?>">
<input type="text" name="attribute[i][attr_name]"> value="<?php echo $attribute['attribute_name']; ?>">
<?php } ?>
</form>
где "i" в моем случае будет принимать переменное число из атрибута "attribute_id":
<input type="checkbox" name="attribute[<?php echo $attribute['attribute_id']; ?>][attr_id]" value="<?php echo $attribute['attribute_id']; ?>">
<input type="text" name="attribute[<?php echo $attribute['attribute_id']; ?>][attr_name]"> value="<?php echo $attribute['attribute_name']; ?>">
Надеюсь, мой ответ поможет кому-то и в будущем.