gpt4 book ai didi

javascript - jqGrid - PHP,如何将编辑的数据保存到服务器(MySQL)

转载 作者:行者123 更新时间:2023-11-29 17:46:10 26 4
gpt4 key购买 nike

我正在尝试学习 jqGrid,但有一些烦人的问题我无法弄清楚的问题。我正在使用导航网格进行添加,编辑和删除数据。问题是,我可以添加、编辑或删除数据来自网络。 但更改不会应用于我的服务器。所以例如,如果我编辑第一行,它会在我的导航网格中发生变化,但随后如果我重新加载页面,它会再次出现。

NavGridHTML.html

<!DOCTYPE html>
<html>
<head>
<title>Navigation Grid</title>
<link rel="stylesheet" type="text/css" media="screen" href="css/jquery-ui.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />

<style type="text/css">
html, body {
margin: 0;
padding: 0;
font-size: 75%;
}
</style>

<script src="js/jquery-1.11.0.min.js" type="text/javascript"></script>
<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>
<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>

<script type="text/javascript">
$(function () {

jQuery("#navgrid").jqGrid({

url: "GridPHP.php",
editurl:"GridEditPHP.php",
datatype: "json",
mtype: "GET",
//cellEdit: true,
//cellsubmit: "remote",
//cellurl: "GridEditPHP.php",
colNames: ["Film ID","Title","Description","Length","Rating"],
colModel: [
{ name: "film_id", index: "film_id", width: 40, editable: false, editoptions: {readonly:true,size: 10}},
{ name: "title", index: "title", width: 180, editable:true, editoptions: {size: 10}},
{ name: "description", index: "description", width: 700, sortable: false, editable:true, edittype: "textarea", editoptions: {rows:"3", cols:"30"}},
{ name: "length", index: "length", width: 50, align: "right", editable:true, editoptions: {size: 10}},
{ name: "rating", index: "rating", width: 70, align: "right", editable:true, editoptions: {size: 10}}
],
pager: "#pagernav",
rowNum: 10,
rowList: [10,20,30],
sortname: "film_id",
sortorder: "asc",
viewrecords: true,
//gridview: true,
//autoencode: true,
caption: "Navigation Table"
// height: 210

});

jQuery("#navgrid").jqGrid('navGrid','#pagernav',
{edit:true,add:true,del:true, search: false, view: true}, // options
{height: 280, reloadAfterSubmit:false, recreateForm: true, closeAfterEdit: true, editCaption: "The Edit Dialog", saveData: "Data has been changed! Save changes?", closeOnEscape: true}, // edit options
{height: 280, reloadAfterSubmit:false, recreateForm: true, closeAfterAdd: true, closeOnEscape: true}, // add options
{reloadAfterSubmit:false, closeOnEscape: true}, // del options
{}, // search options
{closeOnEscape: true}
);

});
</script>

</head>
<body>
<table id="navgrid"><tr><td></td></tr></table>
<div id="pagernav"></div>
</body>
</html>

GridPHP.php

<?php
include("GridCONFIG.php");

$page = $_REQUEST["page"];
$limit = $_REQUEST["rows"];
$sidx = $_REQUEST["sidx"];
$sord = $_REQUEST["sord"];

if (!$sidx) $sidx = 1;

$totalrows = isset($_REQUEST["totalrows"]) ? $_REQUEST["totalrows"]: false;

if($totalrows) {

$limit = $totalrows;

}

$db =mysqli_connect($host, $username, $password, $database) or die ("Connection Error: " . mysqli_error($db));

mysqli_select_db($db,$database) or die ("Error connecting to db!");
$result = mysqli_query($db,"SELECT COUNT(*) AS count FROM film");
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$count = $row['count'];

if ($count > 0 ) {

$var = @($count/$limit);
$totalpages = ceil ($var);

} else {

$totalpages = 0;

}

if ($page > $totalpages) $page=$totalpages;

if ($limit < 0) $limit = 0;

