Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
5 / 5 / 7
Регистрация: 01.08.2013
Сообщений: 174
1

<select> относительно <select>

11.12.2013, 13:29. Показов 1229. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть два выпадающих списка, как во втором выбирать значения относительно первого?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<select id="cat_1" name="cat_1" style="width:200px;">
            <option value="0">Не выбран раздел</option>
<?php
            $result = $this->db->Query ("SELECT `id`,`name`,`title` FROM `TPages` WHERE `parent`='604'");
            while ($line = $this->db->FetchAssoc($result))
            {
?>
            <option value="<?php echo ($line['id']); ?>" <?php if($line['title']=='Букет'){echo "SELECTED";}?>><?php echo ($line['title']); ?></option>
<?php
            }
?>
        </select>
        <select id="cat_2" name="cat_2" style="width:200px;">
<?php                       
            $result2 = $this->db->Query ("  SELECT `TGoods`.`id` , `TGoods`.`name`, `TGoods`.`image`, `TGoods`.`price`
                                            FROM `TGoods`,`TObjects`,`TPages` 
                                            WHERE `TGoods`.`parent`=`TObjects`.`element_id`
                                            AND `TPages`.`id`=`TObjects`.`page`
                                            AND `TPages`.`id`='".$line['id']."'");
            while ($line2 = $this->db->FetchAssoc($result2))
            {
?>
            <option value="<?php echo ($line2['id']); ?>" <?php if($line2['name']=='Мыло'){echo "SELECTED";}?>><?php echo ($line2['name']); ?></option>
<?php
            }
?>
        </select>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2013, 13:29
Ответы с готовыми решениями:

Как при изменении одного <select> подгрузить в другой <select> данные...
Как при изменении одного &lt;select&gt; подгрузить в другой &lt;select&gt; данные... пример: с марками...

Обработчик для выпадающего списка <select></select>
Всем добрый день такой вопрос- пишу админку и на странице добавления товара была такая форма ...

Enum в <select><option></option></select>
БД: 'tbl' Таблица: 'month' Внутри столбец &quot;caption&quot;, который имеет тип enum и хранит названия...

Select if else
Добрый день ! вообщем такая ситуация в гугле не нашел как правильно реализовать как сделать...

5
PHP developer
259 / 157 / 26
Регистрация: 20.03.2013
Сообщений: 1,018
11.12.2013, 14:00 2
Цитата Сообщение от piraids Посмотреть сообщение
Есть два выпадающих списка, как во втором выбирать значения относительно первого?
Вероятнее всего Вам необходимо использовать асинхронный запрос, чтобы при выборе одного значения в первом списке, менялись значения относительно второго.

jQuery для начинающих. Часть 3. AJAX
0
5 / 5 / 7
Регистрация: 01.08.2013
Сообщений: 174
11.12.2013, 16:56  [ТС] 3
нашел такой пример:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="js/jquery-1.3.1.js" type="text/javascript"></script>
<style type="text/css">
body {
  position: relative;
  margin: 0;
  padding: 0;
  font-family: Georgia, Times, "Times New Roman", serif;
  font-size: 9pt;
  color: #000;
}
.border {
  float: left;
  margin: 10px 0 0 5px;
}
label {
  padding-left: 5px;
}
select {
  width: 130px;
  font-family: Georgia, Times, "Times New Roman", serif;
  font-size: 9pt;
  color: #000;
}
</style>
<script type="text/javascript">
(function($){
  // очищаем select
  $.fn.clearSelect = function() {
      return this.each(function(){
          if(this.tagName=='SELECT') {
              this.options.length = 0;
              $(this).attr('disabled','disabled');
          }
      });
  }
  // заполняем select
  $.fn.fillSelect = function(dataArray) {
      return this.clearSelect().each(function(){
          if(this.tagName=='SELECT') {
              var currentSelect = this;
              $.each(dataArray,function(index,data){
                  var option = new Option(data.text,data.value);
                  if($.support.cssFloat) {
                      currentSelect.add(option,null);
                  } else {
                      currentSelect.add(option);
                  }
              });
          }
      });
  }
})(jQuery);
</script>
<script type="text/javascript">
$(document).ready(function(){
 
  // выбор автомобиля
  function adjustAuto(){
    var countryValue = $('#country').val();
    var tmpSelect = $('#auto');
    if(countryValue.length == 0) {
        tmpSelect.attr('disabled','disabled');
        tmpSelect.clearSelect();
        adjustModel();
    } else {
        $.getJSON('cascadeSelectAuto.php',{country:countryValue},function(data) { tmpSelect.fillSelect(data).attr('disabled',''); adjustModel(); });
        
    }
  };
  // выбор модели
  function adjustModel(){
    var countryValue = $('#country').val();
    var autoValue = $('#auto').val();
    var tmpSelect = $('#model');
    if(countryValue.length == 0||autoValue.length == 0) {
        tmpSelect.attr('disabled','disabled');
        tmpSelect.clearSelect();
    } else {
        $.getJSON('cascadeSelectModel.php',{country:countryValue,auto:autoValue},function(data) { tmpSelect.fillSelect(data).attr('disabled',''); });
    }
  };
    
  $('#country').change(function(){
    adjustAuto();
  }).change();
  $('#auto').change(adjustModel);
  $('#model').change(function(){
    if($(this).val().length != 0) { alert('Выбор сделан!'); }
  });
 
});
</script>
</head>
<body>
  <div class="border">
  <label>Страна</label><br />
  <select id="country">
    <option value="">Выбрать страну</option>
    <option value="1">Германия</option>
    <option value="2">Ю.Корея</option>
    <option value="3">Япония</option>
  </select>
  </div>
  <div class="border">
  <label>Автомобиль</label><br />
  <select id="auto" disabled="disabled"></select>
  </div>
  <div class="border">
  <label>Модель</label><br />
  <select id="model" disabled="disabled"></select>
  </div>
</body>
</html>
cascadeSelectAuto.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
header('Content-Type: text/html; charset=utf-8');
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
    
    switch($_GET['country']) {
        case '1':
        print '[{value:"",text:"Выбрать автомобиль"},{value:"1",text:"Audi"},{value:"2",text:"BMW"},{value:"3",text:"Opel"}]';
        break;
        case '2':
        print '[{value:"",text:"Выбрать автомобиль"},{value:"1",text:"Daewoo"},{value:"2",text:"Hyundai"},{value:"3",text:"KIA"}]';
        break;
        case '3':
        print '[{value:"",text:"Выбрать автомобиль"},{value:"1",text:"Honda"},{value:"2",text:"Mazda"},{value:"3",text:"Toyota"}]';
        break;
        default:
        print '[{value:"",text:"Выбрать автомобиль"}]';
        break;
    }
    
}
?>
не могу понять как вместо cascadeSelectModel.php и cascadeSelectAuto.php подключить свой массив полученный из базы запросом
0
PHP developer
259 / 157 / 26
Регистрация: 20.03.2013
Сообщений: 1,018
11.12.2013, 17:09 4
Цитата Сообщение от piraids Посмотреть сообщение
не могу понять как вместо cascadeSelectModel.php и cascadeSelectAuto.php подключить свой массив полученный из базы запросом
Запросы к базе данных необходимо делать, чтобы получать Ваши данные.

