Display duplicate field names properly for reports, etc.
authorchriskl <chriskl>
Sun, 18 May 2003 11:53:27 +0000 (11:53 +0000)
committerchriskl <chriskl>
Sun, 18 May 2003 11:53:27 +0000 (11:53 +0000)
BUGS
classes/database/Postgres.php
display.php

diff --git a/BUGS b/BUGS
index b5455233c7940bbc706a96600259590e2d489f67..19b195f7bec8ca90dbc4ae64d18bc87080feb790 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1,3 +1,2 @@
-* Browsing reports with two identical column names is broken.
 * Lots more printVal()ing needs to be done.  Whenever displaying user data, 
   it should use $misc->printVal($var) instead of htmlspecialchars($var).
index 4686544f402788e6fc10cff8995c7952df2e1bcd..616f6a188cc491f478d1cacbd25d0b7d33dccd0d 100755 (executable)
@@ -4,7 +4,7 @@
  * A class that implements the DB interface for Postgres
  * Note: This class uses ADODB and returns RecordSets.
  *
- * $Id: Postgres.php,v 1.108 2003/05/17 15:51:37 chriskl Exp $
+ * $Id: Postgres.php,v 1.109 2003/05/18 11:53:28 chriskl Exp $
  */
 
 // @@@ THOUGHT: What about inherits? ie. use of ONLY???
@@ -757,6 +757,9 @@ class Postgres extends BaseDB {
                        return -3;
                }
 
+               // Set fetch mode to NUM so that duplicate field names are properly returned
+               $this->conn->setFetchMode(ADODB_FETCH_NUM);
+
                // Actually retrieve the rows, with offset and limit
                // @@@@@@@@@@@@@@ THIS NEXT LINE ONLY WORKS IN POSTGRESQL 7.2+ @@@@@@@@@@@@@@@@@
                //$sql = "SELECT * FROM ($query) LIMIT {$page_size} OFFSET " . ($page - 1) * $page_size);
index 0f7aca97c7f87fa68142c8ccc555d9d195d4e543..d90fe4249cc09e04427f1c8423ba16d74fe81f1f 100644 (file)
@@ -9,7 +9,7 @@
         * @param $return_desc The return link name
         * @param $page The current page
         *
-        * $Id: display.php,v 1.15 2003/05/05 14:46:41 chriskl Exp $
+        * $Id: display.php,v 1.16 2003/05/18 11:53:27 chriskl Exp $
         */
 
        // Include application functions
 
        // Retrieve page from table.  $max_pages is returned by reference.
        $rs = &$localData->browseSQL($sub, $_REQUEST['count'], $_REQUEST['page'], $conf['max_rows'], $max_pages);
-
+       
        if (is_object($rs) && $rs->recordCount() > 0) {
                // Show page navigation
                $misc->printPages($_REQUEST['page'], $max_pages, "display.php?page=%s&{$misc->href}&query=" .
                        urlencode($_REQUEST['query']) . '&count=' . urlencode($_REQUEST['count']) . '&return_url=' .
                        urlencode($_REQUEST['return_url']) . '&return_desc=' . urlencode($_REQUEST['return_desc']));
                echo "<table>\n<tr>";
-               reset($rs->f);
-               while(list($k, ) = each($rs->f)) {
-                       echo "<th class=\"data\">", $misc->printVal($k), "</th>";
+               
+               foreach ($rs->f as $k => $v) {
+                       $finfo = $rs->fetchField($k);
+                       echo "<th class=\"data\">", $misc->printVal($finfo->name), "</th>";
                }
 
-               $i = 0;
-               reset($rs->f);
+               $i = 0;         
                while (!$rs->EOF) {
                        $id = (($i % 2) == 0 ? '1' : '2');
                        echo "<tr>\n";
-                       while(list($k, $v) = each($rs->f)) {
+                       foreach ($rs->f as $k => $v) {
                                echo "<td class=\"data{$id}\">", $misc->printVal($v), "</td>";
                        }                                                       
                        echo "</tr>\n";
                        $rs->moveNext();
                        $i++;
                }
+               
                echo "</table>\n";
                echo "<p>", $rs->recordCount(), " {$lang['strrows']}</p>\n";
        }