[英]Jqgrid cannot add or edit data
我正在使用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'){
}
?>
回答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相同),您必須檢查用戶是否添加,編輯或刪除:
// 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再次加載網格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.