$start = $limit*$page - $limit;
if ($start < 0) $start = 0;

$sql = "SELECT film_id, title, description, length, rating FROM film ORDER BY $sidx $sord LIMIT $start , $limit";
$result = mysqli_query($db,$sql) or die ("Couldn't execute query! ".mysqli_error($db));

$responce = new \stdClass();
$responce -> success = false;
$responce -> page = $page;
$responce -> total = $totalpages;
$responce -> records = $count;

$i = 0;
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

$responce -> rows[$i]["id"] = $row["film_id"];
$responce -> rows[$i]['cell'] = array($row["film_id"],$row["title"],$row["description"],$row["length"],$row["rating"]);
$i++;

}

echo json_encode($responce);
mysqli_close($db);

?>

GridEditPHP.php

<?php
include("GridCONFIG.php");

$db =mysqli_connect($host, $username, $password, $database) or die ("Connection Error: " . mysqli_error($db));
mysqli_select_db($db,$database) or die ("Error connecting to db.");

$filmid = $_POST["film_id"];
$title = $_POST["title"];
$description = $_POST["description"];
$length = $_POST["length"];
$rating = $_POST["rating"];

//switch($_REQUEST["oper"]) {
//
// case "add":
// $sql = "INSERT INTO film (film_id,title,description,length,rating) VALUES ($filmid,$title,$description,$length,$rating)";
// mysqli_query($db, $sql);
// break;
//
// case "edit":
// $sql = "UPDATE film SET film_id=$filmid, title=$title, description=$description, length=$length, rating=$rating";
// mysqli_query($db, $sql);
// break;
//
// case "del":
// $sql = "DELETE FROM film";
// mysqli_query($db, $sql);
// break;
echo "TEST!!!";
if($_REQUEST["oper"]=='add') {

$sql = "INSERT INTO film (film_id,title,description,length,rating) VALUES ($filmid,$title,$description,$length,$rating)";
if(mysqli_query($db, $sql)) {

echo "Film added.";

} else {

echo "Error adding film: " .mysqli_error($db);

}

} elseif($_REQUEST["oper"]=='edit') {

$sql = "UPDATE film SET title=$title, description=$description, length=$length, rating=$rating WHERE film_id=$filmid";
if(mysqli_query($db, $sql)) {

echo "Film edited.";

} else {

echo "Error editing film: " .mysqli_error($db);

}

} elseif($_POST["oper"]=='del') {

$sql = "DELETE FROM film WHERE film_id=$filmid";
if(mysqli_query($db, $sql)) {

echo "Film deleted.";

} else {

echo "Error deleting film: " .mysqli_error($db);

}

}

mysqli_close($db);

?>

如果有人能解决这个恼人的问题,我将不胜感激......只是为了提供信息,我已经阅读了 Documentation ,并查看了互联网上的每一个示例或解决方案。但还是没找到解决办法。

还有一个问题:我如何查看 GridEditPHP.php 的输出 echo "TEST!!!";...我的意思是,我可以在我的网站上哪里看到它?

数据库是名为“sakila”的示例数据库。

最佳答案

在 GridEditPHP.php 中,我遇到了语法错误。

elseif($_REQUEST["oper"]=='edit') {

$sql = "UPDATE film SET title=$title, description=$description, length=$length, rating=$rating WHERE film_id=$filmid";
if(mysqli_query($db, $sql)) {

echo "Film edited.";

} else {

echo "Error editing film: " .mysqli_error($db);

}

$sql 应该这样设置:

$sql = "UPDATE film SET title='$title', description='$description', length=$length, rating='$rating' WHERE film_id=$filmid";

现在一切正常......我可以通过我的网络服务器添加、编辑或删除服务器中的任何数据。

另外还要感谢@Oleg,我根据他的建议解决了这个问题。请参阅Network Tab - Developer ToolsFiddler

关于javascript - jqGrid - PHP,如何将编辑的数据保存到服务器(MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49811720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com