Вы должны назвать свои текстовые поля правильно с помощью кронштейнов []
, чтобы сформировать массив, а затем петлю через ваш массив POST'ed в вставьте данные. Убедитесь, что вы избегаете данных перед запуском запроса, используя mysql_real_escape_string
или подготовленные запросы.
EDIT: Обновление примеров, потому что 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);
}
}
}
?>
В условия производительности было бы лучше сделать одну вставку с несколькими значениями одновременно. – thedom
Производительность действительно не проблема: P –
Привет, извините, я отредактировал мой OP. – Brian