Sigma Php Ajax framework, Ajax Components, GUI Builder
September 02, 2010, 02:26:35 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: sigma grid with php/oracle  (Read 733 times)
dirma
Newbie
*
Posts: 1


View Profile
« on: December 23, 2009, 12:56:23 AM »


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" -->
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<title>Sigma Grid 2.0 JSON Array Paging Sample</title>
<meta name="keywords" content="dhtml grid, AJAX grid, relationship,grid customization, cell text editor, cell dropdown list, cell calendar " >
<link rel="stylesheet" type="text/css" href="../../grid/gt_grid.css" />
<link rel="stylesheet" type="text/css" href="../../grid/skin/vista/skinstyle.css" />
<script type="text/javascript" src="../../grid/gt_msg_en.js"></script>
<script type="text/javascript" src="../../grid/gt_grid_all.js"></script>
<script type="text/javascript" src="../../grid/flashchart/fusioncharts/FusionCharts.js"></script>
<link rel="stylesheet" type="text/css" media="all" href="../../grid/calendar/calendar-blue.css"  />
<script type="text/javascript" src="../../grid/calendar/calendar.js"></script>
<script type="text/javascript" src="../../grid/calendar/calendar-en.js"></script>
<script type="text/javascript" src="../../grid/calendar/calendar-setup.js"></script>

   
   
<script type="text/javascript" >

var grid_demo_id = "myGrid1" ;

function my_renderer(value ,record,columnObj,grid,colNo,rowNo){
   var no= record[2];
    var url= record[9];
    return '<a target=blank href="http://www.' + value + '.com">' + value + '</a>';
};

function my_renderer1(value ,record,columnObj,grid,colNo,rowNo){
   var no= record[columnObj.fieldIndex];
   var color = no<50?"red":(no>70?"green":"blue");
   return "<span style=\"color:" + color +";\"><strong>" + no + "</strong></span>";
}


var dsOption= {

   fields :[
      {name : 'order_no'  },
      {name : 'employee'  },
      {name : 'country'  },
      {name : 'customer'  },
      {name : 'order2005' ,type: 'float' },
      {name : 'order2006' ,type: 'float' },
      {name : 'order2007' ,type: 'float' },
      {name : 'order2008' ,type: 'float' },
      {name : 'delivery_date' ,type:'date'  }
      
   ],
   recordType : 'array'
}

var myDialogEditorCreater = new Sigma.DialogEditor({
   id: "myDialogEditor1",
   gridId : "myGrid1" ,
   width: 250,
   height:150 ,
   title : 'Name Editor',
   body : ['<textarea id="my_name_input" rows="5" cols="20" style="width:99%"></textarea><br/>',
         '<input type="button" value="OK" onclick="Sigma.$grid(\'myGrid1\').activeDialog.confirm()"/>'].join(''),

   getValue : function(){
      return Sigma.$("my_name_input").value;
   },

   setValue : function(value){
      Sigma.$("my_name_input").value=value;
   },
   active : function(){
      Sigma.U.focus(Sigma.$("my_name_input")); 
   }

   // Developer could do validation, formating work by overwritting event handler beforeShow, afterShow, beforeHide, afterHide of dialog

});


var colsOption = [
 
     {id: 'order_no' , header: "Order No" , width :60 , renderer:my_renderer  ,editor:{type:"text"}},
     {id: 'employee' , header: "Employee" , width :80  , editor:{type:"text"} },
      {id: 'country' , header: "Country" , width :70  ,editor: myDialogEditorCreater },
      {id: 'customer' , header: "Customer" , width :80 ,editor:{type:"text"} },
      {id: 'order2005' , header: "2005" , width :60 ,renderer:my_renderer1,editor:{type:"text"} },
      {id: 'order2006' , header: "2006" , width :60,editor:{type:"text"} },
      {id: 'order2007' , header: "2007" , width :60,editor:{type:"text"} },
      {id: 'order2008' , header: "2008" , width :60,editor:{type:"text"} },
      {id: 'delivery_date' , header: "Delivery Date" , width :100,editor: {type :"date"}}
       
];

