adaniel Fri Mar 23 20:34:18 2001 EDT
Modified files:
/php4/pear/HTML Select.php
Log:
added comments to the HTML output, added loadQuery, added load
Index: php4/pear/HTML/Select.php
diff -u php4/pear/HTML/Select.php:1.2 php4/pear/HTML/Select.php:1.3
--- php4/pear/HTML/Select.php:1.2 Thu Mar 22 22:24:07 2001
+++ php4/pear/HTML/Select.php Fri Mar 23 20:34:17 2001
@@ -16,7 +16,7 @@
// | Authors: Adam Daniel <[EMAIL PROTECTED]> |
// +----------------------------------------------------------------------+
//
-// $Id: Select.php,v 1.2 2001/03/23 06:24:07 adaniel Exp $
+// $Id: Select.php,v 1.3 2001/03/24 04:34:17 adaniel Exp $
require_once "DB.php";
require_once "PEAR.php";
@@ -26,7 +26,7 @@
* Class to dynamically create an HTML SELECT
*
* @author Adam Daniel <[EMAIL PROTECTED]>
- * @version 1.0
+ * @version 1.1
* @since PHP4.04pl1
* @access public
*/
@@ -54,13 +54,13 @@
/**
* Class constructor
*
- * @param string $name Name attribute of the SELECT
- * @param int $size Size attribute of the SELECT
- * @param bool $multiple Whether the select will allow multiple
+ * @param string $name (optional)Name attribute of the SELECT
+ * @param int $size (optional) Size attribute of the SELECT
+ * @param bool $multiple (optional)Whether the select will allow
+multiple
* selections or not
- * @param mixed $attributes Either a typical HTML attribute string
+ * @param mixed $attributes (optional)Either a typical HTML attribute
+string
* or an associative array
- * @param int $tabOffset Number of tabs to offset HTML source
+ * @param int $tabOffset (optional)Number of tabs to offset HTML source
* @since 1.0
* @access public
* @return void
@@ -86,7 +86,7 @@
*/
function apiVersion()
{
- return 1.0;
+ return 1.1;
} //end func apiVersion
/**
@@ -140,9 +140,6 @@
}
$attributes = $this->_parseAttributes($attributes);
$attr = array("value"=>$value);
- if (in_array($value, $this->_values)) {
- $attr[] = "SELECTED";
- }
$this->_updateAttrArray($attributes, $attr);
$this->_options[] = array("text"=>$text, "attr"=>$attributes);
} // end func addOption
@@ -166,11 +163,7 @@
$this->setSelectedValues($values);
}
while (list($key, $value) = each($arr)) {
- if (in_array($value, $this->_values)) {
- $this->addOption($key, $value, true);
- } else {
- $this->addOption($key, $value);
- }
+ $this->addOption($key, $value);
}
return true;
} // end func loadArray
@@ -188,7 +181,7 @@
* @return PEAR_Error on error or true
* @throws PEAR_Error
*/
- function loadDbResult(&$result, $textCol="", $valueCol="", $values=null)
+ function loadDbResult(&$result, $textCol=null, $valueCol=null, $values=null)
{
if (!is_object($result) || (get_class($result) != "db_result" &&
is_subclass_of($result, "db_result"))) {
@@ -200,22 +193,77 @@
$fetchMode = ($textCol && $valueCol) ? DB_FETCHMODE_ASSOC :
DB_FETCHMODE_DEFAULT;
while (is_array($row = $result->fetchRow($fetchMode)) ) {
if ($fetchMode == DB_FETCHMODE_ASSOC) {
- if (in_array($row[$valueCol], $this->_values)) {
- $this->addOption($row[$textCol], $row[$valueCol], true);
- } else {
- $this->addOption($row[$textCol], $row[$valueCol]);
- }
+ $this->addOption($row[$textCol], $row[$valueCol]);
} else {
- if (in_array($row[0], $this->_values)) {
- $this->addOption($row[0], $row[1], true);
- } else {
- $this->addOption($row[0], $row[1]);
- }
+ $this->addOption($row[0], $row[1]);
}
}
return true;
} // end func loadDbResult
+
+ /**
+ * Queries a database and loads the options from the results
+ *
+ * @param mixed $conn Either an existing DB connection or a valid
+dsn
+ * @param string $sql SQL query string
+ * @param string $textCol (optional) Name of column to display as the
+OPTION text
+ * @param string $valueCol (optional) Name of column to use as the
+OPTION value
+ * @param mixed $values (optional) Array or comma delimited string of
+selected values
+ * @since 1.1
+ * @access private
+ * @return void
+ * @throws
+ */
+ function loadQuery(&$conn, $sql, $textCol=null, $valueCol=null, $values=null)
+ {
+ if (is_string($conn)) {
+ $dbConn = &DB::connect($conn, true);
+ if (DB::isError($dbConn)) return $dbConn;
+ } elseif (is_subclass_of($conn, "db_common")) {
+ $dbConn = $conn;
+ } else {
+ return new PEAR_Error("Argument 1 of HTML_Select::loadQuery is not a
+valid type");
+ }
+ $result = @$dbConn->query($sql);
+ if (DB::isError($result)) return $result;
+ return $this->loadDbResult($result, $textCol, $valueCol, $values);
+ } // end func loadQuery
+ // I DON'T IF THERE IS A REAL BENEFIT FROM HAVING THIS METHOD BUT I WANTED TO
+TRY IT
+ /**
+ * Loads options from different types of data sources
+ *
+ * This method is a simulated overloaded method. The arguments, other than the
+ * first are optional and only mean something depending on the type of the first
+argument.
+ * If the first argument is an array then all arguments are passed in order to
+loadArray.
+ * If the first argument is a db_result then all arguments are passed in order to
+loadDbResult.
+ * If the first argument is a string or a DB connection then all arguments are
+ * passed in order to loadQuery.
+ * @param mixed $options Options source currently supports assoc
+array or DB_result
+ * @param mixed $param1 (optional) See function detail
+ * @param mixed $param2 (optional) See function detail
+ * @param mixed $param3 (optional) See function detail
+ * @param mixed $param4 (optional) See function detail
+ * @since 1.1
+ * @access public
+ * @return PEAR_Error on error or true
+ * @throws PEAR_Error
+ */
+ function load(&$options, $param1=null, $param2=null, $param3=null, $param4=null)
+ {
+ switch (true) {
+ case is_array($options):
+ return $this->loadArray($options, $param1);
+ break;
+ case (get_class($options) == "db_result" || is_subclass_of($options,
+"db_result")):
+ return $this->loadDbResult($options, $param1, $param2, $param3);
+ break;
+ case (is_string($options) || is_subclass_of($options, "db_common")):
+ return $this->loadQuery($options, $param1, $param2, $param3, $param4);
+ break;
+ }
+ } // end func load
+
/**
* Returns the SELECT in HTML
*
@@ -227,16 +275,31 @@
function toHtml()
{
$tabs = $this->_getTabs();
+ $name = $this->_attributes["name"];
$strHtml =
- "\n" .$tabs . "<SELECT" . $this->_getAttrString($this->_attributes) .
">\n";
+ "\n" . $tabs . "<!-- BEGIN SELECT $name -->\n";
+ if ($this->_comment) {
+ $strHtml .= $tabs . "<!-- $this->_comment -->\n";
+ }
+ $strHtml .=
+ $tabs . "<SELECT" . $this->_getAttrString($this->_attributes) . ">\n" .
+ $tabs . "\t<!-- BEGIN OPTIONS $name -->\n";
for ($counter=0; $counter < count($this->_options); $counter++) {
+ $value = $this->_options[$counter]["attr"]["value"];
+ $attrString = $this->_getAttrString($this->_options[$counter]["attr"]);
+ if (in_array($value, $this->_values)) {
+ $attrString = " SELECTED" . $attrString;
+ }
$strHtml .=
- $tabs . "\t<OPTION" .
$this->_getAttrString($this->_options[$counter]["attr"]) . ">" .
+ $tabs . "\t<OPTION" . $attrString . ">" .
$this->_options[$counter]["text"] . "\n";
}
- $strHtml .= $tabs . "</SELECT>";
+ $strHtml .=
+ $tabs . "\t<!-- END OPTIONS $name -->\n" .
+ $tabs . "</SELECT><!-- END SELECT $name -->";
return $strHtml;
} // end func toHtml
} // end class HTML_Select
?>
+
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]