Jqgrid无法添加或编辑数据

时间:2013-11-26 19:19:14

标签: javascript php jqgrid

我正在使用Trirand.com的jqgrid,我无法通过内置表单对话框添加或编辑数据。当我编辑和/或添加数据并点击提交时,数据刷新但没有任何变化。我检查了PHPmyadmin,没有数据被更改或添加到数据库中。

任何帮助将不胜感激。

修改

HTML / Jquery代码

 jQuery(document).ready(function(){ 
          jQuery("#grid").jqGrid("initFontAwesome").jqGrid({
              pager:'#pager',
              url:'getunits.php',
              datatype: "json",
              mtype: 'GET',
              height: 300,
              width: 1000,
              colNames:['Unit Id', 'Div Id', 'Title Org', 'Short Desc', 'Long Desc', 'Comments', 'Enabled'],
              colModel:[
                        {name:'unit_id',
                            index:'unit_id', 
                            width:40,
                            editable:true,
                            sortable:false, 
                            resizable:false,
                            align:"center", 
                            editoptions:{size:7,maxlength:6},
                            editrules:{required:true,number:true},
                            formoptions:{elmprefix:"(*)"}
                        },
                        {name:'div_id',
                            index:'div_id', 
                            width:30,
                            editable:true,
                            sortable:false, 
                            resizable:false,
                            align:"center", 
                            editoptions:{size:4,maxlength:4},
                            editrules:{required:true,number:true},
                            formoptions:{elmprefix:"(*)"}
                        },
                        {name:'title_org',
                            index:'title_org', 
                            width:60,
                            editable:true,
                            sortable:false, 
                            resizable:false,
                            editoptions:{size:11,maxlength:11},
                            editrules:{required:true,number:true},
                            formoptions:{elmprefix:"(*)"}
                        },
                        {name:'short_desc',
                            index:'short_desc', 
                            width:50,
                            editable:true,
                            resizable:false,
                            sortable:false,
                            editoptions:{size:7,maxlength:10},
                            editrules:{required:true},
                            formoptions:{elmprefix:"(*)"}
                        },
                        {name:'long_desc',
                            index:'long_desc', 
                            width:230,
                            editable:true,
                            resizable:false,
                            sortable:false,
                            edittype:"textarea",
                            editoptions:{rows:"2",cols:"30",maxlength:60},
                            editrules:{required:true},
                            formoptions:{elmprefix:"(*)"}
                        },
                        {name:'unit_desc',
                            index:'unit_desc', 
                            width:230,
                            editable:true,
                            resizable:false,
                            sortable:false,
                            edittype:"textarea",
                            editoptions:{rows:"2",cols:"30",maxlength:60}
                        },
                        {name:'avail_ind',
                            index:'avail_ind',
                            width:40,
                            editable:true,
                            resizable:false,
                            sortable:false,
                            align:"center",
                            edittype:"select",
                            editoptions:{value:"Y:Y;N:N"}
                        }
                   ],

              pager: jQuery('#gridpager'),
              viewrecords: true,
              sortorder: "asc",
              sortname: "div_id",
              caption:"Unit Codes",
              editurl:'getunits.php',
              toppager:true, 
              recordtext:'', 
              hidegrid:false, 
              scroll:true,
              rowNum:"10000"

         }); 

         jQuery("#grid").jqGrid('navGrid','#grid_toppager', 
        {

            add:true,
            edit:true,
            view:true, 
            search:false, 
            del:false, 
            refresh:false
        },

        { // Edit form
            width:"auto",
            height:"auto",
            top:220,
            left:500,
            viewPagerButtons:false, 
            topinfo:"Fields marked with (*) are required",
            resize:false
        },

        { // Add form
            width:"auto",
            height:"auto",
            top:220,
            left:500,
            topinfo:"Fields marked with (*) are required",
            resize:false,
            reloadAfterSubmit:true,
            closeAfterAdd: true   
        },

        { // prmDel 

       },

       { //prmSearch

       },

       { //prmView
            top:220,
            left:460
       }


       );   


        }); // jQuery("#grid").jqGrid 
</script>

PHP代码

<?php 

$dbhost = "localhost"; 
$dbuser = "root"; 
$dbpass = "*******"; 
$dbname = "fdmamaint"; 


