Skip to main content

Flexigrid with PostgreSQL DataBase

    Lightweight but rich data grid with re-sizable columns and a scrolling data to match the headers, plus an ability to connect to an XML or JSON data source using Ajax to load the content.
   Similar in concept with the Ext Grid only its pure jQuery love, which makes it light weight and follows the jQuery mantra of running with the least amount of configuration.

How to Use

    Adding the Flexigrid to your webpage couldn't be easier. Just download the code from and copy the required files into your site's directories. You must also have a version of jQuery running on your site for this to work which can be found at
       You will find a flexigrid.js file in the downloaded archive. Include this file in the head section of your site as you would normally do along with the provided CSS file (you will need to copy across the entire contents of the 'css' directory including the images).
After creating a table element on your page with an id of 'flex1' for this example you can then create and include a javascript file consisting of the following code. The Flexigrid will then be created on page load.


        <link type="text/css" href="css/flexigrid.pack.css" rel="stylesheet" />
        <link type="text/css" href="css/flexigrid.css" rel="stylesheet" />
<link type="text/css" href="css/smoothness/jquery-ui-1.8.6.custom.css" rel="stylesheet" />
        <link type="text/css" href="css/demos.css" rel="stylesheet" />

<script type="text/javascript" src="js/jq.js"></script>
<script type="text/javascript" src="js/flexigrid.pack.js"></script>
        <script type="text/javascript" src="js/flexigrid.js"></script>
<script type="text/javascript">
$(function() {
                url: 'page.php',
                dataType: 'json',
                colModel : [
                        {display: 'Sl', name : 'columnid', width : 40, sortable : true, align: 'left'},
                        {display: 'Name', name : 'columnvalue', width : 500, sortable : true, align: 'left'},
                buttons : [
                        {name: 'Edit', bclass: 'edit', onpress : doCommand},
                        {name: 'Delete', bclass: 'delete', onpress : doCommand},
                        {separator: true}
                searchitems : [
                        {display: 'Name', name : 'columnvalue', isdefault: true},

                sortname: "columnvalue",
                sortorder: "asc",
                usepager: true,
                title: "FlexiGrid",
                useRp: true,
                rp: 10,
                showTableToggleBtn: false,
                resizable: false,
                width: 700,
                height: 200,
                singleSelect: true
function doCommand(com, grid) {
if (com == 'Edit') {
$('.trSelected', grid).each(function() {
var id = $(this).attr('id');
id = id.substring(id.lastIndexOf('row')+3);
alert("Edit row " + id);
} else if (com == 'Delete') {
$('.trSelected', grid).each(function() {
var id = $(this).attr('id');
id = id.substring(id.lastIndexOf('row')+3);
alert("Delete row " + id);
<table id="flex1"></table>

// Connect to PoOstgreSQL database
$connstr = "dbname=dbname user=username password=yourpassword host=server port=1234 ";
$dbcon = @pg_connect($connstr);
pg_query("set search_path to schema");
$page = 1; // The current page
$sortname = 'columnvalue'; // Sort column
$sortorder = 'asc'; // Sort order
$qtype = ''; // Search column
$query = ''; // Search string

//Get posted data
if (isset($_POST['page'])) {
      $page = $_POST['page'];
if (isset($_POST['sortname'])) {
        $sortname =$_POST['sortname'];
if (isset($_POST['sortorder'])) {
        $sortorder = $_POST['sortorder'];
if (isset($_POST['qtype'])) {
        $qtype =$_POST['qtype'];
if (isset($_POST['query'])) {
        $query = $_POST['query'];
if (isset($_POST['rp'])) {
        $rp =$_POST['rp'];

// Setup sort and search SQL using posted data
$sortSql = "order by $sortname $sortorder";
$searchSql = ($qtype != '' && $query != '') ? "where $qtype = '$query'" : '';
// Get total count of records
$sql = "select count(*)
from \"tableName\"

$stat = pg_exec($dbcon, $sql);
$data = pg_fetch_array($stat, 0);
$total = $data["count"];
// Setup paging SQL
$pageStart = ($page-1)*$rp;
$limitSql = " limit $rp OFFSET $pageStart";
// Return JSON data
$data = array();
$data['page'] = $page;
$data['total'] = $total;
$data['rows'] = array();
$sql = "select columnid,columnvalue from \"tableName\"
$stat = pg_exec($dbcon, $sql);
$rows = pg_numrows($stat);  
for($i = 0; $i < $rows; $i++)
    $row = pg_fetch_array($stat, $i);
$data['rows'][] = array(
'id' => $row['columnid'],
'cell' => array($row['columnid'], $row['columnvalue'])
echo json_encode($data);



Post a Comment

Popular posts from this blog

Learn how to setup push notifications in your Ionic app and send a sample notification using Node.js and PHP.

Ionic is an open source mobile UI toolkit for building modern, high quality cross-platform mobile apps from a single code base. To set up push notifications in your Ionic app, you will need to perform the following steps: Create a new Firebase project or use an existing one, and then enable Firebase Cloud Messaging (FCM) for your project. Install the Firebase Cloud Messaging plugin for Ionic: npm install @ionic-native/firebase-x --save Add the plugin to your app's app.module.ts file: import { FirebaseX } from '@ionic-native/firebase-x/ngx' ; @ NgModule({ ... providers: [ ... FirebaseX ... ] ... }) Initialize Firebase in your app's app.component.ts file: import { FirebaseX } from '@ionic-native/firebase-x/ngx' ; @ Component({ ... }) export class AppComponent { constructor ( private firebase : FirebaseX ) { this .firebase.init(); } } Register your app with Firebase Cloud Messaging by adding

How to export php/html page to Excel,Word & CSV file format

This class can generate the necessary request headers to make the outputted HTML be downloaded as a file by the browser with a file name that makes the file readable by Excel(.xls),Word(.doc) and CSV(.csv). Step1: Create PHP file named 'ExportPHP.class.php' ExportPHP.class.php <?php class ExportPHP { // method for Excel file function setHeaderXLS ( $file_name ) { header( "Content-type: application/ms-excel" ); header( "Content-Disposition: attachment; filename=$file_name" ); header( "Pragma: no-cache" ); header( "Expires: 0" ); } // method for Doc file function setHeaderDoc ( $file_name ) { header( "Content-type: application/x-ms-download" ); header( "Content-Disposition: attachment; filename=$file_name" ); header( 'Cache-Control: public' ); } // method for CSV file function setHeaderCSV (

Why is Apollo Client a crucial tool for your GraphQL project?

Apollo Client is a popular JavaScript library for managing GraphQL queries and mutations in client-side applications. There are several reasons why you might want to use Apollo Client in your GraphQL application: Simplified data management : With Apollo Client, you can easily manage your application's data with a single, declarative API. This can help to simplify your code and make it easier to reason about. Real-time updates : Apollo Client includes built-in support for subscriptions, which allow you to receive real-time updates from your GraphQL server. This can be useful for applications that require real-time data, such as chat applications or real-time analytics dashboards. Caching and performance : Apollo Client includes a sophisticated caching system that can help to improve the performance of your application by reducing the number of network requests required to fetch data. The cache can also be configured to automatically invalidate data when it becomes stale, ensuring th