-3

作成したデータベースのデータを入力するMagentoモジュールを使用してドロップダウンオプションを作成したいと思います。

以前は、このコードがMyIndexController.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のこのコードをデータに入力します。これは2番目のコードです。

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

    }
}

上記のコードを使用して、データが入力されましたが、1つのドロップダウンオプションで1つのデータが入力されました。そのため、ブラウザには非常に多くのドロップダウンオプションが表示され、各ドロップダウンオプションには1つのデータのみが含まれます。

私は私が行方不明だと思いますwhile ($ary = mysql_fetch_array($result))。しかし、私はそのコードを含める方法を混乱させますか?

だから、私の質問は、Magentoでmysql_fetch_arrayを実行する方法ですか?または、上記の2番目のコードを最初のコードのように機能させる方法を誰かに説明してもらえますか。

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から「select」ノードを移動する必要があります。

    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 に答える