]> git.nbdom.net Git - nb.git/commitdiff
dbq
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Tue, 20 Dec 2016 11:16:33 +0000 (11:16 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Tue, 20 Dec 2016 11:16:33 +0000 (11:16 +0000)
lib/php/db/table.php

index 1edabc76cd6152ade7c80f70f5dfdaa56472beb4..fa79c5907264045edc97216f8e90e62a86716f9a 100644 (file)
@@ -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