Knowing how to Insert, Update and Delete data it is very natural to have a method that combines all of these operations. The method is named editGrid and combines insert, update, delete and queryGrid methods in one place.

The method uses prmNames names grid options to identify in which mode we are and and do the appropriate operation.
Another feature of the method is that the primary key kan not be set. In case if the primary key is not set the method try to get the primary key of the table. If the primary key can not be obtained a error message is displayed and the CRUD operation is aborted.

Let suppose that we want to enable all the CRUD operations in the grid. The html code is:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>PHP jqGrid Class Example</title> <link rel="stylesheet" type="text/css" media="screen" href="themes/redmond/jquery-ui-1.7.1.custom.css" /> <link rel="stylesheet" type="text/css" media="screen" href="themes/ui.jqgrid.css" /> <script src="js/jquery-1.3.2.min.js" type="text/javascript"></script> <script src="js/i18n/grid.locale-en.js" type="text/javascript"></script> <script src="js/jquery.jqGrid.min.js" type="text/javascript"></script> <script type="text/javascript"> jQuery(document).ready(function(){ .... // Craeate the grid manually jQuery("#grid").jqGrid({ "colModel":[ {"name":"OrderID","index":"OrderID","label":"ID","width":60, "key":true}, {"name":"OrderDate","index":"OrderDate", editable:true}, {"name":"CustomerID","index":"CustomerID", editable:true}, {"name":"Freight","index":"Freight", editable:true}, {"name":"ShipName","index":"ShipName", editable:true} ], "url":"querygrid.php", "datatype":"json", "jsonReader":{repeatitems:false}, "pager":"#pager", // now we should set the url where we post the data // in this case the same url "editurl": "querygrid.php", // tell the grid to post the OrderID as primary key "prmNames":{"id":"OrderID"} }); // Set navigator with all operations enabled. jQuery("#grid").jqGrid('navGrid','#pager',{add:true,edit:true,del:true}); ...... }); </script> </head> <body> ...... <table id="grid"></table> <div id="pager"></div> ....... </body> </html>

The appropriate PHP code is
<?php
require_once 'jq-config.php';
// include the jqGrid Class
require_once "php/jqGrid.php";
// include the PDO driver class
require_once "php/jqGridPdo.php";
// Connection to the server
$conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD);

// Create the jqGridEdit instance
$grid = new jqGridEdit($conn);

// Write the SQL Query
$grid->SelectCommand = 'SELECT OrderID, OrderDate, CustomerID, Freight, ShipName FROM orders';
$grid->dataType = "json";

$grid->table = 'orders';
$grid->setPrimaryKeyId('OrderID');
$grid->editGrid();
?>