require_once(dirname(__FILE__).'/db/table.php');
require_once(dirname(__FILE__).'/db/field.php');
if (!defined('DB_ERR_PRINT')) define('DB_ERR_PRINT',false);
-if (!defined('DB_HTML_BUTTON_ADD')) define('DB_HTML_BUTTON_ADD','<input type="submit" class="button" name="edit" value="Add"/>');
+if (!defined('DB_HTML_FORM_BUTTONS')) define('DB_HTML_FORM_BUTTONS',''
+ .'<input type="submit" class="button" value="GO"/>'
+ .'<a class="button" href="#" onclick="return nb.form_clear(this.parentElement)">X</a>'
+ .'<input type="submit" class="button" name="edit" value="Add"/>'
+);
+if (!defined('DB_HTML_BUTTON_ADD')) define('DB_HTML_BUTTON_ADD','<input type="submit" class="button" name="edit" value="Add"/>');
if (!defined('DB_HTML_BUTTON_SUBMIT')) define('DB_HTML_BUTTON_SUBMIT','<input type="submit" class="button" value="GO"/>');
class db {
function html_menu($table=null) {
$html = ' onchange="this.parentElement.submit()"';
- $r = '<form class="db menu border rad" method="get">'.PHP_EOL;
+ $r = '<form class="db menu border rad" method="get" action="">'.PHP_EOL;
if (!empty($table)) foreach ( array_keys($table->fields()) as $k ) {
));
// Bye
- $r .= DB_HTML_BUTTON_ADD;
- $r .= DB_HTML_BUTTON_SUBMIT;
+ $r .= DB_HTML_FORM_BUTTONS;
$r .= '</form>'.PHP_EOL;
return $r;
}
<?php
require_once(dirname(__FILE__).'/../functions.php');
if (!defined('DB_HTML_EDIT')) define('DB_HTML_EDIT','Edit');
+if (!defined('DB_HTML_DELETE')) define('DB_HTML_DELETE','Delete');
if (!defined('DB_HTML_NAV_TOP')) define('DB_HTML_NAV_TOP','<div align="center" class="nav" id="nav_top"></div>'.PHP_EOL);
class table {
return $this->fields;
}
- function url_edit($values=null,$sep='&') {
+ function url_keys($values=null,$params=array(),$sep='&') {
if ($values === null) $values = $this->db->p();
- $url_edit = array();
+ $url = is_array($params) ? $params : array($params);
foreach ($this->fields_keys() as $name => $spec) {
- $url_edit[] = $name . '=' .urlencode($values[$name]);
+ if (isset($values[$name]) and strcmp($values[$name],'')!=0)
+ $url[] = $name . '=' .urlencode($values[$name])
+ ;
}
- $url_edit[] = 'edit=1';
- return $url_edit ? '?table='.$this->db->p('table').$sep.join($sep,$url_edit) : '';
-
+ return $url ? '?table='.$this->db->p('table').$sep.join($sep,$url) : '';
}
function fields_keys(&$others=array()) {
echo ''
.'<div class="db buttons">'
.'<input type="submit" name="update"/>'
- .'<input type="text" name="table" value="'.$this->db->p('table').'"/>'
+ .'<input type="hidden" name="table" value="'.$this->db->p('table').'"/>'
.'<input type="reset" />'
.( empty($_SERVER['HTTP_REFERER']) ? '' : '<input type="button" onclick="document.location=document.referrer" value="Cancel" />')
.'</div>'.PHP_EOL
}
- function where_criterias($values,$logic='AND') {
+ function where_criterias($values,$logic='') {
$having = $where = array();
+ if (empty($logic)) $logic = 'AND';
foreach ($this->fields() as $k => $spec) {
}
$sql = '';
- if ($where) $sql .= ' WHERE '.join(' '. $logic.' ',$where);
- if ($having) $sql .= ' HAVING '.join(' '. $logic.' ',$having);
+ if ($where) $sql .= ' WHERE '.join(" $logic ",$where);
+ if ($having) $sql .= ' HAVING '.join(" $logic ",$having);
return $sql;
}
}
- if ($opt['is_html']) array_unshift($row,'<a class="edit button" href="'.$this->url_edit($row,'&').'">'.DB_HTML_EDIT.'</a>');
+ if ($opt['is_html']) {
+ array_unshift($row,'<a class="edit button" href="'.$this->url_keys($row,'edit=1').'">'.DB_HTML_EDIT.'</a>');
+ array_push($row,'<a class="delete button" href="'.$this->url_keys($row,'delete=1').'">'.DB_HTML_DELETE.'</a>');
+ }
+
echo $this->{"rows_rec_$format"}($row);
}
$colspan = 0;
if (DB_HTML_EDIT) $colspan++;
+ if (DB_HTML_DELETE) $colspan++;
if (DB_HTML_NAV_TOP) $html .= '<thead><tr>'
. '<td colspan="'.(count($this->fields())+$colspan).'">' . DB_HTML_NAV_TOP . '</td>'
. '</tr></thead>'.PHP_EOL
;
$html .= '<tr class="'.$this->name.' row bold">';
- $html .= '<th class="'.DB_HTML_EDIT.'"></th>';
+ if (DB_HTML_EDIT) $html .= '<th class="'.DB_HTML_EDIT.'"></th>';
foreach (array_keys($this->fields()) as $f) {
$html .= '<th class="'.$f.'">'.$this->url_sort($f).'</th>';
}
-
+ if (DB_HTML_DELETE) $html .= '<th class="'.DB_HTML_DELETE.'"></th>';
$html .= '</tr>'.PHP_EOL.'<tbody>'.PHP_EOL;
return $html;
}
function delete($hvalues) {
- $where = str_replace(' LIKE ','=',$this->where_criterias($values));
+ $where = str_replace(' LIKE ','=',$this->where_criterias($hvalues));
if (!$where) return 0;
$sql = 'DELETE FROM ' . $this->sql_name() . $where;
debug($sql);
- $execute = $this->db->conn($sql);
+ $execute = $this->db->query($sql);
if (!$execute) return err('PDO::errorInfo(): ' .join(' ', $this->db->conn->errorInfo()) .PHP_EOL);
return $execute;
}