From 7b2b880308c69bbef53951e95a7b6d001bbcd2f0 Mon Sep 17 00:00:00 2001 From: Nicolas Boisselier Date: Tue, 20 Dec 2016 11:16:33 +0000 Subject: [PATCH] dbq --- lib/php/db/table.php | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/lib/php/db/table.php b/lib/php/db/table.php index 1edabc76..fa79c590 100644 --- a/lib/php/db/table.php +++ b/lib/php/db/table.php @@ -447,8 +447,6 @@ Class Table extends nb { if ($add and !preg_match('/^(null)?$/',$field->default)) $row[$name] = $field->default; elseif(!isset($row[$name])) $row[$name] = ''; echo $field->html_edit($row[$name] -# NB 18.08.15 (! $add and array_key_exists($name,$row) ) ? $row[$name] : $field->default - #,( $orig[$name] === $row[$name] ? '' : 'password' ) ); } @@ -612,7 +610,7 @@ Class Table extends nb { // Text } elseif (preg_match('/text|char|blob/',$field->type) - or !preg_match('/^\d+(\.\d*)?$/',$v) # text criteria value + or ($v!='null' and !preg_match('/^\d+(\.\d*)?$/',$v)) # text criteria value ) { if (strtolower($v)=='null') $v = ''; @@ -634,6 +632,7 @@ Class Table extends nb { // Integer if ($number) { if (strtolower($v)=='null') $v = '0'; + #$k = "COLAESCE($k,0)"; // Date, Time } else { @@ -644,11 +643,23 @@ Class Table extends nb { } - if (preg_match("/(LIKE|$regexp) ..$/","$equal$v")) { - $k = "COALESCE($k,".$this->db()->quote('').")"; + if (preg_match("/(LIKE|$regexp) ..$/","$equal$v") and $field->null) { +# NB 20.12.16 $k = "COALESCE($k,".$this->db()->quote('').")"; + $k = 'COALESCE('.$field->sql_name().','.$this->db()->quote('').")"; + } elseif ($field->extras) { + $k = $this->extras[$k]->sql_name(); + + } elseif ($number and $field->null) { + $k = 'COALESCE('.$field->sql_name().",0)"; + } elseif (!$number and $field->null) { + $k = 'COALESCE('.$field->sql_name().",'')"; + } else { + $k = $field->sql_name(); + } # having, denorm, EMPTY + /* $extra_where = (string)$this->db()->conf_type('extra_where'); if ($extra_where == 'having' and $field->extras) { $having[] = $this->extras[$k]->sql_name()."$equal$v"; @@ -658,9 +669,22 @@ Class Table extends nb { } elseif ($field->extras) { $where[] = $this->extras[$k]->sql_name()."$equal$v"; + } else { $where[] = $field->sql_name()."$equal$v"; } + */ + + if ($field->extras) { + $extra_where = (string)$this->db()->conf_type('extra_where'); + if ($extra_where == 'having') { + $having[] = $k->sql_name()."$equal$v"; + } else { + $where[] = $k->sql_name()."$equal$v"; + } + } else { + $where[] = "$k$equal$v"; + } } #foreach fields -- 2.47.3