munky334 Posted October 29, 2008 Share Posted October 29, 2008 Hi there, I found a datagrid class script on the internet and it is exactly what I am looking for , the problem is that I can get the script to run. The localhost returns no errors or anything but just displays a page with a whole bunch of characters and things that don't make sense. I'm running PHP 5.2.6 on a wampserver configuration so I'm not too sure if this is perhaps causing a problem. I really need to get this datagrid to work as it will solve a lot of my issues with regards to displaying my data. It's vital that I get this script to work and I have been trying for days now , very frustrating! Please can someone have a look , I would really appreciate it. Thanking you in advance. test.php <? include_once("DBinit.php"); include_once("datagrid.class.php"); ?> <form name="frmAction" action="" method="POST"> <h2>Sections</h2> <span class='normalTxt <?=$color?>'><?=$t_messg?></span> <? //datagrid for existing sections $dbp = new flor_db_process(); $query = "select * from patientdemo"; $dbp->fetchQuery($query); $gridData = $dbp->resultSet; $dg = new DataGrid($gridData); $dg->width = "300"; $dg->fontSize = .8; $dg->autoColumns = false; $dg->paging = true; $dg->paging_byPageNos = true; $dg->paging_NoOfRows = 3; $dg->borderColor = "gray"; //or values like #C0C0C0 $dg->borderStyle = "dotted"; //or solid, or dashed, etc., $dg->borderWidth = 1; //integer $dg->cellPadding = 2; //integer $dg->headBackgroundColor = "#FFFFCC"; //or values like green $dg->headForeColor = "green"; //or values like #FFFFFF $dg->fontSize = .8; //integer $dg->fontFamily = "courier new"; //or Arial, verdana, etc., $dg->colSet[0] = new Column(); $dg->colSet[0]->displayName = "Headline"; $dg->colSet[0]->fieldName = "dispName"; $dg->colSet[0]->width = "70%"; $dg->colSet[1] = new Column(); $dg->colSet[1]->displayName = "Code"; $dg->colSet[1]->fieldName = "positionCode"; $dg->colSet[1]->width = "30%"; $dg->showGrid(); ?> </form> DBinit.php <? include_once("flor_db_process.class.php"); define ("DB_DOMAIN","localhost"); //define ("DB_PORT", 3306); define ("DB_USER","root"); define ("DB_PASS",""); define ("DB_NAME","patient"); ?> DataGrid.class.php <? /* ----------------------------------------------- * Author: Harish Palaniappan, Floresense.com * Ver: 1.1 * Last Updated: Jan 2008 * License: LGPL License * You are free to use/modify/redistribute this script. Keep this comment block intact. * ---------------------------------------------- * * add your own comments here.. * */ class DataGrid{ //vars private $gridHTML = ""; public $columnCount = 0; public $rowCount = 0; private $colInfo = null; private $fontStyle = ""; private $curRowId = -1; private $curColId = -1; //properties public $width = "100%"; public $autoColumns = true; public $resultSet = null; public $fontSize = 1; public $fontFamily = "Verdana"; public $borderWidth = 1; public $borderStyle = "solid"; public $borderColor = "black"; public $cellPadding = 2; public $headBackgroundColor = "#5B59B7"; public $headForeColor = "#FFFFFF"; public $paging_indexAtTop = true; public $paging_indexAtBottom = true; public $pageByName = false; public $pageByName_field = ""; private $curPgAlphaIndex = ""; private $pgAlphaIndexKeys = null; public $paging = false; public $paging_byPageNos = false; public $paging_byNextPrev = false; public $paging_NoOfRows = 30; private $curPgIndex = 1; private $totPages = 1; public $colSet = array(); public $rowSet = array(); public $dataKey = null; //events public $onRowItem_Bound = null; function DataGrid($resultSet=null) { $this->resultSet = $resultSet; } function showGrid() { $this->makeGrid(); echo $this->gridHTML; } function makeGrid() { //get params $gridAction = $_POST['flor_grid_a']; $gridVal = $_POST['flor_grid_aV']; if ($gridAction) { $gridAction = strtoupper($gridAction); switch($gridAction) { case "PGA": $this->curPgAlphaIndex = strtoupper($gridVal); break; case "PG": $this->curPgIndex = $gridVal; break; } } $this->gridHTML = ""; $this->fontStyle="font-size:".$this->fontSize."em;font-family:".$this->fontFamily.";"; $this->initDataInfo(); if ($this->paging_indexAtTop) if ($this->paging || $this->pageByName) $this->gridHTML .= $this->getPagingHTML(); $this->gridHTML .= $this->getTableHTML("OPEN"); $this->gridHTML .= $this->getDataHTML(); $this->gridHTML .= $this->getTableHTML("CLOSE"); if ($this->paging_indexAtBottom) if ($this->paging || $this->pageByName) $this->gridHTML .= $this->getPagingHTML(); if ($this->paging || $this->pageByName) $this->gridHTML .= $this->getPaging_supportScripts(); } private function getPagingHTML() { if ($this->pageByName) { $this->prepAlphabetIndex(); if ($this->curPgAlphaIndex=="" && count($this->pgAlphaIndexKeys)>0) $this->curPgAlphaIndex = $this->pgAlphaIndexKeys[1]; return $this->getAlphabetIndex_HTML(); } elseif($this->paging) { $this->prepPageIndex(); return $this->getPageIndex_HTML(); } } private function prepPageIndex() { $totRows = $this->resultSet->num_rows; $this->totPages = ceil($totRows/$this->paging_NoOfRows); } private function getPageIndex_HTML() { if ($this->paging_byPageNos) { $html = "<div style='padding:2px 5px 2px 5px;background-color:".$this->headBackgroundColor.";". "color:".$this->headForeColor.";width:".($this->width-10)."px;border:0px solid red;text-align:center;". "margin:10px 0px 0px 0px;'> Pages - "; for($idx = 1; $idx<=$this->totPages; $idx++) { $linkStr = "".$idx; if ($this->curPgIndex == $idx) $linkStr = "<span style='font-weight:bold;font-size:1.4em;'>$linkStr</span>"; else $linkStr = "<a href=\"javascript:florDBgrid_action('pg',$idx);\" style='color:".$this->headForeColor.";'>". $linkStr."</a>"; if ($idx == 1) $html .= $linkStr." "; elseif($idx == $this->totPages) $html .= " ".$linkStr." "; else $html .= " ".$linkStr." "; } } elseif ($this->paging_byNextPrev) { $html = "<div style='padding:2px 5px 2px 5px;background-color:".$this->headBackgroundColor.";". "color:".$this->headForeColor.";width:".($this->width-10)."px;border:0px solid red;text-align:right;". "margin:10px 0px 0px 0px;'>"; $prevPage = true; $nextPage = true; if ($this->curPgIndex == 1) $prevPage = false; if ($this->curPgIndex == $this->totPages) $nextPage = false; if ($prevPage) $html .= "<a href=\"javascript:florDBgrid_action('pg',".($this->curPgIndex-1).");\" style='color:".$this->headForeColor.";'>". "< Prev</a> "; if($nextPage) $html .= "<a href=\"javascript:florDBgrid_action('pg',".($this->curPgIndex+1).");\" style='color:".$this->headForeColor.";'>". "Next ></a>"; } $html .= "</div>"; return $html; } private function prepAlphabetIndex() { $db = new flor_db_process(); $db->resultSet = $this->resultSet; $this->pgAlphaIndexKeys = array(""); while(1) { $row = $db->getRow2(); if (!$row) break; $tmpCellVal = $row[$this->pageByName_field]; $tmpChar = strtoupper(substr($tmpCellVal,0,1)); if (is_numeric($tmpChar) && !array_search("0-9",$this->pgAlphaIndexKeys)) array_push($this->pgAlphaIndexKeys, "0-9"); if (!array_search($tmpChar,$this->pgAlphaIndexKeys)) array_push($this->pgAlphaIndexKeys, $tmpChar); } } private function getAlphabetIndex_HTML() { $html = "<div style='padding:2px 5px 2px 5px;background-color:".$this->headBackgroundColor.";". "color:".$this->headForeColor.";width:".($this->width-10)."px;border:0px solid red;text-align:center;". "margin:10px 0px 0px 0px;'>"; $alphabets = preg_split('//', "ABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, PREG_SPLIT_NO_EMPTY); $chars = array("0-9"); $chars = array_merge($chars,$alphabets); foreach($chars as $char) { $linkStr = $char; if ($this->curPgAlphaIndex == $char || (is_numeric($this->curPgAlphaIndex) && $char=="0-9")) $linkStr = "<span style='font-weight:bold;font-size:1.4em;'>$linkStr</span>"; elseif (array_search($char,$this->pgAlphaIndexKeys)) $linkStr = "<a href=\"javascript:florDBgrid_action('pga','$char');\" style='color:".$this->headForeColor.";'>". $linkStr."</a>"; if ($char == "0-9") $html .= $linkStr." "; elseif($char =="Z") $html .= " ".$linkStr." "; else $html .= " ".$linkStr." "; } $html .= "</div>"; return $html; } private function getPaging_supportScripts() { $html = <<<END <input type=hidden name=flor_grid_a id=flor_grid_a value=""/> <input type=hidden name=flor_grid_aV id=flor_grid_aV value=""/> <script language="javascript"> <!--// function florDBgrid_action(action, value) { var F = document.forms['frmAction']; F.flor_grid_a.value = action; F.flor_grid_aV.value = value; F.submit(); } //--> </script> END; return $html; } private function initDataInfo() { if ($this->autoColumns) { if ($this->resultSet) { $this->colInfo = $this->resultSet->fetch_fields(); $this->columnCount = count($this->colInfo); for($i=0; $i<$this->columnCount; $i++) { $col = new Column(); $col->fieldName = $this->colInfo[$i]->name; $this->colSet[$i] = $col; } } } else { $this->columnCount = count($this->colSet); } } private function getDataHTML() { $tmpHTML = ""; $db = new flor_db_process(); $db->resultSet = $this->resultSet; $db->reset(); $gridHeaderComplete = false; if (!$gridHeaderComplete) { $tmpHTML = $this->getHeaderHTML(); $gridHeaderComplete = true; } if ($this->resultSet) { $this->rowCount = $this->resultSet->num_rows; if ($this->rowCount==0) $tmpHTML .= $this->getTableHTML("NODATA"); else { while($tmpRow = $db->getRow2()) { $this->curRowId++; if ($this->pageByName) { $tmpCellVal = $tmpRow[$this->pageByName_field]; if (!$tmpCellVal) continue; //skip row $tmpStr1 = strtoupper(substr($tmpCellVal,0,1)); if (is_numeric($tmpStr1) && $this->curPgAlphaIndex == "0-9") { //is numeric value } elseif ($tmpStr1 != strtoupper($this->curPgAlphaIndex)) continue; //skip row } elseif($this->paging) { if ($this->curPgIndex == 1) $lowRowID = 0; else $lowRowID = (($this->curPgIndex-1) * $this->paging_NoOfRows)+1; $hiRowID = $this->curPgIndex * $this->paging_NoOfRows; if ($this->curRowId >= $lowRowID && $this->curRowId <= $hiRowID) { //allow row.. it belongs to page } else continue; //skip row. } $tmpHTML .= $this->getDataRowHTML($tmpRow); } } } else $tmpHTML .= $this->getTableHTML("NODATA"); //echo "*".$this->rowCount."*".$this->columnCount."*"; //print_r($this->colInfo); return $tmpHTML; } private function getAddNewRowHTML() { ///if ($this->resultSet) return ""; } private function getDataRowHTML($rowData) { $t1 = "\n<tr>"; $this->curColId = -1; $cells = array(); foreach($this->colSet as $colItem) { $this->curColId++; if ($colItem->fieldName!=null) $cellContent = $rowData[$colItem->fieldName]; else $cellContent = ""; //row item bound event //call data_rowItem_bound event handler $cell = new cell(); $cell->rowId = $this->curRowId; $cell->colId = $this->curColId; $cell->dataKey = $rowData[$this->dataKey]; $cell->HTMLContent = $cellContent; array_push($cells, $cell); } if ($this->onRowItem_Bound != null) { $tmpFn = $this->onRowItem_Bound; $cells = $tmpFn($cells); //passing a row.. for each row this entire fn is called. } $j=-1; foreach($this->colSet as $colItem) { $j++; $t1 .= "\n<td style=\"".$this->fontStyle."\">\n". $cells[$j]->HTMLContent. "\n</td>"; } $t1 .= "\n</tr>"; return $t1; } private function getHeaderHTML() { if (!$this->colSet) return ""; $t1 = "\n<tr>"; $headStyle = "background-color:".$this->headBackgroundColor.";color:". $this->headForeColor.";"; foreach($this->colSet as $colItem) { if ($colItem->displayName != null) $tmpText = $colItem->displayName; else $tmpText = $colItem->fieldName; if ($colItem->width!=null) $colW = "width='".$colItem->width."' "; else $colW = ""; $t1 .= "\n<td $colW style=\"font-weight:bold;".$this->fontStyle.$headStyle."\">\n". $tmpText. "\n</td>"; } $t1 .= "\n</tr>"; return $t1; } private function getTableHTML($code) { switch(strtoupper($code)) { case "OPEN": $pad = $this->cellPadding; $bw = $this->borderWidth; $bc = $this->borderColor; $bs = $this->borderStyle; return "<table border=$bw width=".$this->width." cellpadding=$pad ". "style=\"margin:10px 0px 10px 0px;border-collapse:collapse;border-style:$bs;\" borderColor='$bc'>"; break; case "CLOSE": return "\n</table>"; break; case "NODATA": if ($this->columnCount>1) $colspan= "colspan='".$this->columnCount."' "; else $colspan=" "; return "\n<tr>\n<td style='font-weight:bold;border:1px dotted gray;padding:4px;". $this->fontStyle."' $colspan>No Data</td>\n</tr>"; break; case "ALPHA_INDEX": $this->prepAlphabetIndex(); $tmpHTML = $this->getAlphabetIndex_HTML(); if ($this->columnCount>1) $colspan= "colspan='".$this->columnCount."' "; else $colspan=" "; $tmpHTML = "\n<tr>\n<td style='font-weight:bold;border:1px dotted gray;padding:4px;". $this->fontStyle."' $colspan>".$tmpHTML."</td>\n</tr>"; return $tmpHTML; break; } } } class column{ public $displayName = null; public $fieldName = null; public $dataFormat = null; public $width = null; public $backgroundColor = null; } class cell{ public $rowId = null; public $colId = null; public $dataKey = null; public $HTMLContent = null; } ?> /* ----------------------------------------------- * CLASS : flor_db_process * * Author: Harish Palaniappan, Floresense.com * Ver: 1.2 (earlier DBProcess ver 1.0) * Last Updated: Jan 2008 * License: LGPL License -> http://www.gnu.org/licenses/lgpl.html * License in brief: You are free to use/modify/redistribute this script. * Keep this comment block intact. * ---------------------------------------------- * * add your own comments here.. * */ class flor_db_process{ var $query = ""; var $isFetchMode = false; var $isUpdateMode = false; var $isInsertMode = false; var $resultSet = null; var $affRows=0; var $numRows=0; var $fieldCount = 0; var $errStr = ""; var $hasErr = false; var $con = null; var $isDBConnected = false; function DBprocess2() { $this->openCon(); } function openCon() { $this->closeCon(); global $db; $dbname =""; $db_Domain; $dbname = $cmtDB; //connecting with mysqli // $this->con = mysqli_init(); /* set connection options */ $this->con->options(MYSQLI_INIT_COMMAND, "SET AUTOCOMMIT=0"); $this->con->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5); /* connect to server */ error_reporting(0); if (!defined("DB_DOMAIN") || !defined("DB_USER") || !defined("DB_PASS") || !defined("DB_NAME")) exit("include common.php?.. db connect info missing for DBProcess2"); $this->con->real_connect(DB_DOMAIN,DB_USER,DB_PASS,DB_NAME,DB_PORT); error_reporting(E_ALL ^ E_NOTICE); if (mysqli_connect_errno()) { $this->hasErr = true; $this->errStr = "Connect failed: \n" . mysqli_connect_error(); exit($this->errStr); } else { $this->hasErr=false; $this->isDBConnected=true; } } //function to close db connection function closeCon() { //disconnecting with mysqli // if ($this->isDBConnected) $this->con->close(); $this->con=null; } function processQuery() { global $errReportingType; if (!$this->query) return null; if (!$this->con) $this->openCon(); error_reporting(0); $tmpResult = $this->con->query($this->query); error_reporting($errReportingType); if ($this->con->error=="") { $this->hasErr = false; if ($this->isFetchMode) { $this->resultSet = $tmpResult; if ($tmpResult) { $this->numRows = $tmpResult->num_rows; $this->fieldCount = $this->field_count; } else $this->numRows = 0; } elseif($this->isUpdateMode) { $this->affRows = $this->con->affected_rows; } elseif($this->isInsertMode) { $this->affRows = $this->con->affected_rows; return $this->con->insert_id; } } else { $this->hasErr = true; $this->errStr = $this->con->error; if (APPMODE!="live") $this->errStr = $this->query."___".$this->errStr; if ($this->isInsertMode) return null; } } function fetchQuery($qry) { $this->query = $qry; $this->isFetchMode = true; $this->isUpdateMode = false; $this->isInsertMode =false; $this->processQuery(); } function insertQuery($qry) { $this->query = $qry; $this->isFetchMode = false; $this->isUpdateMode = false; $this->isInsertMode = true; $insert_id = $this->processQuery(); return $insert_id; } function updateQuery($qry) { $this->query = $qry; $this->isFetchMode = false; $this->isUpdateMode = true; $this->isInsertMode = false; $this->processQuery(); } function getRow() { $row = $this->resultSet->fetch_row(); if (isset($row)) return $row; else return null; } function getRow2() { $row = $this->resultSet->fetch_assoc(); if (isset($row)) return $row; else return null; } function reset() { mysqli_data_seek($this->resultSet,0); } } ?> Link to comment https://forums.phpfreaks.com/topic/130532-datagrid-class/ Share on other sites More sharing options...
PFMaBiSmAd Posted October 29, 2008 Share Posted October 29, 2008 The code was written using short open tags <? and <?= Which is sad really because code that is intended to be distributed must use full php tags <?php and <?php echo so that is will be parsed on all servers. The fix is to go through the code and change any <? to <?php and any <?= to <?php echo Link to comment https://forums.phpfreaks.com/topic/130532-datagrid-class/#findComment-677204 Share on other sites More sharing options...
munky334 Posted October 30, 2008 Author Share Posted October 30, 2008 thank you for this , my script appears to be running now but not displaying the results of the table. see image[/img]. regards. [attachment deleted by admin] Link to comment https://forums.phpfreaks.com/topic/130532-datagrid-class/#findComment-678198 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.