1

複数選択できるコンボボックスがあり、別のコンボボックスがあります。

最初のコンボボックスから選択した値に応じて、2番目のコンボボックスに表示する必要があります。

私の要件シナリオはこの例によく似ています。最初のコンボボックスにすべての状態のリストが含まれているとします。州が選択されると、その州のすべての都市がデータベースからフェッチされ、2番目のコンボボックスに表示されます。

最初のコンボボックスで複数のアイテム(状態)を選択した場合。選択した州の都市が2番目のコンボボックスに表示されます。

選択したすべてのアイテムを配列に格納することで、この解決策を考えました。実装方法がわかりません。誰かが実用的な例を提供するならば、それは大きな助けになるでしょう。

私はPHPを初めて使用するため、実装が難しいと感じています。誰かが実用的な例を提供するならば、それは大きな助けになるでしょう。

4

1 に答える 1

0

状態のチェックボックスで配列サフィックスを使用します。これが小さな例です。それは非常に基本的ですが、アイデアを示しています。

<form method="post">
<table><tr><td>
<?
    // Sample array, you should use database query instead
    $statesArr = array('FL'=>'Florida','CA'=>'California','NY'=>'New York');

    foreach ($statesArr as $stateCode => $stateName) { 
        $checked = (count($_POST['states']) && in_array($stateCode,$_POST['states']))?'checked="checked"':''; // rechecking selected checkboxes
        echo '<label><input type="checkbox" name="states[]"  value="'.$stateCode.'" '.$checked.'/>'.$stateName.'</label><br />';
    }

?>
</td><td>
    <?  if ($_POST && count($_POST['states'])) {
            echo '<select multiple="multiple">';
            $sql = "SELECT `CityName` FROM `Cities` WHERE `ParentStateCode` IN ('".implode("','",$_POST['states'])."')";
            $result = mysql_query($sql);
            while ($row = mysql_fetch_assoc($result)) {
                echo '<option>'.$row['CityName'].'</option>';
            }
            echo '</select>';
        }
    ?> 
    </td>
    </tr></table>
    <input type="submit" />
</form>
于 2013-03-19T18:13:26.490 に答える