-3

我想使用 Magento 模块创建一个下拉选项,该模块从我创建的数据库中填充数据。

以前,我在我的 IndexController.php 中有这段代码,它是有效的。这是第一个代码。

public function dropdownAction() {

if (file_exists('./app/etc/local.xml')) {

$xml = simplexml_load_file('./app/etc/local.xml');

$tblprefix = $xml->global->resources->db->table_prefix;
$dbhost = $xml->global->resources->default_setup->connection->host;
$dbuser = $xml->global->resources->default_setup->connection->username;
$dbpass = $xml->global->resources->default_setup->connection->password;
$dbname = $xml->global->resources->default_setup->connection->dbname;

}

else {
exit('Failed to open ./app/etc/local.xml');
}

$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname) or die("Unable to select database");

$tblname = $tblprefix.'my_db_table';

    $result = mysql_query("SELECT dropdowndata FROM ".$tblname."");

            echo '<select>';
                while ($ary = mysql_fetch_array($result)){
                    echo "<option>" . $ary['dropdowndata '] . "</option>";
                    }
                echo "</select>";

    mysql_close($link);

}

但我认为上面的代码不是 Magento 的方式。你同意吗?

现在,我想用 IndexController.php 中的代码填充数据。这是第二个代码。

public function dropdownAction() {
    $options= Mage::getModel('my/model')->getCollection();
    foreach($options as $option){
        $optionData = $option->getDropdowndata ();
        echo "<select>";
        echo "<option>" .$optionData."</option>";
        echo "</select>";

    }
}

使用上面的代码,数据被填充,但一个数据只有一个下拉选项。所以浏览器上出现了很多下拉选项,每个下拉选项将只包含一个数据。

我想我错过了while ($ary = mysql_fetch_array($result)). 但我很困惑如何包含该代码?

所以,我的问题是如何在 Magento 中做 mysql_fetch_array ?或者有人可以解释一下如何使上面的第二个代码像第一个代码一样工作。

4

2 回答 2

1

为什么你在 foreach 中有选择?我认为这样的事情会解决你的问题:

public function dropdownAction() {
    $options= Mage::getModel('my/model')->getCollection();
    echo "<select>";
    foreach($options as $option){
        $optionData = $option->getDropdowndata ();
        echo "<option>" .$optionData."</option>";
    }
    echo "</select>";
}
于 2012-12-07T08:40:46.023 回答
1

getData() 函数返回整个数据的数组,当然需要将“选择”节点移出 foreach

    echo "<select>";
    foreach($options as $option){
            $optionData = $option->getData();
            echo "<option>" .$optionData['somekey'] ."</option>";
        }
    echo "</select>";

但我认为最好使用 magento 魔术函数,例如,如果您在 DB 中有“entity_id”列,则可以使用 $option->getEntityId() 等获得价值……

于 2012-12-07T08:41:25.293 回答