]> git.nbdom.net Git - nb.git/commitdiff
db fix bugs
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Fri, 24 Jul 2015 23:45:15 +0000 (00:45 +0100)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Fri, 24 Jul 2015 23:45:15 +0000 (00:45 +0100)
lib/css/db.css
lib/php/db.php
lib/php/db/field.php
lib/php/db/table.php

index c30e33cff79869580afc5afa67a4115f50f8536f..ba3bc96800e775cd7a0cedd58be348a318c32332 100644 (file)
@@ -7,7 +7,10 @@ border: solid  1px red !important;
 #db {
 }
 
-#db .rows {
+/*
+  List
+*/
+.rows {
   margin: 0 auto;
 }
 
@@ -17,6 +20,13 @@ border: solid  1px red !important;
 }
 
 .rows ul .edit { float: right; }
+.rows tr.nav td { border: none; }
+
+td.name,
+td.email,
+td.phone {
+  white-space: nowrap;
+}
 
 /*
   Menu
@@ -25,11 +35,35 @@ border: solid  1px red !important;
   margin: 0 auto;
   padding: 0.8em 0.8em 0.8em 0.5em;
   padding: 0.5em 0.8em;
+  /*
   display: table;
+  */
+}
+
+.db.menu hr {
+  clear: both;
+  margin: 0;
+  padding: 0.5px 0;
+  border: none;
+  background-color: #f4f4f4;
+}
+
+.db.menu .button,
+.db.menu input,
+.db.menu select,
+.db.menu label
+{
+  margin: 0.3em 0.3em 0.3em 0;
 }
 
