【发布时间】:2017-10-25 07:55:26
【问题描述】:
我正在尝试从 while 循环中编辑一行,其中每一行的末尾都有编辑图标。当我单击编辑时,模态表单正在正确填充我选择的行。但是当我保存表单时,它只更新第一行。我什至将 $id 放在模态表单中,但从模态表单推送到 jquery 的数据是第一行。请参阅我的以下代码。
调用模态表单:
<img data-toggle="modal" data-target="#modalFormEdit<?php echo $row['die_id']; ?>" src=images/edit.png height='20' width='20' border=0>
我的模态表单:
<div class="modal fade" id="modalFormEdit<?php echo $row['die_id']; ?>" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
<span class="sr-only">Close</span>
</button>
<h1 class="modal-title" id="myModalLabel">Edit Die</h1>
</div>
<!-- Modal Body -->
<div class="modal-body">
<p class="statusMsg"></p>
<form role="form">
<?php
$sql = "SELECT * FROM tbl_dies WHERE die_id = '".$row['die_id']."';";
$result = mysqli_query($db, $sql) or die("database error:". mysqli_error($db));
$row = mysqli_fetch_assoc($result);
$die_id = $row['die_id'];
?>
<div class="form-group">
<label for="editDie1ID1">Die ID (<?php echo $count; ?>)</label>
<input type="text" class="form-control" id="editDieID" name="editDieID" value="<?php echo $die_id; ?>""/>
</div>
<div class="form-group">
<label for="editDieDesc">Edit Die Description</label>
<input type="text" class="form-control" id="editDieDesc" name="editDieDesc" value="<?php echo $row["tbl_dies_desc"]; ?>"/>
</div>
<div class="form-group">
<label for="editCustomer">Edit Customer</label>
<select class="form-control" name="editCustomer" id="editCustomer" />
<option value="<?php echo $row["customer_id"]; ?>"><?php echo $row["customer_id"]; ?></option>
<?php
$queryShapes = "SELECT * FROM tbl_client_name ORDER BY Client_Name_DESC ASC";
$result = mysqli_query($db, $queryShapes);
if( ! $result ) {
echo mysql_error();
exit;
}
while ($row=mysqli_fetch_array($result)) {
echo '<option value="' . $row['Client_Name_DESC'] . '">' . $row['Client_Name_DESC'] . '</option>';
}
?>
</select>
</div>
</form>
</div>
<!-- Modal Footer -->
<div class="modal-footer">
<br><br>
<button type="button" class="btn btn-default" data-dismiss="modal" onclick="history.go(0)">Close</button>
<button type="button" class="btn btn-primary submitBtn" onclick="submitEditDie()">UPDATE</button>
</div>
</div>
</div>
</div>
我的查询:
<script>
function submitEditDie(){
var editDieID = $('#editDieID').val();
var editDieDesc = $('#editDieDesc').val();
//noinspection JSJQueryEfficiency
var editCustomer = $('#editCustomer').val();
if(editDieDesc.trim() == '' ){
alert('Please enter your die description.');
$('#editDieDesc').focus();
return false;
}else if(editCustomer.trim() == '' ){
alert('Please select customer.');
$('#editCustomer').focus();
return false;
}else{
$.ajax({
type:'POST',
url:'submit_edit_die.php',
data:'contactFormEdit=1&editDieDesc='+editDieDesc+'&editCustomer='+editCustomer+'&DieID='+editDieID,
beforeSend: function () {
$('.submitBtn').attr("disabled","disabled");
$('.modal-body').css('opacity', '.5');
},
success:function(msg){
if(msg == 'ok'){
$('#editDieDesc').val('');
$('#editCustomer').val('');
$('#editDieID').val('');
$('.statusMsg').html('<span style="color:green;">Entry successfully edited! Please close the form.</p>');
}else{
$('.statusMsg').html('<span style="color:red;">Some problem occurred, please try again. </span>');
}
$('.submitBtn').removeAttr("disabled");
$('.modal-body').css('opacity', '');
}
});
}
}
</script>
我的 PHP:
<?php
if(isset($_POST['contactFormEdit']) && !empty($_POST['editDieDesc'])) {
$editdiedesc = $_POST['editDieDesc'];
$editcustomer = $_POST['editCustomer'];
$editdieid = $_POST['DieID'];
$link = mysqli_connect("localhost", "root", "", "db");
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$sql = "UPDATE tbl_dies SET `customer_id`='$editcustomer', `tbl_dies_added_date`=CURRENT_TIMESTAMP, `tbl_dies_desc`='$editdiedesc', `tbl_dies_added_by`='55' WHERE `die_id`='$editdieid'";
if(mysqli_query($link, $sql)){
$status = 'ok';
} else{
$status = 'err';
}
echo $status;die;
mysqli_close($link);
}
?>
【问题讨论】:
-
您确定每个模态表单都获得不同的 DieId 吗?
-
看起来您正在使用
$row(和$result)在 1 个循环内表示 3 组不同的数据。首先,我假设是生成行的主循环。然后,在该循环中,您执行一个新查询SELECT * FROM tbl_dies ...并用新的东西覆盖现有的$row(和$result)。然后另一个查询SELECT * FROM tbl_client_name ...再次使用$row(和$result)。这些查询中的每一个都将覆盖这些变量中的先前值,因此当外部循环再次迭代时,原始数据就消失了。这肯定会把事情搞砸。 -
是的。你是对的。我有 3 组不同的数据。我更改了他们的 $row 名称,甚至更改了 $result。但仍然是同样的问题。无论如何感谢您的回复。我真的很感激。
-
@DhavalChheda,是的。我对每个模式都有不同的字段。
标签: php jquery modal-dialog row edit