【发布时间】:2015-10-09 17:18:03
【问题描述】:
我有一个实际上是表格的表格,表格(表格)是动态的,因此表格可以包含 10 到 300 行的任何内容,
表格:
以下是输入表格的代码:
include("x.xxx");
$cxn = mysqli_connect($host,$user,$password,$dbname);
$query = "SELECT * FROM `inspjc` ORDER BY `scaffreq_id`";
$result = mysqli_query($cxn,$query)
or die ("Couldn't execute query.");
echo "<table align='center'><br>
<tr bgcolor='#8DB4E3'>
<th>X</th>
<th>Scaffold Req No</th>
<th>Elevation</th>
<th class='vertical'>Foundations</th>
<th class='vertical'>Ledgers</th>
<th class='vertical'>Face Brace</th>
<th class='vertical'>Plan Brace</th>
<th class='vertical'>Platforms</th>
<th class='vertical'>Mobiles</th>
<th class='vertical'>Uprights</th>
<th class='vertical'>Transoms</th>
<th class='vertical'>Transverse Braces</th>
<th class='vertical'>Ties</th>
<th class='vertical'>Safe Access</th>
<th class='vertical'>Signs</th>
<th>If Not Inspected<br>Supply a Reason</th>
</tr>";
while($row = mysqli_fetch_assoc($result))
{
extract($row);
echo "<tr>\n
<td><input type='checkbox' checked='checked' name='scaffreq_id[]' value='$scaffreq_id' /></td>\n
<td><center>$scaffreq_id</center></td>\n
<td><center>$level m</center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp1[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp2[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp3[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp4[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp5[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp6[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp7[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp8[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp9[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp10[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp11[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp12[]' value='y' /></center></td>\n
<td><center><p><input type='text' name='insp_reason[]' maxlength='255' size='45' value='$insp_reason'></p></center></td>\n
</tr>\n";
}
echo "</table><br>";
?>
所需的输出如下所示(简化):
x ID a b c d e f g
---------------------------------------------------
1 365 1 1 0 0 0 1 North Bay
1 211 1 0 1 1 1 1 South Bay
0 237 0 1 1 1 1 0 Boiler
x 表示 type='checkbox' 的输入类型,ID 表示其 ID 键。 提交时,我想将数据写入数据库。
我尝试了一些循环选项,但我需要循环从 php 运行而不是循环通过我的查询(这需要很长时间),尤其是选择了 300 行。
php代码的基本开销:
$ID = $_POST[ID];
$a = $_POST[a];
$b = $_POST[b];
$c = $_POST[c];
$d = $_POST[d];
$e = $_POST[e];
$f = $_POST[f];
$g = $_POST[g];
$userData = array();
foreach ($ID as $newid)
{
$userData[] = "('" . $newid['ID'] . "',
'" . $newid['a'] . "',
'" . $newid['b'] . "',
'" . $newid['c'] . "',
'" . $newid['d'] . "',
'" . $newid['e'] . "',
'" . $newid['f'] . "',
'" . $newid['g'] . "')";
}
$query = "INSERT INTO `inspect` (`ID`,`a`,`b`,`c`,`d`,`e`,`f`,`g`) VALUES ";
$query .= implode(',',$userData);
但是,回显查询只会给我 "('0',0','0','0','0','0','0','0'),('0 '..." 但数据的数量(在括号内)作为选定的 ID 字段。
【问题讨论】:
-
不应该是
$_POST['ID']而不是$_POST[ID]。此外,您的代码很奇怪,您将值分配给单独的变量,然后似乎期望它们立即出现在数组中。 -
@Osuwariboy 它不应该有所作为,两者都应该工作。尽管如此,我已经回显了每个 $_POST,它们都包含正确的数据...
-
好的,所以
$newid实际上是一个包含a、b、c、d...等的数组。这在您的代码中并没有立即明确。不过,为什么要在循环之前分配值而不使用变量? -
foreach ($ID as $key => $newid) { $userData[] = "('" . $newid . "', '" . $a[$key] . $b[$key].... -
@splash58,您提供的循环有助于显示每一行的实际 id,但无论选择什么,所有 a-g 都设置为 1...
标签: php mysql arrays multidimensional-array