0

MySQLデータベースの呼び出しによって動的に入力される一連の連鎖選択があります。

これはうまく機能しますが、ラベルに別の列'Invm_InventoryDe​​sc'を追加する必要がありますが、選択の1つで各オプションの値を同じ(Invl_InventoryNumber)に保ちます。

Invm_InventoryDe​​scを含めるようにクエリを変更しようとしましたが、壊れてしまいます...何が間違っているのでしょうか。

default:
    if (strpos($key, 'brandSelect-') === 0) {
        $callType = str_replace('brandSelect-', '', $key);
        $resBrands = mysql_query('SELECT Invl_InventoryNumber FROM ' . DB_TABLE1
            . ' WHERE Invl_LocationId  = ' . mysql_real_escape_string($callType) . " ORDER BY Invl_InventoryNumber");
        $select = new SelectBox('What part number are you looking for?', 'Pick a part');
        for ($i = 0; list($brand) = mysql_fetch_row($resBrands); $i++) {
            $select->addItem($brand, 'result-' . $brand . '-' . $callType);
        }
4

1 に答える 1

1

あなたはあなたのコードを実行するときにあなたが得る実際のphpエラーを共有していないので、私は何が悪いのかを推測することしかできません。

forステートメントを間違って使用しているようです。

現在のforループではなく、次のようなものを提案します。

for ($i = 0; $i < mysql_num_rows($resBrands); $i++) {
    $brand = mysql_fetch_array($resBrands);
    $select->addItem($brand, 'result-' . $brand . '-' . $callType);
}

これで、forステートメントは実際に何かを実行します。

$ iは、$selectにすでに追加した行数をカウントします。最初はその0"$i=0"です。

この後、すでに追加した行の数が、追加する必要のある行の数よりも少ないかどうかを確認します(mysqlが返す行の数)。

次に、行を$brandにロードします。そしてこれを$selectに追加します。(私はあなたが$brandと$selectで何をしているのか見当がつかないので、私はあなたのコードにとどまります。)

この後、$iに1を追加します。そして、最初からやり直します

コードにエラーが多い可能性があります。しかし、より多くのコンテキストがなければ、エラーがさらにあるかどうかはわかりません。

于 2012-10-12T14:07:08.477 に答える