📄 datagrid.class.inc
字号:
<?php/** * @copyright Intermesh 2003 * @author Merijn Schering <mschering@intermesh.nl> * @version $Revision: 1.11 $ $Date: 2005/06/16 14:50:01 $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. * @package Framework * @subpackage Controls *//** * Creates a table of a database table that you can use to insert and update rows * * @package Framework * @subpackage Controls * * @access public */class datagrid extends db{ var $table_name = ''; var $form_name = ''; var $fields = array(); var $id_field = 0; var $query = ''; var $start_row = 0; var $max_rows = 0; var $row_count = 0; var $delete_tables = array(); var $field_values = array(); function datagrid($form_name, $table_name, $id_field_name='', $query='', $delete_tables='') { if($delete_tables != '') { $this->delete_tables = $delete_tables; } $this->db(); $this->table_name = $table_name; $this->form_name = $form_name; $this->id_field_name = $id_field_name; $this->query = $query; $this->start_row = isset($_POST[$this->table_name]['start_row']) ? $_POST[$this->table_name]['start_row'] : '0'; $this->max_rows = isset($_POST[$this->table_name]['max_rows']) ? $_POST[$this->table_name]['max_rows'] : $_SESSION['GO_SESSION']['max_rows_list']; } function set_field_value($name, $value) { $this->field_values[$name] = $value; } function print_datagrid($columns) { return $this->header($columns).$this->data().$this->footer(); } function header($columns) { if(isset($_POST[$this->table_name]['task'])) { if($_POST[$this->table_name]['task'] == 'update') { $this->update(); } if($_POST[$this->table_name]['task'] == 'insert') { $this->insert(); } if(isset($_POST[$this->table_name]['delete_row_id']) && $_POST[$this->table_name]['delete_row_id'] > 0) { $this->delete(smart_addslashes($_POST[$this->table_name]['delete_row_id'])); } } $headers = '<input type="hidden" name="'.$this->table_name.'[task]" value="" />'. '<input type="hidden" name="'.$this->table_name.'[delete_row_id]" value="0" />'. '<input type="hidden" name="'.$this->table_name.'[start_row]" value="'.$this->start_row.'" />'. '<input type="hidden" name="'.$this->table_name.'[max_rows]" value="'.$this->max_rows.'" />'. '<table class="go_table"><tr>'; for($i=0;$i<count($columns);$i++) { $headers .= '<th>'.$columns[$i].'</td>'; } $headers .= '<th> </td></tr>'; return $headers; } function footer() { $footer = $this->pagination(); $footer .= '</table><br />'; $footer .= '<input type="button" class="button" style="width: 100px;" '. ' value="'.$GLOBALS['cmdApply'].'" onclick="document.'. $this->form_name.'.elements[\''.$this->table_name.'[task]\'].value=\'update\';document.'. $this->form_name.'.submit();" '. 'onmouseover="javascript:this.className=\'button_mo\';" '. 'onmouseout="javascript:this.className=\'button\';" />'. ' '. '<input type="button" class="button" style="width: 100px;" '. ' value="'.$GLOBALS['cmdInsert'].'" onclick="document.'. $this->form_name.'.elements[\''.$this->table_name.'[task]\'].value=\'insert\';document.'. $this->form_name.'.submit();" '. 'onmouseover="javascript:this.className=\'button_mo\';" '. 'onmouseout="javascript:this.className=\'button\';" />'; $footer .= '<script type="text/javascript">'. 'function delete_row(id, text)'. '{if(confirm(text))'. '{document.'.$this->form_name.'.elements[\''.$this->table_name.'[delete_row_id]\'].value=id;'. 'document.'.$this->form_name.'.submit();}}'. 'function change_list(start_row, max_rows)'. '{document.'.$this->form_name.'.elements[\''.$this->table_name.'[start_row]\'].value=start_row;'. 'document.'.$this->form_name.'.elements[\''.$this->table_name.'[max_rows]\'].value=max_rows;'. 'document.'.$this->form_name .'.submit();}</script>'; return $footer; } function pagination() { global $GO_THEME, $cmdPrevious, $cmdNext, $cmdShowAll; $links = ''; $max_links=10; if ($this->max_rows != 0) { if ($this->row_count > $this->max_rows) { $links = '<table class="NavLinks"><tr><td>'; $next_first = $this->start_row+$this->max_rows; $previous_first = $this->start_row-$this->max_rows; if ($this->start_row != 0) { $links .= '<a href="javascript:change_list(0, '.$this->max_rows.');"><<</a> '; $links .= '<a href="javascript:change_list('.$previous_first.', '.$this->max_rows.');">'.$cmdPrevious.'</a> '; }else { $links .= '<font color="#cccccc"><< '.$cmdPrevious.'</font> '; } $start = ($this->start_row-(($max_links/2)*$this->max_rows)); $end = ($this->start_row+(($max_links/2)*$this->max_rows)); if ($start < 0) { $end = $end - $start; $start=0; } if ($end > $this->row_count) { $end = $this->row_count; } if ($start> 0) { $links .= '... '; } for ($i=$start;$i<$end;$i+=$this->max_rows) { $page = ($i/$this->max_rows)+1; if ($i==$this->start_row) { $links .= '<b><i>'.$page.'</i></b> '; }else { $links .= '<a href="javascript:change_list('.$i.', '.$this->max_rows.');">'.$page.'</a> '; } } if ($end < $this->row_count) { $links .= '... '; } $last_page = floor($this->row_count/$this->max_rows)*$this->max_rows; if ($this->row_count > $next_first) { $links .= '<a href="javascript:change_list('.$next_first.', '.$this->max_rows.');">'.$cmdNext.'</a> '; $links .= '<a href="javascript:change_list('.$last_page.', '.$this->max_rows.');">>></a>'; }else { $links .= '<font color="#cccccc">'.$cmdNext.' >></font>'; } $links .= '</td><td align="right"><a class="normal" href="javascript:change_list(0, 0);">'.$cmdShowAll.'</a></td></tr></table>'; $links = '<tr height="20"><td colspan="99">'.$links.'</td></tr>'; } return $links; } } function data() { global $GO_THEME, $strDeleteRow, $strNoData; $sql = $this->query; if($this->max_rows > 0) { $this->query($sql); $this->row_count = $this->num_rows(); } if($this->max_rows > 0) { $sql .= " LIMIT ".$this->start_row.",".$this->max_rows; $this->query($sql); }else { $this->query($sql); $this->row_count = $this->num_rows(); } $data = ''; if($this->row_count > 0) { $i = 0; while($this->next_record(MYSQL_ASSOC)) { $data .= '<tr>'; foreach($this->Record as $field => $value) { if($field == $this->id_field_name) { $id = $value; $data .= '<input type="hidden" name="'.$this->table_name.'[data]['.$i.']['.$field.']" value="'.$value.'" />'; }else { $data .= '<td><input type="text" name="'.$this->table_name.'[data]['.$i.']['.$field.']" class="textbox" value="'.$value.'" /></td>'; } } foreach($this->field_values as $fieldname => $value) { $data .= '<input type="hidden" name="'.$this->table_name.'[data]['.$i.']['.$fieldname.']" value="'.$value.'" />'; } $data .= '<td><a href=\'javascript:delete_row("'.$id. '","'.htmlspecialchars($strDeleteRow, ENT_QUOTES).'")\'"><img src="'. $GO_THEME->images['delete'].'" border="0"></a></td>'; $data.= "</tr>\n"; $i++; } }else { $data .= '<tr><td colspan="99">'.$strNoData.'</td></tr>'; } return $data; } function update() { if(isset($_POST[$this->table_name]['data'])) { for($i=0;$i<count($_POST[$this->table_name]['data']);$i++) { $this->update_row($this->table_name, $this->id_field_name, $_POST[$this->table_name]['data'][$i]); } } } function insert() { $this->update(); $next_id = $this->nextid($this->table_name); $sql = "INSERT INTO `".$this->table_name."` (".$this->id_field_name; $values = "VALUES ('$next_id'"; foreach($this->field_values as $fieldname => $value) { $sql .= ", $fieldname"; $values .= ",'$value'"; } $sql .=") ".$values.");"; return $this->query($sql); } function delete($id) { $sql = "DELETE FROM `".$this->table_name."` WHERE ".$this->id_field_name."='$id'"; $this->query($sql); for($i=0;$i<count($this->delete_tables);$i++) { $sql = "DELETE FROM `".$this->delete_tables[$i]['name']."` WHERE `".$this->delete_tables[$i]['id_field']."`='$id'"; $this->query($sql); } }}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -