我创建了一个编辑页面,通过运行while循环显示以前添加的数据。
这些数据采用表格格式和输入字段。现在,我想给每条记录提供更新查询。重置数据后,我在SQL中的每一行都获得相同的值。
任何人都可以为我提供获取每行更新的解决方案。
这是我的代码
<form action="edit_item.php" method="post">
<h3> Add New Item</h3>
<div class="vali-form">
<input type="hidden" name="i_id" value="<?php echo $i_id; ?>" placeholder="Enter item no." required="">
<div class="col-md-6 form-group1 form-last">
<label class="control-label">Item No.</label>
<input type="text" name="i_no" value="<?php echo $i_no ?>" placeholder="Enter item no." required="" readonly>
</div>
<div class="col-md-6 form-group1 form-last">
<label class="control-label">Item Name.</label>
<input type="text" name="i_name" value="<?php echo $i_name ?>" placeholder="Enter item name" required="">
</div>
<div class="clearfix"> </div>
</div>
<div class="col-md-12 form-group1 form-last">
<div class="table-responsive">
<table ID="tblPets" class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th><center>Row material Name</center></th>
<th><center>Description</center></th>
<th><center>Qty.</center></th>
<th><center>Rate</center></th>
<th><center><INPUT TYPE="Button" onClick="addRow('tblPets')" VALUE="Add Row"></center></th>
</tr>
</thead>
<?php while($row1=mysqli_fetch_array($run1))//while look to fetch the result and store in a array $row.
{
$r_id=$row1[0];
$r_item_id=$row1[2];
$r_name=$row1[3];
$r_qty=$row1[4];
$r_rate=$row1[5];
?>
<tbody>
<tr>
<th><INPUT TYPE="text" NAME="r_name[]" value="<?php echo $r_name ?>" PLACEHOLDER="Name"></th>
<th><INPUT TYPE="text" NAME="r_desc[]" value="" PLACEHOLDER="description" ></th>
<th><INPUT TYPE="text" NAME="r_qty[]" value="<?php echo $r_qty ?>" PLACEHOLDER="QTY" ONINPUT="calculate()" ></th>
<th><INPUT TYPE="text" NAME="r_RATE[]" value="<?php echo $r_rate ?>" PLACEHOLDER="rate" ONINPUT="calculate()"></th>
<th></th>
</tr>
</tbody>
<?php } ?>
</table>
</div></div>
<div class="vali-form">
<div class="col-md-6 form-group1 form-last">
<label class="control-label">Qty.</label>
<input type="text" name="i_qty" value="<?php echo $i_qty ?>" placeholder="Enter Qty" required="">
</div>
<div class="col-md-6 form-group1 form-last">
<label class="control-label">Rate.</label>
<input type="text" name="i_rate" value="<?php echo $i_rate ?>" placeholder="Enter rate" required="">
</div>
<div class="clearfix"> </div>
</div>
<div class="col-md-12 form-group">
<button type="submit" name="Reset" class="btn btn-primary">Reset</button>
</div>
<div class="clearfix"> </div>
</div>
</form>
这里是更新的mysql查询
if(isset($_POST['Reset'])){
$item_id=$_POST['i_id'];
$item_no=$_POST['i_no'];
$item_name=$_POST['i_name'];
$item_qty=$_POST['i_qty'];
$item_rate=$_POST['i_rate'];
$update_item="UPDATE tbl_item_mstr SET itm_name='$item_name', itm_qty='$item_qty', itm_rate='$item_rate' WHERE itm_id='$item_id' ";
$q1=mysqli_query($dbcon,$update_item);
if($q1)
{
//header('Location: ../item_master.php');
}
if (!empty($_POST['r_name']) && !empty($_POST['r_qty']) && !empty($_POST['r_RATE']) && is_array($_POST['r_name']) && is_array($_POST['r_qty']) && is_array($_POST['r_RATE']) && count($_POST['r_name']) === count($_POST['r_qty'])) {
$user = $_SESSION['email'];
$name_array = $_POST['r_name'];
$qty_array = $_POST['r_qty'];
$rate_array = $_POST['r_RATE'];
for ($i = 0; $i < count($name_array); $i++) {
$name = mysql_real_escape_string($name_array[$i]);
$qty = mysql_real_escape_string($qty_array[$i]);
$rate = mysql_real_escape_string($rate_array[$i]);
$update_item="UPDATE tbl_row_material SET rm_user_id='$user', rm_name='$name', rm_qty='$qty', rm_rate='$rate' WHERE rm_item_id='$item_no' ";
$r=mysqli_query($dbcon,$update_item);
if(mysqli_query($dbcon,$update_item))
{
header('Location: ../item_master.php');
}
}
}
答案 0 :(得分:1)
你可以尝试在每个字段中传递记录ID,如
<input type="text" name="first<?php echo $id?>">
像这样,然后根据其名称中的id更新每个字段。
如果这有用,请尝试告诉我。
答案 1 :(得分:0)
您的HTML结构旨在添加新的表行,但您的SQL查询使用UPDATE
语句。
在你的表单中只有一个产品ID和一些属性(“行材料”):你传递 - 正确地,我想 - 只有产品id到php代码,但这样,执行查询
UPDATE tbl_row_material SET (...) WHERE rm_item_id='$item_no'
您在每个循环中更新所有行rm_item_id='$item_no'
或 - 如果rm_item_id
的值不存在于数据库中 - 您什么都不更新。
您必须使用INSERT
查询:
INSERT INTO tbl_row_material
(rm_user_id, rm_name, rm_qty, rm_rate, rm_item_id)
VALUES ('$user', '$name', '$qty', '$rate', '$item_no');
上面的查询只是一个示例(我不知道您的表格结构):如果rm_item_id
是材料ID,请将其字段名称替换为相应的字段名称(项目ID)。
如果您的目的是更新现有行,则必须使用带有“行材料”ID的UPDATE
查询,而不是产品ID。
答案 2 :(得分:0)
我找到了同时更新多行的解决方案
<?php while($row1=mysqli_fetch_array($run1))//while look to fetch the result and store in a array $row.
{
$r_id=$row1[0];
$r_item_id=$row1[2];
$r_name=$row1[3];
$r_qty=$row1[4];
$r_rate=$row1[5];
?>
<tbody>
<tr>
<INPUT TYPE="hidden" NAME="r_id[]" value="<?php echo $r_id ?>" PLACEHOLDER="Name" >
<th><INPUT TYPE="text" NAME="r_name[]" value="<?php echo $r_name ?>" PLACEHOLDER="Name"></th>
<th><INPUT TYPE="text" NAME="r_desc[]" value="" PLACEHOLDER="description"></th>
<th><INPUT TYPE="text" NAME="r_qty[]" value="<?php echo $r_qty ?>" PLACEHOLDER="QTY" ONINPUT="calculate()"></th>
<th><INPUT TYPE="text" NAME="r_RATE[]" value="<?php echo $r_rate ?>" PLACEHOLDER="rate" ONINPUT="calculate()"></th>
<th></th>
</tr>
</tbody>
<?php } ?>
这里的SQL查询
$idCount = count($_POST["r_id"]);
for($i=0;$i<$idCount;$i++) {
$r=mysqli_query($dbcon,"UPDATE tbl_row_material set rm_user_id='" . $_SESSION['email'][$i] . "', rm_name='" . $_POST['r_name'][$i] . "', rm_qty='" . $_POST['r_qty'][$i] . "', rm_rate='" . $_POST['r_RATE'][$i] . "' WHERE rm_item_id='" . $_POST['i_no']. "' AND rm_id='". $_POST['r_id'][$i]."'");
echo $r;
}
if($r){
header('Location: ../item_master.php');
}