Зацикливание флажков во время другого цикла
У меня возникли проблемы с решением вложенного цикла. У меня есть форма, которая отправляет серию данных в базу данных MySQL. Я использую функцию while, и она работает правильно. Но теперь у меня есть checkbox
вариант для каждой записи, и это моя проблема.
Флажок должен быть отправлен в другую таблицу с идентификатором, идентификатором серии и checkbox
за ряд Но все, что я могу сделать, это повторить ответ из первой серии.
Это то, что я хочу:
Lance 1
Checkbox 1
checkbox 3
checkbox 4
Lance 2
checkbox 2
checkbox 3
Lance 3
checkbox 1
checkbox 2
checkbox 3
This is what I get
Lance 1
Checkbox 1
checkbox 3
checkbox 4
Lance 2
Checkbox 1
checkbox 3
checkbox 4
Lance 3
Checkbox 1
checkbox 3
checkbox 4
Мой код цикла пока что:
$i=0;
$elements = count($lance);
while ($i < $elementss) {
$query = "INSERT INTO
mapa_bordo_lance
(id_mb, lance, data_lance, lat, lon, anzol, isca, hora_lan, hora_rec, ave_capt, mm_uso)
VALUES
('$id_mb', '$lance[$i]', '$data_lance[$i]', '$lat[$i]', '$lon[$i]', '$anzol[$i]', '$isca[$i]', '$hora_lan[$i]', '$hora_rec[$i]',
'$ave_capt[$i]', '$mm_uso[$i]')";
$result = mysql_query($query, $link);
$y = 0;
$elementss2 = count($checkbox);
while ( $y < $elements2) {
$query = "INSERT INTO mapa_bordo_mm (id_mb, lance, mm)
VALUES ('$id_mb', '$lance[$y]', '$medida_metiga[$y]')";
$result = mysql_query($query, $link);
$y++;
}
$i++;
}
1 ответ
О флажках
В соответствии с информацией, представленной в вашем вопросе, комментариями и вставленными фрагментами, у меня такое ощущение, что вы получаете то же самое Checkbox
значения для каждого копья, потому что в этом коде:
$y = 0;
$elementss2 = count($checkbox);
while ( $y < $elements2) {
$query = "INSERT INTO mapa_bordo_mm (id_mb, lance, mm)
VALUES ('$id_mb', '$lance[$y]', '$medida_metiga[$y]')";
$result = mysql_query($query, $link);
$y++;
}
кажется, что $medida_metiga[$y]
часть зовет только то же самое $medida_metiga
(и его элементы массива...) вместо вызова следующего $medida_metiga0
а также $medida_metiga1
части в вашем примере массива (приведенные в этой ссылке.)
Возможно, вам придется найти способ объединить ваши $medida_metiga
массив / ключ с числом (например, 0, 1, ... и т. д.) примерно так:$medida_metiga[$y.$some_number_here]
чтобы найти соответствующие флажки. Но вы также можете переосмыслить наименование для $medida_metiga
, $medida_metiga0
, $medida_metiga1
подход.
Например, вместо:
$medida_metiga
Что делать, если вы начали с:
$medida_metiga0
Это позволит вам более легко перебирать массив / ключи без необходимости проверять, имеет ли этот элемент номер в конце или нет.
О SQL
Когда у вас есть возможность, было бы неплохо проверить, как использовать подготовленные операторы в PHP, если только для того, чтобы предотвратить внедрение SQL. Этот другой ответ может дать вам несколько советов по началу работы с подготовленными утверждениями.
О цикле
В то время как while
Циклы могут технически работать для ваших целей, в этом случае, возможно, стоит использовать циклы for или foreach, так как такие циклы могут помочь сохранить код в чистоте и улучшить читаемость кода. Возможно, стоит взглянуть на этот другой ответ для советов по выбору циклов для различных приложений.
О именовании переменных
Возможно, вы уже видели это, но убедитесь, что ваши имена переменных ($elements
или же $elementss
?) матч:
$elements = count($lance);
while ($i < $elementss) { ... }
// ...
$elementss2 = count($checkbox);
while ( $y < $elements2) {