Всем драсте. Не знаю как правильно назвать тему и как сформулировать фразу для поиска на форуме. Если решение уже есть - простите заранее. Перейду к задаче. Например, есть таблица notebook с ноутбуками. В ней множество данных, в том числе хранит в себе название ноутбука и стоимость. id | name | price 1 | Dell | 300 2 | Asus | 400 3 | Lenovo | 500 Выдергиваю из нее названия и стоимость: Код (Text): $querynotebook = "SELECT notebook.name, notebook.price FROM notebook"; $notebook = mysql_query($querynotebook) or die(mysql_error()); Теперь создаю выпадающий список Select, чтобы иметь возможность выбирать НАИМЕНОВАНИЯ: Код (Text): <select name=""> <option value="def" selected>Сделайте выбор <option>Тут хочу сделать наименования 1</option> <option>Тут хочу сделать наименования 2</option> <option>Тут хочу сделать наименования 3</option> <option>Тут хочу сделать наименования 4</option> ... </select> C помощью цикла while, генерирую option с наименованиями: Код (Text): <?php while ($rownotebook=mysql_fetch_array($notebook)) { echo "<option>".$rownotebook['name']."</option>"; } ?> Получается все красиво: А вот теперь я хочу, например, вывести еще и стоимость. Ну тут понятно: Просто переписываем так Код (Text): echo "<option>".$rownotebook['name'].",".$rownotebook['price']."</option>"; Получаем: А что, если я хочу не через запятую, а вот так: Код (Text): <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: Код (Text): Array ( [0] => Dell [name] => Dell [1] => 300 [price] => 300 ) Естественно, стоимость должна меняться сразу посредством js. только, плиз, без onchange в select - он уже занят )
есть два пути. т.к. у тебя данные не меняются, тебе лучше воспользоваться вторым создай массив и засунь его в js через echo '<script>'.json_encode($массив с данными).'</script>'; и по эвенту бери оттуда соотв значение и хоть всю инфу можно рассовать в нужные части страницы еще момент: я предпочитаю mysql_fetch_assoc(), попробуй.
Сделал! Вот как: В <select> добавил id (<select id="sel">), чтобы можно было оперировать им в javascript. В <td> таблицы также назначил id="result", сюда будет выводиться стоимость. Затем в цикл while добавил $noteprice[] = $rownotebook[1], чтобы получать данные из запроса в массив $noteprice. Вот код: Код (Text): <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: Код (Text): <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 мы определим как "пустое место" (одинарные кавычки без значения). Код (Text): var price = ['',<?php echo implode(",", $noteprice); ?>]; Теперь определим переменную, например, sel. Она будет присваивать наш select по его id Код (Text): var sel = document.getElementById("sel"); Поднимем функцию, которая будет срабатывать каждый раз, когда пользователем будет осуществлен выбор в select Код (Text): sel.onchange = function() Что происходит при выборе чего-нибудь в select? Переменной s (например) будет присваиваться значение, которое соответствует выборке из массива price[]. Где значение между квадратными скобками - выбранный пункт в select'е Код (Text): var s = price[sel.selectedIndex]; Также в этой же функции определяется переменная, допустим, r. Ей присваивается значение, которое соответствует нашему месту в таблице (в ячейке td) согласно указанному id="result" Код (Text): var r = document.getElementById("result"); Теперь просто "говорим", что нужно ввести данные (innerHTML) в место, определенное переменной r. Данные должны соответствовать полученному значению при помощи переменной s Код (Text): r.innerHTML = s; Вот и все. Если я где то неправильно что-то описал - пожалуйста, поправьте меня. Я только учусь )