$page = $_GET['page']; // get the requested page
$limit = $_GET['rows']; // get how many rows we want to have into the grid
$sidx = $_GET['sidx']; // get index row - i.e. user click to sort
$sord = $_GET['sord']; // get the direction

if(!$sidx) $sidx =1;

// connect to the database
$db = mysql_connect($dbhost, $dbuser, $dbpass) or die("Connection Error: " . mysql_error());

mysql_select_db($dbname) or die("Error conecting to db.");
$result = mysql_query('SELECT unit_id, div_id, title_org, short_desc, long_desc, unit_desc, avail_ind FROM depunits where avail_ind="Y" and active_ind="Y"');
$row = mysql_fetch_array($result,MYSQL_ASSOC);
$count = $row['count'];

if( $count >0 ) 
{
    $total_pages = cell($count/$limit);
} 
else 
{
        $total_pages = 0;
}

if ($page > $total_pages) $page=$total_pages;
$start = $limit*$page - $limit; // do not put $limit*($page - 1)
$SQL = 'SELECT unit_id, div_id, title_org, short_desc, long_desc, unit_desc, avail_ind FROM depunits where avail_ind="Y" and active_ind="Y"';
$result = mysql_query( $SQL ) or die("Couldn t execute query.".mysql_error());

$response->page = $page;
$response->total = $total_pages;
$response->records = $count;

$i=0;
while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
    $response->rows[$i]['id']=$row[unit_id];
    $response->rows[$i]['cell']=array($row[unit_id],$row[div_id],$row[title_org],$row[short_desc],$row[long_desc],$row[unit_desc],$row[avail_ind]);
    $i++;
}        
echo json_encode($response);

?>

已更新

EditDivisions.php

<?php

$dbhost = "localhost"; 
$dbuser = "root"; 
$dbpass = "*****"; 
$dbname = "fdmamaint"; 

// connect to the database
$mysql_connect($dbhost, $dbuser, $dbpass) or die("Connection Error: " . mysql_error());

mysql_select_db($dbname) or die("Error conecting to db.");

$div = mysql_real_escape_string($_GET['div_id']);
$l2 = mysql_real_escape_string($_GET['l2_id']);
$l1l2 = mysql_real_escape_string($_GET['l1l2_id']);
$l1l3 = mysql_real_escape_string($_GET['l1l3_id']);
$l2l3 = mysql_real_escape_string($_GET['l2l3_id']);
$beg = mysql_real_escape_string($_GET['exec_beg']);
$end = mysql_real_escape_string($_GET['exec_end']);
$csa = mysql_real_escape_string($_GET['csa_id']);
$area = mysql_real_escape_string($_GET['area_id']);
$areadesc = mysql_real_escape_string($_GET['area_desc']);
$shortdesc = mysql_real_escape_string($_GET['short_desc']);
$longdesc = mysql_real_escape_string($_GET['long_desc']);
$enabled = mysql_real_escape_string($_GET['avail_ind']);

if($_GET['oper']=='add'){

    mysql_query("INSERT INTO depdivisions (div_id, l1l2_id, l2_id, l1l3_id, l2l3_id, exec_beg, exec_end, csa_id, area_id, area_desc, short_desc, long_desc, avail_ind) values ($div,$l1l2,$l2,$l1l3,$l2l3,$beg,$end,$csa,$area,$areadesc,$shortdesc,$longdesc,$enabled");

}else if($_GET['oper']=='edit'){

}else if($_GET['oper']=='del'){

}

?>

1 个答案:

答案 0 :(得分:0)

回答JCooper评论(I was under the impression that there are built in functions inside the grid base code that handles them. Wouldn't it be inside the jquery.jqGrid.src.js?)。

工作原理:

在您的编辑php页面/文件(getunits.php中,不确定它是一个不错的选择,因为它与您的“load_data”URL是相同的URL),您必须检查用户是否添加,编辑或删除:

// Here, we use $_GET, because you ask for it in configuration.
$unit_id = $_GET['unit_id']; // And so on for the other form values

if($_GET['oper']=='add'){
   // mysql insert
}else if($_GET['oper']=='edit'){
   // mysql update
}else if($_GET['oper']=='del'){
   // mysql delete
}

操作完成后,将使用“load_data”URL再次加载网格。