[英]Editablegrid mysql binding not updating
我在MySQL中使用editablegrid。 它绑定并显示数据到我的网格。 但是,当我尝试编辑或更新网格时却无法这样做。
以下是我的loaddata的一些代码,
$grid->addColumn('CertificateNo', 'CertificateNo', 'integer', NULL, false);
$grid->addColumn('ID', 'ID', 'integer');
$grid->addColumn('QuizNo', 'Test No', 'integer');
$grid->addColumn('Received', 'Received', 'boolean');
$grid->addColumn('DateReceived', 'Date Received', 'datetime');
以下是更新脚本的代码:
// Get all parameters provided by the javascript
$colname = $mysqli->real_escape_string(strip_tags($_POST['colname']));
$id = $mysqli->real_escape_string(strip_tags($_POST['id']));
$coltype = $mysqli->real_escape_string(strip_tags($_POST['coltype']));
$value = $mysqli->real_escape_string(strip_tags($_POST['newvalue']));
$tablename = $mysqli->real_escape_string(strip_tags($_POST['tablename']));
/ This very generic. So this script can be used to update several tables.
$return=false;
if ( $stmt = $mysqli->prepare("UPDATE ".$tablename." SET ".$colname." = ? WHERE id = ?")) {
$stmt->bind_param("si",$value, $id);
$return = $stmt->execute();
$stmt->close();
以下是javascript的一部分,它将值传递给我的update.php脚本。
function updateCellValue(editableGrid, rowIndex, columnIndex, oldValue, newValue, row, onResponse)
{
$.ajax({
url: 'update.php',
type: 'POST',
dataType: "html",
data: {
tablename : editableGrid.name,
id: editableGrid.getRowId(rowIndex),
newvalue: editableGrid.getColumnType(columnIndex) == "boolean" ? (newValue ? 1 : 0) : newValue,
colname: editableGrid.getColumnName(columnIndex),
coltype: editableGrid.getColumnType(columnIndex)
},
success: function (response)
{
// reset old value if failed then highlight row
var success = onResponse ? onResponse(response) : (response == "ok" || !isNaN(parseInt(response))); // by default, a sucessfull reponse can be "ok" or a database id
if (!success) editableGrid.setValueAt(rowIndex, columnIndex, oldValue);
highlight(row.id, success ? "ok" : "error");
},
error: function(XMLHttpRequest, textStatus, exception) { alert("Ajax failure\n" + errortext); },
async: true
});
该模板随附了一个javascript editablegrid-2.0.1。 我注意到问题与主键有关。 在可以从www.editablegrid.net上找到的演示中,表具有主键ID,而我的具有CertificateNo,但是我表中的ID不是主键。
所以我改变了
$grid->addColumn('ID', 'ID', 'integer', NULL, false);
至
$grid->addColumn('CertificateNo', 'CertificateNo', 'integer', NULL, false);
现在,我无法更新网格。
我有同样的问题,您可以在loaddata.php中看到此代码
$grid->addColumn('action', 'Action', 'html', NULL, false, 'id');
将最后一列的“ id”替换为“ CertificateNo”,它将像这样
$grid->addColumn('action', 'Action', 'html', NULL, false, 'CertificateNo');
然后重新加载您的页面以查看更改。
update.php使用$ _POST ['id'],也许您应该将其更改为$ _POST ['CertificateNo']并将该ID作为另一列进行处理,因为它不再是主键。
我有同样的问题。 您必须在js / demo.js中进行更改
function DatabaseGrid()
{
this.editableGrid = new EditableGrid("HERE!!! Chage to name of your sql table", {...
并将您的CertificateNo
重命名为“ id”或在其之前重新命名,因为网格在很多地方都可以使用它,因此很难在任何地方进行更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.