var gridOption={
   id : grid_demo_id,
   loadURL : 'Controller.php',
   saveURL : 'Controller.php',
   exportURL : 'Controller.php?export=true',
   exportFileName : 'export_xls',
   width: "900",  //"100%", // 900,
   height: "400",  //"100%", // 550,
   container : 'gridbox',
   replaceContainer : true,
   encoding : 'UTF-8', // Sigma.$encoding(),
   dataset : dsOption ,
   columns : colsOption ,
   clickStartEdit : true ,
   pageSize:50,
   pageSizeList : [25,50,100,200,400], 
   showGridMenu : true,
   
   toolbarContent : ' nav goto   |   pagesize  | reload | add del save | print xls filter | state'          
};

var mygrid=new Sigma.Grid( gridOption );
Sigma.Util.onLoad(function(){mygrid.render()});


//////////////////////////////////////////////////////////






</script>
</head>
<body>

<div id="page-container">
   
  <div id="header">
  <h1>
      Product - Sigma Grid</h1>
  </div>

  <div id="content">
   
 
   
     <h2>Sigma Grid Sample - Loading From JSON Array - Paginal Output</h2>
    <div id="bigbox" style="margin:15px;display:!none;">
      <div id="gridbox" style="border:0px solid #cccccc;background-color:#f3f3f3;padding:5px;height:200px;width:700px;" ></div>
    </div>

  </div>
 
 
<h3>About Sigmasoft</h3>
    <p>
    <ul>
          <li>Input first letters of employee name(case sensitive):<input type="text" id="f_value1" value="" onKeyUp="doFilter()"></li>
          <li>Grid will present orders of those employees whose name starts with your input just
          now.</li>
          <li>Note that employee names are case sensitive.</li>
    </ul>
    Sigmasoft Technologies LLC is a software company providing cross-browser javascript GUI components and tools & services involved. Our aim is to make AJAX simple and easy.
<br>Sigmasoft also provides end-to-end solutions in web development (Web 2.0, PHP, ASP.NET, ASP, JSP, XML, Flash), application development and IT consulting services. Please send email to sales@sigmawidgets.com for further infomation.
</p>

 
  <script type="text/javascript" >
 
function doFilter() {
   var filterInfo=[
   {
      fieldName : "employee",
      logic : "startWith",
      value : Sigma.Util.getValue("f_value1")
   }
   ]
   var grid=Sigma.$grid("myGrid1");
   var rowNOs=grid.filterGrid(filterInfo);
}
 
 
</script>

  <div id="footer">All contents are (c) Copyright 2005 - 2008, Sigma Software Inc. All rights Reserved</div>
</div>
<script type="text/javascript">
jssc.colorAll("code");
</script>
</body>
</html>
Controller.php
<?php
header('Content-type:text/javascript;charset=UTF-8');
//require_once 'ocisess.php';-------------------------------------如果用ORACLE 数据库放session的话去掉//
session_start();
$userid= htmlentities(trim($_SESSION['userid']));

