jqgrid-php,如何将编辑的数据保存到服务器(mysql)

o2g1uqev  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(337)

我正在努力学习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>

网格php.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);

?>

如果有人能解决这个烦人的问题,我将不胜感激。。。为了获取信息,我已经阅读了文档,并查看了互联网上的每个示例或解决方案。但还是找不到解决办法。
还有一个问题:如何查看grideditphp.php的输出 echo "TEST!!!"; ... 我的意思是,在我的网站上哪里可以看到它?
数据库是名为“sakila”的示例数据库。

yyhrrdl8

yyhrrdl81#

在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,我用他的建议解决了这个问题。请参见“网络”选项卡-开发人员工具或fiddler

相关问题