У меня есть такая форма:
Я действительно запутался, как все это сделать в базе данных. У меня такой код:
echo "<form action='insert.php'>"; $data = array("rice","fish","pizza","other"); for($i=1; $i<5; $i++){ echo "<input type='text' name='food[]' value='$i' class='food'><label>$data[$i]</label>"; } echo "<input type='submit' value='ok'>"; echo "</form>"; <script> $(".food").change(function () { if (this.checked && this.value=='4') { $(this).next("label").after("<p id='other-text'><input placeholder='please enter food' type='text' name='otherfood[]' /></p>") } else { $("#other-text").remove(); } }); </script>
база данных:
order id id_food other ---------------------- 1 4 soup
Можете ли вы мне помочь, как все это сделать в тактике базы данных?
order id id_food other ---------------------- 1 4 soup
Я не думаю, что это хорошая идея для хранения данных. Если вам действительно нужно хранить id_food = 4
(который относится к 'other'
) вместе с 'soup'
, я предлагаю настроить таблицу поиска продуктов следующим образом:
food id name is_other ---------------------- 1 pizza 0 5 soup 1
И изменив таблицу заказов следующим образом
order id id_food other_id ---------------------- 1 4 5
Таким образом, вы можете сохранить целостность данных и поддерживать оптимальный размер таблицы, проверяя, существует ли текст в other textbox
в таблице food
и если он выбирает id_food
и вставляет food_id
в таблицу order
.
И вы можете по-прежнему фильтровать флажки со следующим условием, если вы не хотите, чтобы введенные вручную data
были видимыми в форме
select id,name from food where is_other = 0
Или
Поскольку у вас теперь есть soup
данных в таблице food
, вы можете перечислить его вместе с другими вариантами питания в качестве checkbox
.
Это один из вариантов, есть разные подходы, которые, я уверен, будут предоставлены другими пользователями.