Я не уверен, какой бэкэнд вы используете, но лучший способ хранить данные в базе данных - это не объединять несколько типов данных в одном поле, а использовать числовые идентификаторы вместо текстовыхидентификаторы.Вы можете создать таблицу типа:
id name price
----------------------------------
1 Item 19.99
2 Item 1 0
3 Item 2 24.99
4 Item 3 0
5 Item 4 0
Обратите внимание, что мой пример показывает "0", где цена не была введена.Это потому, что вы, вероятно, захотите, чтобы столбец цен был сохранен в виде десятичного числа (с двумя десятичными разрядами), в результате чего пустое значение будет иметь значение по умолчанию «0».Это нормально.Ваш пользовательский интерфейс не должен отображать «0».
Затем, когда вы извлекаете данные из базы данных, вы можете получить такой массив:
Array(
[0] => Array
(
[id] => 1
[name] => Item
[price] => 19.99
)
[1] => Array
[id] => 2
[name] => Item 1
[price] => 0
)
)
and so on...
тогда вы можете отобразить значения в вашем .php, как показано ниже:
<?php
foreach ($data as $row) {
explode($row);
if ($price > 0) {
$checked = 'checked="checked"';
} else {
$checked = '';
$price = '';
}
$pattern = '<input type="checkbox" name="categories[%s]" value="1" %s> '
. '%s <input type="text" name="prices[%s]" value="%s">';
echo sprintf($pattern, $id, $checked, $name, $id, $price);
}
?>
Затем при получении ввода формы, вы хотите, чтобы переменные были $_POST['categories']
и $_POST['prices']
.