Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.04.2012, 13:19
Аватар для xaocbozzz
Интересующийся
Отправить личное сообщение для xaocbozzz Посмотреть профиль Найти все сообщения от xaocbozzz
 
Регистрация: 28.04.2012
Сообщений: 13

Тупик... Вставка данных в зависимости от SELECT
Всем драсте.
Не знаю как правильно назвать тему и как сформулировать фразу для поиска на форуме. Если решение уже есть - простите заранее.

Перейду к задаче.
Например, есть таблица notebook с ноутбуками.
В ней множество данных, в том числе хранит в себе название ноутбука и стоимость.

id | name | price
1 | Dell | 300
2 | Asus | 400
3 | Lenovo | 500

Выдергиваю из нее названия и стоимость:
Код:
$querynotebook = "SELECT notebook.name, notebook.price FROM notebook";
$notebook = mysql_query($querynotebook) or die(mysql_error());
Теперь создаю выпадающий список Select, чтобы иметь возможность выбирать НАИМЕНОВАНИЯ:
Код:
<select name="">
<option value="def" selected>Сделайте выбор
<option>Тут хочу сделать наименования 1</option>
<option>Тут хочу сделать наименования 2</option>
<option>Тут хочу сделать наименования 3</option>
<option>Тут хочу сделать наименования 4</option>
...
</select>
C помощью цикла while, генерирую option с наименованиями:
Код:
<?php 
while ($rownotebook=mysql_fetch_array($notebook)) 
       { 
         echo "<option>".$rownotebook['name']."</option>";
       }
?>
Получается все красиво:


А вот теперь я хочу, например, вывести еще и стоимость. Ну тут понятно:
Просто переписываем так
Код:
echo "<option>".$rownotebook['name'].",".$rownotebook['price']."</option>";
Получаем:


А что, если я хочу не через запятую, а вот так:


Код:
<table><tr><td>
<select>
<option value="def" selected>Сделайте выбор
<?php 
while ($rownotebook=mysql_fetch_array($notebook)) 
       { 
         echo "<option>".$rownotebook['name']."</option>";
       }
?>
</select>
</td>
<td>КАК СЮДА ПОСТАВИТЬ СТОИМОСТЬ?</td>
</tr></table>
ps. Вот что дает print_r($rownotebook); после mysql_fetch_array:
Код:
Array
(
    [0] => Dell
    [name] => Dell
    [1] => 300
    [price] => 300
 )
Естественно, стоимость должна меняться сразу посредством js.
Ответить с цитированием
  #2 (permalink)  
Старый 28.04.2012, 14:04
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от xaocbozzz
<td>КАК СЮДА ПОСТАВИТЬ СТОИМОСТЬ?</td>
<html>
<body>
<table style="border:1px solid #888888"><tr>
	<td>
	<select id="sel">
	<option value="def" selected>Сделайте выбор
	<option>Dell</option>
	<option>Asus</option>
	<option>Lenovo </option>
	</select>  
	</td>  
      
	<td id="result" width="40px">  
    
	</td>    
</tr>
  
<script>
var price = ['',300,400,500]; // формировать в PHP
  
var sel = document.getElementById("sel");
sel.onchange = function()
 {
 var s = price[sel.selectedIndex];
   //alert(s);   
 var r = document.getElementById("result");
 r.innerHTML = s;  
 };
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 29.04.2012, 09:26
Аватар для xaocbozzz
Интересующийся
Отправить личное сообщение для xaocbozzz Посмотреть профиль Найти все сообщения от xaocbozzz
 
Регистрация: 28.04.2012
Сообщений: 13

Спасибо. Только вот это не ясно:
var price = ['',300,400,500]; // формировать в PHP
Ответить с цитированием
  #4 (permalink)  
Старый 03.05.2012, 04:57
Аватар для xaocbozzz
Интересующийся
Отправить личное сообщение для xaocbozzz Посмотреть профиль Найти все сообщения от xaocbozzz
 
Регистрация: 28.04.2012
Сообщений: 13

Сделал! Вот как:
В <select> добавил id (<select id="sel">), чтобы можно было оперировать им в javascript.
В <td> таблицы также назначил id="result", сюда будет выводиться стоимость.
Затем в цикл while добавил $noteprice[] = $rownotebook[1], чтобы получать данные из запроса в массив $noteprice.
Вот код:

Код:
<table><tr><td>
<select id="sel">
<option value="def" selected>Сделайте выбор
<?php 
while ($rownotebook=mysql_fetch_array($notebook)) 
       { 
         echo "<option>".$rownotebook['name']."</option>";
         $noteprice[] = $rownotebook[1];
       }
?>
</select>
</td>
<td id="result"></td>
</tr></table>
Затем написал код на js ниже (обязательно ниже!) цикла while:
Код:
<script>
var price =['',<?php echo implode(",", $noteprice); ?>];
var sel = document.getElementById("sel");
sel.onchange = function()
 {
 var s = price[sel.selectedIndex];
 var r = document.getElementById("result");
 r.innerHTML = s; 
 };
</script>
Разберем этот код:
Создаем массив в js по типу var price = [a,b,c,d,...]. Но в качестве значений (a,b,c,d,...) мы берем то, что "отдал" нам php: <?php echo implode(",", $noteprice); ?>. Что отдает нам php? При помощи функции implode массив $noteprice соединяется в строку, используя запятую между значениями. То есть он в моем случае отдает 300,400,500
Ну а так как первый option у меня не должен иметь какое-либо значение (<option value="def" selected>Сделайте выбор), первое значение массива для js мы определим как "пустое место" (одинарные кавычки без значения).
Код:
var price = ['',<?php echo implode(",", $noteprice); ?>];
Теперь определим переменную, например, sel. Она будет присваивать наш select по его id
Код:
var sel = document.getElementById("sel");
Поднимем функцию, которая будет срабатывать каждый раз, когда пользователем будет осуществлен выбор в select
Код:
sel.onchange = function()
Что происходит при выборе чего-нибудь в select? Переменной s (например) будет присваиваться значение, которое соответствует выборке из массива price[]. Где значение между квадратными скобками - выбранный пункт в select'е
Код:
var s = price[sel.selectedIndex];
Также в этой же функции определяется переменная, допустим, r. Ей присваивается значение, которое соответствует нашему месту в таблице (в ячейке td) согласно указанному id="result"
Код:
var r = document.getElementById("result");
Теперь просто "говорим", что нужно ввести данные (innerHTML) в место, определенное переменной r. Данные должны соответствовать полученному значению при помощи переменной s
Код:
r.innerHTML = s;
Вот и все. Если я где то неправильно что-то описал - пожалуйста, поправьте меня. Я только учусь )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрыть/показать элементы в зависимости от значения select AnyKeyLeft Элементы интерфейса 12 16.07.2014 16:26
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Выполнение функции в зависимости от SELECT coolkostik Элементы интерфейса 3 05.01.2012 13:03
Вставка данных в textarea из модального окна (для Markitup) Roman Koff jQuery 0 26.08.2010 23:21
Продлема с получением данных из select Tartyga Общие вопросы Javascript 10 05.08.2009 22:13