Интерактивный селект

Рейтинг: 0Ответов: 0Опубликовано: 23.02.2015

Как можно реализовать такую штуку...
Вот есть основной селект, в нем выбраешь пункт, и, например, 3 нижних селекта одновременно заполняются из базы без перезагрузки???

У меня такое видение реализации: есть основной селект, в котором мы делаем выбор, и ажаксом посылаем запрос на сервер, на сервере делать выбор для нижних трех селектов и заключать их в переменные, например:

<div id="dataf">
        <div>
            <select name="filter_id">
                <option value="0">- seleziona filtro -</option>
                <?=$query->selectFiltri()?>
            </select>
        </div>
        <p>
            Larghezza: <input type="text" name="altezza" value="" style="width: 40px;" />&nbsp;x
            Altezza: <input type="text" name="larghezza" value="" style="width: 40px;" />
        </p>
        <div name="selectTipologia"></div>
        <div name="selectProfilo"></div>
        <div name="selectManiglia"></div>
        <div name="selectColore"></div>
        <div name="selectVetro"></div>
        <div name="selectVetroDecorativo"></div>
    </div>

function selectRegion(){
    var filter_id = $('select[name="filter_id"]').val();
    if(!filter_id){
            $('div[name="selectTipologia"]').html('');
            $('div[name="selectProfilo"]').html('');
            $('div[name="selectManiglia"]').html('');
            $('div[name="selectColore"]').html('');
            $('div[name="selectVetro"]').html('');
            $('div[name="selectVetroDecorativo"]').html('');
    }else{
            $.ajax({
                    type: "POST",
                    url: "filter.php",
                    data: { action: 'showFilterForInsert', filter_id: filter_id },
                    cache: false,
                    success: function(responce){

                        var optipologi = '';
                        $(responce.selectTipologia).each(function() {
                            optipologi.tipologi += '<option value="' + $(this).attr('id') + '">' + $(this).attr('nome_corto') + '</option>';
                        });

                        var opprofili = '';
                        $(responce.selectProfilo).each(function() {
                            opprofili.profili += '<option value="' + $(this).attr('id') + '">' + $(this).attr('nome_corto') + '</option>';
                        });

                        $('div[name="selectTipologia"]').html('<select name="Tipologia">'+optipologi+'</select>');
                        $('div[name="selectProfilo"]').html('<select name="Profilo">'+opprofili+'</select>');
                        //$('div[name="selectManiglia"]').html(selectManiglia);
                        //$('div[name="selectColore"]').html(selectColore);
                        //$('div[name="selectVetro"]').html(selectVetro);
                        //$('div[name="selectVetroDecorativo"]').html(selectVetroDecorativo);
                    }
            });
    };
    };

$sql = mysql_connect("localhost", "kiber161_ad", "1231988");

if (!$sql) {
    echo "MySQL сервер недоступен! ".mysql_error();
} else {
    $select = mysql_select_db("kiber161_ad", $sql);

    if (!$select) {
        echo "Нет соединения с БД".mysql_error();
    }
}

if ($_POST['showFilterForInsert']){

    //$selectTipologia .= '<select name="Tipologia">';
    $Tipologia = mysql_query("SELECT id, nome_corto FROM criteri WHERE id_filter='".$_POST['filter_id']."' AND meta='Tipologia'");
    if ($Tipologia) {
        $num = mysql_num_rows($Tipologia);      
        $i = 0;
        while ($i < $num) {
           $tipologi[$i] = mysql_fetch_object($Tipologia);   
           $i++;
        }     
        $selectTipologia = array('tipologi'=>$tipologi);  
    }
    //$selectTipologia = '</select>';

    //$selectProfilo .= '<select name="Profilo">';
    $Profilo = mysql_query("SELECT id, nome_corto FROM criteri WHERE id_filter='".$_POST['filter_id']."' AND meta='Profilo'");
    if ($Profilo) {
        $num = mysql_num_rows($Profilo);      
        $i = 0;
        while ($i < $num) {
           $profili[$i] = mysql_fetch_object($Profilo);   
           $i++;
        }     
        $selectProfilo = array('profili'=>$profili);  
    }
    //$selectProfilo = '</select>';

    $responce = array('selectTipologia' => $selectTipologia, 'selectProfilo' => $selectProfilo);
    print json_encode($responce);
}

Ошибка в том, что селекты, которые не закомментированны, в яве выводятся, но пустые, не получается правильно заполнить их.

Ответы

Ответов пока нет.