$json=json_decode(stripslashes($_POST["_gt_json"]));
//$pageSize = 10;//10 rows per page
$c = oci_connect('scott', 'tiger', 'webdb');
if (!$c) {
$e = oci_error(); // No parameter passed
var_dump($e);
}
//load   action-------------------------------------------------
if($json->{'action'} == 'load'){
   
$pageNo = $json->{'pageInfo'}->{'pageNum'};
$pageSize= $json->{'pageInfo'}->{'pageSize'};
$s = oci_parse($c, 'select count(*)  from orders where customer = :userid');
oci_bind_by_name($s, ":userid", $userid);
oci_execute($s);
if (OCIFetch($s)) {
    $totalRec = OCIResult($s,1);
} else {
    $totalRec = 0;        // If no record was found
}
OCIFreeStatement($s);   
if($pageNo<1||$pageNo>ceil(($totalRec/$pageSize))){
  $pageNo = 1;
};
$minrow = ($pageNo - 1)*$pageSize+1; // row number of first row to return
$maxrow =  $pageNo*$pageSize; // row number of last row to return
$mystmt = "select * from orders where customer = :userid order by order_no ";
$pagesql = "select *
from ( select a.*, rownum as rnum
from ( $mystmt ) a
where rownum <= :maxrow)
where rnum >= :minrow";
$s = oci_parse($c, $pagesql);
oci_bind_by_name($s, ":userid", $userid);
oci_bind_by_name($s, ":maxrow", $maxrow);
oci_bind_by_name($s, ":minrow", $minrow);
oci_execute($s);
$retArray = array();
while (($row = oci_fetch_row($s)) != false){
$retArray[] = $row;
}
$data = json_encode($retArray);
$ret = "{data:" . $data .",\n";
$ret .= "pageInfo:{totalRowNum:" . $totalRec . "},\n";
$ret .= "recordType : 'array'}";
echo $ret;
}
//save action-----------------------------------
else if($json->{'action'} == 'save')
{
  // delete from json-------------------------
  $sql = "";
  $deletedRecords = $json->{'deletedRecords'};
  foreach ($deletedRecords as $value)
  {
  $sql = "delete from orders where order_no = :order_no";
  $s = oci_parse($c, $sql);
  oci_bind_by_name($s, ":order_no", $value[0]);
  $rc = oci_execute($s);
   if (!$rc) {
   $e = oci_error($s); // Statement resource passed
   var_dump($e);
             }
  }
  //update from json
  $sql = "";
  $updatedRecords = $json->{'updatedRecords'};
  foreach ($updatedRecords as $value)
  {
  $sql = "update orders set employee= :p1 ,country= :p2,delivery_date= :p8 where order_no = :p0";
  $s = oci_parse($c, $sql);
  oci_bind_by_name($s, ":p0", $value[0]); 
  oci_bind_by_name($s, ":p1", $value[1]);
  oci_bind_by_name($s, ":p2", $value[2]);
  oci_bind_by_name($s, ":p8", $value[8]);
  $rc = oci_execute($s);
   if (!$rc) {
   $e = oci_error($s); // Statement resource passed
   var_dump($e);
             }
  }
  //insert from json
  $sql = "";
  $insertedRecords = $json->{'insertedRecords'};
  foreach ($insertedRecords as $value)
  {
  //用到了STDCLASS 处理出来数据
  $value=get_object_vars($value);

  $sql = "insert into orders values(:p0 ,:p1 ,:p2 ,:p3 ,:p4 ,:p5 , :p6 , :p7,sysdate)";
  $s = oci_parse($c, $sql);
  oci_bind_by_name($s, ":p0", $value[0]); 
  oci_bind_by_name($s, ":p1", $value[1]);
  oci_bind_by_name($s, ":p2", $value[2]);
  oci_bind_by_name($s, ":p3", $value[3]); 
  oci_bind_by_name($s, ":p4", $value[4]); 
  oci_bind_by_name($s, ":p5", $value[5]);
  oci_bind_by_name($s, ":p6", $value[6]);
  oci_bind_by_name($s, ":p7", $value[7]); 
  //oci_bind_by_name($s, ":p8", $value[8]); 
 
  $rc = oci_execute($s);
    if (!$rc) {
    $e = oci_error($s); // Statement resource passed
    var_dump($e);   
    }
 
  }
  $ret = "{success : true,exception:''}";
  echo $ret;
}
//export action--------------------------------------
else if ($json->{'action'} == 'export'){
   
//This is sigma grid exporting handler
   require_once('GridServerHandler.php');
   $gridHandler = new GridServerHandler();
   
   //bag!!! json 不能直接引用exportType 和EXPORT NAME ,需要开发者改该gridserverhandler
   //获取不到$type 不知道为何//同时也获取不到EXPORT NAME 需要在gridserverhandler.php 里直接给个文件名
   //估计原因是因为json 变量引用冲突造成的,但直接给值不影响使用
   //$type = getParameter('exportType');
   $type = 'xls';
   $s = oci_parse($c, 'select *  from orders order by order_no');
   oci_execute($s);
   $retArray = array();
   while (($row = oci_fetch_row($s)) != false){
   $retArray[] = $row;
   }
  $data1 = $retArray;
  //如何控制能够选择导出方法 :当前和所有
  //----导出所有页 方法---------------------
  //$gridHandler->exportXLS($data1);
  //---导出当前页方法-------------
  $pageSize= $json->{'pageInfo'}->{'pageSize'};
  $start = $json->{'pageInfo'}->{'startRowNum'};
  $data2 = array_slice($data1, $start, $pageSize);
  $gridHandler->exportXLS($data2);
   
                  
}
?>
« Last Edit: January 12, 2010, 04:48:47 AM by dirma » Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!