我不是新来的,但这是我第一次在这个网站上寻求帮助。
我有一个非常有趣的问题,我已经在下面的同时循环中呈现了许多动态输入字段
<form class="" action="" method="post">
<div class="form-item-special">
<input class="colorize-button"
type="submit" name="update_all_stock" value="Update All" />
</div>
<table>
<thead>
<tr>
<th>Location ID</th>
<th>Item Number</th>
<th>Name</th>
<th>Description</th>
<th>Storage</th>
<th>Edit Stock</th>
<!-- <th>Delete</th> -->
<th>In Stock</th>
<!-- <th>Adjust</th> -->
</tr>
</thead>
<tbody>
<?php
if(isset($_GET['l_id'])) {
$selected_items_id = $_GET['l_id'];
$query = "SELECT * FROM items WHERE item_location_id = '$selected_items_id'";
$selected_items_result = mysqli_query($connection, $query);
if(!$selected_items_result) {
echo "No items found " . mysqli_error($connection);
} else {
while($row = mysqli_fetch_assoc($selected_items_result)) {
$item_id = $row['item_id'];
$item_location_id = $row['item_location_id'];
$item_number = $row['item_number'];
$item_name = $row['item_name'];
$item_description = $row['item_description'];
$item_storage = strtoupper($row['item_storage']);
$item_inventory = $row['item_inventory'];
echo "<tr>";
echo "<td>$item_location_id</td>";
echo "<td>$item_number</td>";
echo "<td>$item_name</td>";
echo "<td>$item_description</td>";
echo "<td>$item_storage</td>";
echo "<td><a href='users.php?source=edit_stock&i_id=$item_id'>Edit Stock</a></td>";
echo "<td>$item_inventory</td>";
echo "<td><input style='width: 50px;' type='number' name='adjust[][".$item_id."]' value='0' /></td>";
echo "</tr>";
} // end while statement
} // end else statement
} // end $_GET['l_id']
?>
</tbody>
</table>
<!-- <div class="form-item-special">
<input class="colorize-button"
type="submit" name="update_all_stock" value="Update All" />
</div> -->
</form>
我的目标是使用name='adjust[]'动态输入字段更新mysql数据库中的多行。目前有200多个项目更新为表列项目库存。表已存在,列已设置为整数。
(表:项)--(列:item_inventory(接受整数))
这是我得到的↓它目前更新循环中最后一个数组项的所有行。因为我使用(-=$i)向后递增,所以它使用第一个用户输入字段更新所有行。因此,如果我更新输入字段1,例如顶部输入字段的数字,例如数字12,那么所有字段都将更新为12,当它们应该保持不变时,只有第一行应该更新。
此外,所有字段都应该用其相应的输入字段来更新。本质上,简而言之,当按下提交按钮时item_inventory其具有221行将被更新为具有其相应的用户输入,如果不存在用户输入,则该值应保持相同。
以下是更新查询和其余代码...
if(isset($_POST['update_all_stock'])) {
$i = 0;
foreach ($_POST['adjust'] as $key => $value) {
$new_array = $_POST['adjust'];
$value = $new_array[$key -= $i];
$value = implode(",", $value);
$i ++;
}
$update_stock = "UPDATE items SET ";
$update_stock .= "item_inventory = '". $value ."'";
$update_stock_result = mysqli_multi_query($connection, $update_stock);
if(!$update_stock_result) {
echo "FAILED TO UPDATE STOCK ".mysqli_error($connection);
}
}
我已经为此工作了两个多星期,到处寻找答案。请帮忙!!!!
花了一段时间才弄清楚,但答案在这里。我只需要改变Echo
`<td><input style='width: 50px;' type='number' name='adjust[][".$item_id."]' value='0' /></td>";`
为此:
echo "<td><input style=' width: 60px;' type='number' name='subAdjuster[]' value=''/></td>";
echo "<td style='display: none;'><input type='number' name='item_id[]' value='$item_id' /></td>";
在数组中存储值。然后我可以通过这样做来完成多个更新帖子。
然后更新看起来像这样:
if(isset($_POST['update_all'])) {
$adjusters = $_POST['subAdjuster'];
$item_id = $_POST['item_id'];
foreach ($adjusters as $index => $adjuster) {
if(!empty($adjuster)) {
$adjuster = mysqli_real_escape_string($connection, $adjuster);
if($adjuster <= 0) {
$adjuster = 0;
}
$query = "UPDATE items SET item_inventory = item_inventory - '".$adjuster."' WHERE item_id = $item_id[$index]";
$update_result = mysqli_query($connection, $query);
// print_r is to allow you to print the array
// print_r($adjuster."/".$item_id[$index]."<br />");
}
}
祝你在别的地方找到它
循环结束时,$value
中有什么内容?在我看来,它似乎没有指定要更新的项id,因此它使用相同的值更新所有行,这是循环结束时$value
保留的值,因为每次都会覆盖它。
如果调整值不是零,为什么不在循环中运行查询?添加一些echo
语句,查看您的变量有哪些值可以帮助调试。
问题内容: 使用PHP ,我想做一个while循环,该循环读取一个大文件并在请求时发送当前行号。 使用Ajax ,我想获取当前行数并将其打印到页面上。 使用html按钮 ,我希望能够单击并激活或终止仅运行一次并调用 ajax方法 的javascript线程。 我给了它一个镜头,但是由于某种原因,除非我注释掉该函数,否则什么都不会打印,当注释掉它时,它将显示整个循环结果: 已处理1行,已处理2行,已
我试图在一次提交中实现多个更新。我有一个包含许多行的表,并且希望能够通过切换到下一个插入框来更新每行中的一个字段。 我的代码是这样的:-//start a table echo'; 当我打印$\u POST数组时,一切都很好,但是变量为Null。我知道我不能在多个阵列上进行foreach(至少我不认为我可以),那么我还缺少其他技巧吗?我离这里不远了,因为$u Post打印中有正确的数据。 顺便说一
我有mysql数据库。在我的页面上,当我点击一个按钮时,我从数据库中检索数据。所有数据都显示在页面上。我得到一行id、一行名称和一行数字(在输入字段中)。举个例子,我得到: 51 桌子 200 52 头 320 53 玻璃 456个 因为所有值编号(第3行)都在输入字段中,所以可以更改它们。我创建了提交按钮,所以我可以提交更改的值。这是我的js代码: 所以在控制台中,我得到了所有必要的字段。它们为
我想使用Ajax更新数据,下面是示例代码。SweetAlert被移位,因为它已经更新了,但是它在数据库中没有生效,因此它给出了一个错误。 这是在单击submit按钮时提交表单的Ajax脚本。 这段代码用于php服务器端,用于将数据插入数据库。
所以,我的程序中有公司和员工实体。雇员为公司工作,在雇员表中有company_id(外键),我跟踪某些雇员为哪个公司工作。现在,如果我想更新该字段,如何更改公司员工正在工作? 我想更新员工类中的company_id,使用字段int companyId来引用该列,但是它不起作用。在员工服务实施中。类如果我想更新该列(这意味着员工不是为公司工作,或员工更改了公司),我必须调用公司类,这不是我想在员工表
我正在从Sahni的“C语言数据结构基础”中学习数据结构。在使用动态数组的循环队列中,作者提到了以下几点, 假设capacity是循环队列的初始容量,我们必须首先使用realloc增加数组的大小,这将把最大容量元素复制到新的数组中。为了获得正确的循环队列配置,我们必须将右段中的元素(即元素a和B)滑动到数组的右端(参见图3.7.d)。数组加倍和向右滑动一起最多复制2*容量-2个元素。