我在解决嵌套循环时遇到了一些麻烦。我有一个表单,将一系列数据发送到mysql数据库。我使用while函数,它可以正常工作。但现在我对每个条目都有一个checkbox
选项,这就是我的问题。
该复选框应该发送到另一个表,其中包含id,系列ID和每行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++;
}
答案 0 :(得分:0)
根据您的问题,评论以及pasted snippets中提供的信息,我感觉您为每个Lance获得了相同的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
个部分(在this link中给出。)
您可能需要找到一种方法 连接 您的$medida_metiga
数组/键的数字(如0,1,......等)有点像这样:$medida_metiga[$y.$some_number_here]
以便找到匹配的复选框。 但您可能还想重新考虑$medida_metiga
,$medida_metiga0
,$medida_metiga1
方法的命名。
例如,而不是:
$medida_metiga
如果您从以下开始怎么办?
$medida_metiga0
这样您就可以更轻松地遍历数组/键,而无需检查此项目的末尾是否有数字。
如果有机会,最好在PHP中查看如何使用 prepared statements ,除非阻止SQL注入< / em>的。 This other answer 可能会为您提供有关准备好的陈述的一些提示。
虽然 while
循环在技术上可以用于您的目的,但在这种情况下使用for或foreach循环可能是值得的,因为那些类型的循环可以帮助保持代码清洁并提高代码可读性。有关为不同应用程序选择循环的提示,可能值得查看 this other answer 。
您可能已经看过这个,但请确保您的变量名称($elements
或$elementss
?)匹配:
$elements = count($lance);
while ($i < $elementss) { ... }
// ...
$elementss2 = count($checkbox);
while ( $y < $elements2) {