Вам нужно правильно назвать свои текстовые поля, используя скобки []
, чтобы сформировать массив, а затем перебрать массив POST для вставки данных.Перед выполнением запроса убедитесь, что вы экранировали данные, используя mysql_real_escape_string
или подготовленные запросы.
РЕДАКТИРОВАТЬ: Обновление примеров, поскольку OP добавила информацию к вопросу.
В расширенном примере, который вы предоставили, похоже, что у taste
есть только несколько вариантов.В этом случае я бы использовал элемент <select>
над текстовым полем.Посмотрите мои примеры того, как лично я бы это сделал.
Форма
Заметные изменения: Используя простой цикл в PHP, вы можете указать количество полей, которое вы хотитепоказать и легко добавить другие варианты в поле выбора вкуса.Я помещаю произвольное число в []
, чтобы убедиться, что мы связываем фрукт со вкусом при обработке формы.
<?php
$n = 5; //Number of fields to show
$tastes = array('Great', 'Good', 'Okay', 'Bad', 'Horrible');
for($i=0;$i<$n;$i++) {
echo '<p>';
echo '<input type="text" name="fruit['.$i.']" /> ';
echo '<select name="taste['.$i.']">';
foreach($tastes as $t) {
echo '<option value="'.htmlentities($t).'">'.$t.'</option>';
}
echo '</select>';
echo '</p>';
}
echo '<input type="submit" name="submit" value="Submit" />';
?>
Код процесса
Заметные измененияЯ проверяю, чтобы фрукт имел значение, иначе он не будет вставлен.Я использую это произвольное значение (которое является ключом массива $k
), чтобы выбрать вкус, соответствующий фрукту.
<?php
if($_POST['submit']) {
foreach($_POST['fruit'] as $k => $v) {
if(!empty($v)) {
$query = "INSERT INTO fruits (fruit, taste) VALUE ('".mysql_real_escape_string($v)."', '".mysql_real_escape_string($_POST['taste'][$k])."')";
mysql_query($query);
}
}
}
?>