Добавлено через 1 минуту
Цитата Сообщение от piraids Посмотреть сообщение
cascadeSelectModel.php
В это файле используется ajax.

Цитата Сообщение от piraids Посмотреть сообщение
cascadeSelectAuto.php
А в этом как раз и надо писать запрос к базе.

Добавлено через 1 минуту
Установите fireBug очень пригодится для проверки работоспособности js.
0
5 / 5 / 7
Регистрация: 01.08.2013
Сообщений: 174
11.12.2013, 17:10  [ТС] 5
Цитата Сообщение от masik49 Посмотреть сообщение
Сообщение от piraids
cascadeSelectAuto.php
А в этом как раз и надо писать запрос к базе.
а как можно обойти? чтобы не создавать еще один файл, нельзя ли сделать переменную, в которой будет определен массив с моими данными?
0
PHP developer
259 / 157 / 26
Регистрация: 20.03.2013
Сообщений: 1,018
11.12.2013, 17:14 6
Цитата Сообщение от piraids Посмотреть сообщение
в которой будет определен массив с моими данными?
Ну Вам же надо наверное запрос к базе даных сделать, чтобы в переменную внести данные...или нет?
0
11.12.2013, 17:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2013, 17:14
Помогаю со студенческими работами здесь

SELECT из БД
Подскажите что здесь не так, ошибка при выполнении Select function users() {...

select
Помогите кто может. PHP изучаю не давно. Как сделать на странице списки выбора шрифта, его размера...

Выбор из select'а
Привет всем! У меня в селекте находится список из БД (у которых parent = -1)/ При выборе одной...

Обработка <select>
Привет всем. Пытаюсь обработать &lt;select&gt; таким образом: $gameid = $_POST; Переменная $gameid при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru