Помогите плиз поправить шаблон

Тема в разделе "PHP", создана пользователем SergAgent, 22 апр 2013.

  1. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    PHP:
    <div style="background: #eff1d4; padding: 10px; margin: 10px; border: 1px #e5e8c5 solid; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px;">
    Марка автомобиля<font color="Red">*</font>:&nbsp;
    <p1>
    <select name="adp_make" id="adp_make" class="select-forms-ads">
        <option value="0">Выберите марку</option>
        <?php
            $sql 
    'SELECT `id`, `name` FROM `makes` WHERE `is_car` ORDER BY `name`';
            
    $makes $wpdb->get_results($sqlOBJECT);
     
            
    $makesIds = array();
     
            foreach (
    $makes as $record)
            {
                
    $makesIds[] = $record->id;
                echo 
    '<option value="' $record->id '">' $record->name '</option>';
            }
     
        
    ?>
    </select>
    &nbsp;<?$this->error_msg('adp_make')?>
    </div>
    <div style="background: #eff1d4; padding: 10px; margin: 10px; border: 1px #e5e8c5 solid; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px;">
    Модель<font color="Red">*</font>: &nbsp;
    <select name="adp_model" id="adp_model" <?php if(isset($_REQUEST['adp_make'])) echo'disabled="true"';?> class="select-forms-ads">
        <option value="0">Выберите модель</option>
        <?php
            $sql 
    'SELECT `id`, `name`, `parent_id` FROM `models` WHERE `parent_id` IN(' implode(','$makesIds) . ') ORDER BY `name`';
     
            
    $models $wpdb->get_results($sqlOBJECT);
     
            if (isset(
    $_POST['adp_make'])){
                foreach (
    $models as $model):
                    if(
    $model->parent_id == $_POST['adp_make']){
                        echo 
    '<option value="' $model->id '">' $model->name '</option>';
                    }
                endforeach;
            }
        
    ?>
    </select>
    <?$this->error_msg('adp_model')?>
    </div>
    Через этот код в форме подачи объявления выбирается марка и модель, а когда редактируешь объявление, чтоб выпал список моделей, нужно выбрать другую марку, потом вернутся к своей, и только тогда выподает список моделей по марке, то есть запрос в бд делается только при использовании селекта, а надо сделать чтоб делался при каждой загрузке шаблона я так понимаю, спасибо
     
  2. kama812

    kama812

    Регистрация:
    30 мар 2013
    Сообщения:
    311
    Симпатии:
    194
    из этого блока
    if(isset($_POST['adp_make'])){
    foreach($modelsas$model):
    if($model->parent_id==$_POST['adp_make']){
    echo'<option value="'.$model->id.'">'.$model->name.'</option>';
    }
    endforeach;
    }
    удали первую и последнюю строчку
    тут вопрос, а всегда ли существует $_POST['adp_make'] ?

    сомневаюсь, но скорее всего это тоже не понадобиться
    <?phpif(isset($_REQUEST['adp_make']))echo'disabled="true"';?>
     
    SergAgent нравится это.
  3. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    думаю удалят здесь нечего, adp_make и adp_model это 2 обязательных поля для заполнения
     
  4. kama812

    kama812

    Регистрация:
    30 мар 2013
    Сообщения:
    311
    Симпатии:
    194
    это плохо сделанная форма редактирования. как форма подачи она пойдет.
    исходя из кода при каждом редактировании приходится заново выставлять марку и модель.
    тут проблема быстро поправить этот код в том что список моделей загружается только после выбора марки(заново), а никакого исходного значения марки в код не передается.
    в идеале при редактировании через базу запрашивается прошлое значение марки, и оно уже отмечено в списке, а список моделей загружен по значению марки с выбранной ранее моделью.
    по изменению марки идет ajax запрос и возвращает новый список моделей.
    напиши skype kamachka812
     
    SergAgent нравится это.
  5. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    ну как то так, думаю без запроса тут никак, потому что это единственный селект что работает с базой, хотя adp_make как то делает запрос в базу, потому что при редактировании отображается указанная ранее марка
     
  6. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    Большое спасибо kama812 за решение данной проблемы, рекомендую.