-.db.menu label {
-  margin: 0.1em 0.1em 0 0.5em;
+.db.menu span.i,
+.db.menu span.i label {
+  float: left;
+}
+.db.menu span.i label {
+  display: inline-block;
+  width: 4em;
+  text-align: right;
 }
 
 .db.menu label:after {
@@ -43,6 +77,18 @@ ul.db.menu {
   max-width: 7em;
 }
 
+li.tables {
+  float: left;
+}
+
+li.tables ul {
+  text-transform: capitalize;
+}
+
+li.tables li {
+  font-size: 0.8em;
+}
+
 /*
   Edit
 */
@@ -73,24 +119,7 @@ form.db.edit .buttons {
 }
 
 form.db.edit .buttons input {
+border: solid 1px red;
   width: auto;
   float: none;
 }
-
-li.tables {
-  float: left;
-}
-
-li.tables ul {
-  text-transform: capitalize;
-}
-
-li.tables li {
-  font-size: 0.8em;
-}
-
-td.name,
-td.email,
-td.phone {
-  white-space: nowrap;
-}
index 9e6f1a3a87a49e4cb8b753baeeb697612a3c5c0d..9546c7f63d752f4df5709f293329e2f8d2b09825 100644 (file)
@@ -10,12 +10,15 @@ require_once(dirname(__FILE__).'/functions.php');
 require_once(dirname(__FILE__).'/db/table.php');
 require_once(dirname(__FILE__).'/db/field.php');
 if (!defined('DB_HTML_FORM_BUTTONS')) define('DB_HTML_FORM_BUTTONS',''
-  .'<input type="submit" class="button" name="edit" value="Add"/>'
-  .'<a class="button" href="#" onclick="return nb.form_clear(this.parentElement)">X</a>'
+  .'<input type="button" class="button" value="Add" onclick="this.setAttribute(\'type\',\'submit\');this.setAttribute(\'name\',\'edit\')?1:1"/>'
+  #.'<input type="button" class="button" value="Add" onclick="this.setAttribute(\'name\',\'edit\');this.parentElement.submit()?0:0"/>'
+  #.'<input type="button" class="button" onclick="return nb.form_clear(this.parentElement)" value="X"/>'
+  .'<a class="button" href="#" onclick="nb.form_clear(this.parentElement)?0:0">X</a>'
   .'<input type="submit" class="button" value="GO"/>'
 );
-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"/>');
+#if (!defined('DB_HTML_BUTTON_SUBMIT')) define('DB_HTML_BUTTON_SUBMIT','<input type="submit" class="button" value="GO"/>');
+#if (!defined('DB_HTML_BUTTON_ADD'))    define('DB_HTML_BUTTON_ADD','<a class="button" href="?" onclick="nb.form_clear(this.parentElement) ? 0: 0">Add</a>');
+#if (!defined('DB_HTML_BUTTON_ADD'))    define('DB_HTML_BUTTON_ADD','<input type="submit" class="button" value="Add" onclick="this.setAttribute(\'name\',\'edit\')?0:0"/>');
 
 class db {
 
@@ -100,13 +103,27 @@ class db {
     return $this->conn->exec($sql);
   }
 
-  function query($sql,$o='') {
-    return $this->conn->query($sql);
+  function query($sql) {
+  # See: http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers
+
+    try {
+      $r = $this->conn->query($sql);
+    } catch (PDOException $e) {
+      err(array("Db.query()",$e->getMessage(),$sql));
+      $r = null;
+    }
+
+    return $r;
+
   }
 
-  function query2v($sql) {
-    $r = $this->conn->query($sql,PDO::FETCH_COLUMN,0);
-    return $r ? $r->fetch() : $r;
+  function row($sql,$sep=' ') {
+    #$sql = "SELECT * FROM addr LIMIT 1";
+    $query = $this->query($sql);
+    $result = $query->fetch(PDO::FETCH_NUM);
+    if (!is_array($result)) return $result;
+    return join($sep,$result);
+    return join($sep,$query->fetch(PDO::FETCH_NUM));
   }
 
   function query2a($sql) {
@@ -218,15 +235,22 @@ EOF;
     $html = ' onchange="this.parentElement.submit()"';
     $r = '<form class="db menu" method="get" action="">'.PHP_EOL;
 
-    if (!empty($table)) foreach ( array_keys($table->fields()) as $k ) {
+    if (!empty($table)) {
+      foreach ( array_keys($table->fields()) as $k ) {
 
-      $v = $this->p($k);
+        $v = $this->p($k);
 
-      $r .= ''
-        . '<label>'.prettyText($k).'</label>'
-        . '<input type="text" id="'.$k.'" name="'.$k.'" value="'.$v.'" />'
-      ;
+        $r .= ''
+          .'<span class="i">'
+          . '<label>'.prettyText($k)
+          .'</label>'
+          . '<input type="text" id="'.$k.'" name="'.$k.'" value="'.$v.'" />'
+          .'</span>'
+        ;
 
+      }
+      #$r .= '<span class=""></span>';
+      $r .= '<hr/>';
     }
 
     /// Tables
index 7f947e20d30e47edc4e8e614d60f39aee687e916..0c03d2229703d9916ad7f9eec743aa3ace248303 100644 (file)
@@ -19,7 +19,7 @@ class field {
 
   function html_edit($value) {
 
-    echo '<label for="'.$this->name.'">'.htmlspecialchars($this->name).'</label>'
+    return '<label for="'.$this->name.'">'.htmlspecialchars($this->name).'</label>'
     .'<input name="'.$this->name.'" id="'.$this->name.'" value="'.htmlspecialchars($value).'" />'
     .PHP_EOL;
 
index cbcee08d375d7bf8675f32a8b4f5595abf9874e2..513c0b9b5e93c9b945b55a3579de804379019938 100644 (file)
@@ -31,6 +31,10 @@ class table {
     'debug',
   );
 
+  function __destruct() {
+    foreach (get_object_vars($this) as $k=>$v) { unset($this->$k); };
+  }
+
   function __construct($name,$opt=array()) {
 
     // Connection
@@ -72,7 +76,8 @@ class table {
     } else {
       err('table.sql(): Unknow db type: '.$this->db->type);
     }
-    $this->sql = $this->db->query($sql);
+    $this->sql = $this->db->row($sql);
+    #bye($this->sql);
     return $this->sql;
   }
 
@@ -244,7 +249,8 @@ FROM pg_catalog.pg_attribute a WHERE a.attrelid = (SELECT c.oid FROM pg_catalog.
 
       foreach ($this->fields() as $name => $attr) {
         $field = new field($name,$attr);
-        $field->html_edit( (is_array($row) and array_key_exists($name,$row) ) ? $row[$name] : $attr['default']);
+        echo $field->html_edit( (is_array($row) and array_key_exists($name,$row) ) ? $row[$name] : $attr['default']);
+        unset($field);
       }
     }
 
@@ -358,6 +364,7 @@ FROM pg_catalog.pg_attribute a WHERE a.attrelid = (SELECT c.oid FROM pg_catalog.
   }
 
   function form_criterias($opt=array()) {
+  // Legacy from sem - NB 25.07.15
     
     echo '<form class="criteria" method="get" action="">'.PHP_EOL;
     echo '<div class="small help">Use: '.join(' | ',$this->db->help_criterias).'</div>'.PHP_EOL;
@@ -412,12 +419,11 @@ FROM pg_catalog.pg_attribute a WHERE a.attrelid = (SELECT c.oid FROM pg_catalog.
 
     foreach ($this->fields() as $k => $spec) {
 
-      $field = new field($k,$spec);
-
       // No empty values
       $v = isset($values[$k]) ? $values[$k] : null;
       if (strcmp($v,'')==0 or $v=='!' or $v=='~') continue;
 // NB 03.07.15       $number = preg_match('/int|float|number|currency/',$spec['type']) ? 1 : 0;
+      $field = new field($k,$spec);
       $number = $field->is_num();
 
       // Equal / Not Equal
@@ -475,7 +481,8 @@ FROM pg_catalog.pg_attribute a WHERE a.attrelid = (SELECT c.oid FROM pg_catalog.
         $where[] = "$k$equal$v";
       }
 
-    }
+      unset($field);
+    } #foreach fields
 
     $sql = '';
     if ($where) $sql .= ' WHERE '.join(" $logic ",$where);
@@ -716,18 +723,23 @@ FROM pg_catalog.pg_attribute a WHERE a.attrelid = (SELECT c.oid FROM pg_catalog.
     $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
+    if (DB_HTML_NAV_TOP) $html .= ''#'<thead>'.PHP_EOL
+      .'<tr class="nav top">'
+        . '<td colspan="'.(count($this->fields())+$colspan).'">' . DB_HTML_NAV_TOP . '</td>'
+      . '</tr>'#.'</thead>'.PHP_EOL
+    ;
+
+    $html .= ''#'<tbody>'.PHP_EOL
+      .'<tr class="'.$this->name.' row">'
     ;
 
-    $html .= '<tr class="'.$this->name.' row bold">';
     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;
+    $html .= '</tr>'.PHP_EOL;#.'<tbody>'.PHP_EOL;
 
     return $html;
   }
@@ -745,14 +757,19 @@ FROM pg_catalog.pg_attribute a WHERE a.attrelid = (SELECT c.oid FROM pg_catalog.
   }
 
   function rows_end_table($opt=array()) {
-    $html = PHP_EOL.'</tbody>'.PHP_EOL;
-
-    if (!empty($opt['count'])) $html .= '<tfoot><tr>'
-      . '<td colspan="'.(count($this->fields())+1).'">'
-        . $this->nav($opt['count'],$opt['tot'],$opt['limit'])
+    #$html = '</tbody>'.PHP_EOL;
+
+    if (!empty($opt['count'])) $html .= ''#'<tfoot>'.PHP_EOL
+      .'<tr class="nav bottom">'
+      . '<td colspan="'.(
+        count($this->fields())
+        +(DB_HTML_EDIT ? 1 :0)
+        +(DB_HTML_DELETE ? 1 :0)
+      ).'">'
+      . $this->nav($opt['count'],$opt['tot'],$opt['limit'])
       . '</td>'
-     . '</tr></tfoot>'.PHP_EOL
-    ;
+      . '</tr>'.PHP_EOL
+    ;#.'</tfoot>'.PHP_EOL;
 
     $html .= '</table>'.PHP_EOL;
     return $html;