我正在尝试创建一个表格,您可以在其中注销'填充它的项目。目前,该表看起来很好,但是当你去“注销”时。一个项目 - 它只会作用于最新的mysql行['目录']以及随附的最新文本字段。
当我说'退出'时我的意思是将某人的首字母插入与该项相关联的mysql表行。我首先当然需要正确处理POST提交。
这可能没有完美表达,所以请查看我目前的代码;
echo "<form action='signoff.php' method='post' id='signoffform' style='display:inline;'>";
echo "<p3><table id='myTable3' class='tablesorter'>
<thead>
<tr>
<th>To Delete</th>
<th>Directory</th>
<th>Space Used</th>
</tr>
</thead>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td><input type='text' name='signoff' id='signoff' form='signoffform' /><button>Sign Off</button> Signed Off By:" . $row['signoff'] . "</td>";
echo "<td><input type='text' name='dir' id='dir' form='signoffform' value='" . $row['directory'] . "' readonly /></td>";
echo "<td>" . $row['used'] . "</td>";
echo "</tr>";
}
echo "</table></p3>";
echo "</form>";
signoff.php
<?php
echo $_POST["signoff"];
echo "<br />";
echo $_POST["dir"];
?>
请随时索取更多信息
答案 0 :(得分:1)
...当你去#39;注销&#39;一个项目 - 它只会作用于最新的mysql行[&#39;目录&#39;]以及随附的最新文本字段。
问题在于您的name
属性,name='signoff'
和name=dir
。循环遍历结果集时,name
属性值将在每次迭代中被覆盖。因此,无论您点击什么按钮,您都将获得最后一行的值。
所以解决方案会是这样的:
按以下方式更改while
循环,
// your code
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td><input type='text' name='signoff[".$row['directory']."]' id='signoff' form='signoffform' /><button>Sign Off</button> Signed Off By:" . $row['signoff'] . "</td>";
echo "<td><input type='text' name='dir[".$row['directory']."]' id='dir' form='signoffform' value='" . $row['directory'] . "' readonly /></td>";
echo "<td>" . $row['used'] . "</td>";
echo "</tr>";
}
// your code
在 signoff.php 页面上,按以下方式处理表单,
foreach($_POST['dir'] as $dir){
if(!empty($_POST['signoff'][$dir])){
$signoff = $_POST['signoff'][$dir];
// That how you can get $dir and the corresponing $signoff value
}
}
旁注:如果您想查看整个$_POST
数组结构,请在 signoff.php 页面上执行var_dump($_POST);
。