将其他行插入数组并输入到数据库中
Insert additional rows into array and input in to database
希望这是有意义的,如果有人能帮忙,请提前感谢!
我在表中显示了一组数据,我可以编辑数据,然后用编辑后的数据更新我的数据库。
<input type='button' value='new row' id='save' onClick="addRow()"/>
<table id='mech_table'>
<tr>
<td></td>
<td></td>
<td><input type='text' size='30' name='value_total'id='mech_value_total' value='£0.00' readonly='readonly'/></td>
<td></td>
<td><input type='text' size='30' name='value_claim' id='mech_claim_total' value='£<?php echo $row_MECHT['mech_total']; ?>' readonly='readonly'/></td>
</tr><tr>
<th>ID</th>
<th>Description</th>
<th>Value</th>
<th>%</th>
<th>Claim</th>
</tr>
<?php while ($MECH = mysql_fetch_array($result)) {
?>
<form name='form_update' method='post' action="<?php echo $editFormAction; ?>">
<tr>
<td><?php echo $MECH['id']; ?><input type='hidden' name='id[]' value='<?php echo $MECH['id'];?>' /></td>
<td class='description_row'><input type='text' size='70' name='description[]' value='<?php echo $MECH['description'];?>' /></td>
<td class='value_row'><input class='mech_value_total' type='text' size='30' name='value[]' value='<?php echo $MECH['value'];?>' /></td>
<td class='percent_row'><input class='percent' type='text' size='10' name='percentclaim[]' value='<?php echo $MECH['percentclaim'];?>' /></td>
<td class='claim_row'><input class='mech_claim_total' type='text' size='30' name='claim[]' value='<?php echo $MECH['claim'] ?>' readonly='readonly'/></td>
</tr>
<?php ++$ia;
}
?>
</table>
<input type='submit' value='save' id='save' /><br /><br /><br />
</form>
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
$size = count($_POST['id']);
$i = 0;
while($i<$size){
$description= $_POST['description'][$i];
$value= $_POST['value'][$i];
$percentclaim= $_POST['percentclaim'][$i];
$claim= $_POST['claim'][$i];
$id = $_POST['id'][$i];
$query = "INSERT INTO applicationmech
SET id='$id',
description='$description',
value='$value',
percentclaim='$percentclaim',
claim='$claim'
ON DUPLICATE KEY UPDATE description='$description',
value='$value',
percentclaim='$percentclaim',
claim='$claim'";
mysql_query($query) or die ("Error in query: $query");
$updateGoTo = "preditvaluation.php";
if (isset($_SERVER['QUERY_STRING'])) {
$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $updateGoTo));
++$i;
}
我用javascript创建了一个简单的按钮,它允许我向表中添加额外的行。
function addRow() {
$('#mech_table tr:last').after('<tr><td><input type="hidden" name="id[]" value="" /></td><td class="description_row"><input type="text" size="70" name="description[]" value="" /></td><td class="value_row"><input class="mech_value_total" type="text" size="30" name="value[]" value="" /></td><td class="percent_row"><input class="percent" type="text" size="10" name="percentclaim[]" value="" /></td><td class="claim_row"><input class="mech_claim_total" type="text" size="30" name="claim[]" value="" readonly="readonly"/></td></tr>');
}
我的问题是,当我单击更新按钮时,新行中的数据不会保存。
我一直在尝试许多不同的方法以及如何使其发挥作用,但每次都失败了。
新行中的数据将没有id值,因此数据库将无法在update操作中更新该行。您需要服务器端代码来执行以下操作:
$newids = array();
if (!empty($row->id)) {
$DB->update('tablename', $data);
} else {
$newid = $DB->insert('tablename', $data);
$newids[] = $newid;
}
// Now send the new ids back to the browser so that they can be put into those rows
// and an update operation will be performed next time
echo json_encode($ids);
在浏览器端,类似于:
var ids = jQuery.parseJSON(dataFromAjax);
var inputsNeedingIds = $('input:inputclass').filter(
function() {
return ($(this).val() == "") && ($(this).attr('name') == 'id[]'); });
inputsNeedingIds.each(
function(i) {
this.id.value = ids[i];});
这里唯一有问题的是,添加addRow()函数补充的新表单元素没有正确更新DOM。表单是用开始时显示的表单元素进行子提交的。
只有当您使用Ajax提交时,这才有可能。最简单的方法是http://jquery.malsup.com/form/#ajaxForm它很容易集成。试试看!)
如果form_update是表单的ID,那么代码将是
$('#form_update').ajaxForm({
target: '#result-sub',
success: function(){
$('#result-sub').show();
$('#form_update').hide();
}
});
添加一个div或id为"result-sub"的东西来返回插入的响应。
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 从MySQL数据库中获取输入数据需要两次页面刷新
- 在数据库中循环值时,为输入框获取唯一值
- 编辑数据库输入时在文本框上换行
- 输入框值将保存到 MySQL 数据库
- Selectize.js:如何将数据库中已经选择的标签预加载到输入字段(Meteor&MongoDB/JSON)
- 将动态输入表单数据保存到数据库kendoui中
- 使用javascript、jquery和PHP自动完成从数据库中提取城市的输入
- 我有一个mysql的输入文本字段.那么,如何通过ajax从数据库中输出json表呢
- 从数据库填充的下拉菜单中更新输入字段
- 根据多个输入值更新数据库
- 在codeigneter中按类型输入框显示数据库中的数据
- PHP/MySQL:将用户输入保存到数据库
- 在检查值输入数据库后禁用复选框
- 如何在数据库中输入特定字段时生成针对特定电子邮件的电子邮件触发器
- Laravel 5.0:如何在数据库的同一列中保存行的多个输入
- 如何在数据库中存储输入文本字段中输入的值
- 如何正确重定向,重定向时,查询不会将值输入数据库
- WebSQL | SQLite -插入"?字符输入数据库
- 将数据以随机形式输入数据库