Как получить данные из селекта
Доброго времени суток всем! Делаю сайт на подобии этого(не реклама) и столкнулся с тем, что надо вывести стоимость, изображение товара, который мы выбрали в селекте. Если значение в селекте "Выбрать", то стоимость и изображение не показывается.
У меня селектов 6-8 штук(ну как на сайте практически) и код, который ниже уж очееень большой как для 1 селекта. Я скрываю изначально поля, а потом при выборе товара - показываю.. Ранее был такой код js(огромный, не правда ли?) http://jsfiddle.net/f2Lsxh73/3/ А код php сейчас такой <table> <thead style='background: #F1F2F7'> <tr> <th>Тип</th> <th>Наименование</th> <th>Цена, грн.</th> </tr> </thead> <tr> <td>Процессор</td> <td> <?php echo "<div class='newselect'>"; echo "<select class='chosen' id='chosenmak' name='maker' onchange='updatePrice(this)'>"; echo '<option value="0">-- Выбрать --</option>'; foreach ($arr_get as $value) { $ID = $value['ID']; $Price = $value['Price']; $Model = $value['Model']; $photo = $value['photo']; echo '<option data-price="'.$Price.'" data-image="'.$photo.'" value="'.$Model.'">'."$Model".'</option>'; } echo "</select>"; echo "</div>"; echo "<span id='model'><img src='$photo' class='t' id='preview'/></span>"; echo "<td><input class='label' id='price_cpu' name='price_cpu' readonly/></td>"; ?> </td> </tr> Другие селекты также сделаны, но только немного другие значения вывожу. http://prntscr.com/791bzt вот так. JS код изменил на такое для одного селекта. Изначально всё скрыто и задача опять остается: картинка/стоимость(должны соответствовать товару) скрыты все и должны выводится тогда, когда выбран товар в селекте. Если не выбрано, то скрывать опять. sel = document.getElementById("myTab").getElementsByClassName("t") for(var i=0; i<sel.length; i++) sel[i].style.display = "none"; selLabel = document.getElementById("myTab").getElementsByClassName("label") for(var i=0; i<selLabel.length; i++) selLabel[i].style.display = "none"; function updatePrice(select){ var image=select.options[select.selectedIndex].getAttribute("data-image"); var price=select.options[select.selectedIndex].getAttribute("data-price"); document.getElementById('price_cpu').innerHTML = price; } Подскажите/помогите: Как вывести стоимость и картинку товара, который выбран в селекте? Я говорил, что их 6-8 Если ничего не выбрано в селекте, то скрывать/не показывать стоимость и картинку Я совсем новичок и не знаю как сделать. |
Цитата:
|
ksa, я могу скинуть вам файлик, вы посмотрите.
Даже с простеньким примером не получается. :help: |
Цитата:
Цитата:
|
Цитата:
На чистом хтмле вот ссылка выше. У меня пхп и немного отличается |
И что тут нужно сделать?
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <!-- <script src='http://code.jquery.com/jquery-latest.js'></script> <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> <link rel='stylesheet type=text/css href=tmp.css' /> <link rel="stylesheet/less" type="text/css" href="style.less"> <script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> </script> </head> <body> <table id='myTab'> <tr> <th>Тип</th> <th>Наименование</th> <th>Изображение</th> <th>Цена, грн.</th> </tr> <tr> <td>Processors</td> <td> <select class='t'> <option>Выбрать</option> <option value='Processors-1'> ЕУІІ 1</option> <option value='Processors-2'> ЕУІЕ 2</option> <option value='Processors-2'> ЕУІЕ 3</option> </select> </td> <td><img src='http://javascript.ru/forum/image.php?u=8616&dateline=1282216923'></td> <td>22</td> </tr> <tr> <td>Graphics</td> <td> <select class='t'> <option>Выбрать</option> <option value='Graphics-1'> Graphics GeForce GTX 970 </option> <option value='Graphics-2'> Graphics GeForce GT 720 </option> <option value='Graphics-3'> Graphics 333 </option> </select> </td> <td><img src='http://javascript.ru/forum/image.php?u=8616&dateline=1282216923'></td> <td>33</td> </tr> </table> </body> </html> |
Цитата:
|
Но, как я понимаю, рисунки и цены должны быть разные. Где это все брать?
|
Цитата:
|
Цитата:
|
Как вариант...
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='http://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> <link rel='stylesheet type=text/css href=tmp.css' /> <link rel="stylesheet/less" type="text/css" href="style.less"> <script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> $(function(){ $('.t').change(function(){ var o=$(this.options[this.selectedIndex]); var or=$(this.parentNode.parentNode); or.find('span').text(o.data('price')); or.find('img').attr('src',o.data('img')); }); }); </script> </head> <body> <table id='myTab'> <tr> <th>Тип</th> <th>Наименование</th> <th>Изображение</th> <th>Цена, грн.</th> </tr> <tr> <td>Processors</td> <td> <select class='t'> <option value='' data-price='' data-img='http://javascript.ru/forum/images/smilies/sad.gif'>Выбрать</option> <option value='Processors-1' data-price='10' data-img='http://javascript.ru/forum/images/smilies/smile.gif'> ЕУІІ 1</option> <option value='Processors-2' data-price='20' data-img='http://javascript.ru/forum/images/smilies/wink.gif'> ЕУІЕ 2</option> <option value='Processors-2' data-price='30' data-img='http://javascript.ru/forum/images/smilies/laugh.gif'> ЕУІЕ 3</option> </select> </td> <td><img src='http://javascript.ru/forum/images/smilies/sad.gif'></td> <td><span></span></td> </tr> </table> </body> </html> |
ksa, сделал как у вас - http://prntscr.com/795ode вот что получилось. Код хпх на первой странице в 1 посте
|
makalet, у нас на работе отслеживают интернет-трафик и адреса УРЛ... Да и с ПХП я не работаю, использую другой серверный язык.
|
ksa,:cray: Я за помощь на пивко бы дал
|
ksa, как не пытаюсь поместить картинку и цену в разные td - ничего не получается. http://prntscr.com/79g85m
<tr> <td>Процессор</td> <td> <div class='newselect'> <select class='chosen' id='chosenmak' name='maker' > <option value="0" value='' data-price=''>-- Выбрать --</option> <?php foreach ($arr_get as $value) { $ID = $value['ID']; $Price = $value['Price']; $Model = $value['Model']; $photo = $value['photo']; echo '<option data-price="'.$Price.'" data-image="'.$photo.'" value="'.$Manufacture.' ">'."$Manufacture"." "."$Model"." '</option>'; } ?> </select> </div> <img src='' name='image_cpu' id='preview'/> <span ></span> </td> </tr> Подскажите: 1. Когда img и span обертываю в tr, то выводит пустоту. 2. Также, когда выбрано значение "Выбрать", то цена и картинка не скрываются. Как исправить? 3. Вот ваш пример. http://jsfiddle.net/tngebbfx/ Как считать всю стоимость и вывести ее в поле "Итого"? 4. Можно ли как-то взять значение с option (например, ."$Manufacture"." "."$Model"." ) и внедрить в value?? Очень нужно так сделать, чтобы в value заного не прописывать переменные |
echo '<option data-price="'.$Price.'" data-image="'.$photo.'" value="'.$Manufacture.' ">'."$Manufacture"." "."$Model"." '</option>'; Может все таки: echo '<option data-fabric="'.$Manufacture.'" data-image="'.$photo.'" value="'.$Price.' ">'."$Manufacture"." "."$Model"." '</option>'; |
laimas, а что изменилось? Поменял у себя на вашу строку. Ничего
|
Цитата:
|
Сайт который не реклама построен инженерно. То есть коммерцией они не занимаются, ничего не впаривают, типа надо заранее знать что хочешь и просто профтыкать в селектах свои хотелки посматривая время от времени на бюджет.
Вы, или ваш заказчик, подумали что это плохо, что надо сделать более коммерчески и теперь вы пытатесь совместить этот инженерный подход с торгашеским. Да нихера они не совмещаются и не надо ничего совмещать. Забивание телеги товаром ничем не отличается от комплектования компа. Нахера лишние сущности? Все давным-давно отработано и вы можете лишь улучшить, если получится. Короче, у вас есть обычный каталог и в нем есть кнопки Купить. Человеку впаривается товар, он нажимает кнопку Купить - индентификатор и цена валятся в куки. Человек открывает телегу - видит что навалил в нее. Смотрит, сравнивает, редактирует, все как обычно. Интерфейс ему все показывает, считает, дает ссылки и все такое. Затем юзверь жмет кнопку Оформить и готово. |
kostyanet, у меня как раз и есть такое. Категории, пользователь сам покупает нужные ему части, добавление в корзину и т.д.
А типа конфигуратор пк мне надо для сборки, который клиент пожелал, не знающий толком про конфигурацию. Вот и будет продавец, который занимается этим. Может и лишнее, но мне надо. |
При чем тут клиент? Это в бд должно быть определено что к чему подходит и выбрать что не подходит будет просто невозможно. Ну то есть коню ясно что у вас просто специфическая телега, не такая как на сайтах шмоток или интерьеров где человек сам решает что ему подходит, а интерфейс может только подсказывать. Когда речь идет о железках то подсказки перемещаются в определения и все.
Ну или заведите вторую телегу с такой спецификой и соотв. вторую кнопку - Сохранить. Будет тогда 2 - Купить иниипет - и Сохранить - в комплектацию. Комплектаций (папок, namespace'ов) может быть 1 или несколько. |
Ну если вы на сайт машинок зайдете, то как сможете добавить в комплектацию выбранной деревянной модели узлы и агрегаты из фарша другой модели или даже другого бренда. Ну вот, у вас то же самое.
У долбоящеров на том не рекламном сайте почему-то все начинается с монитора. |
Цитата:
|
kostyanet, я это понимаю. Но задача сейчас не в этом же. Вы читали, что мне нужно сделать?
|
Вы не знаете что вам нужно сделать, но как обычно это принято - не признаетесь что не знаете, а цитируете коды, как будто бы знаете и проблема чисто техническая.
Короче, мне вообще по барабану, это ваше дело как вы там не знаете. |
laimas, назначение списка - подобрать комплектующие. http://prntscr.com/79hb8h - выбирается значение. И рядом в столбцах должны отобразиться изображение(при клике переходим на товар для подробности) и цена его.
|
kostyanet, я не говорил, что знаю. Я js не знаю и не скрываю этого.
|
Вот это для чего?
<?php foreach ($arr_get as $value) { $ID = $value['ID']; $Price = $value['Price']; $Model = $value['Model']; $photo = $value['photo']; echo '<option data-price="'.$Price.'" data-image="'.$photo.'" value="'.$Manufacture.' ">'."$Manufacture"." "."$Model"." '</option>'; } ?> Кстати, определять переменную $Price = $value['Price']; только ради того, чтобы ее поместить в строку, это просто разводить мусор в коде. И $value['photo'] - это плохо, если это путь. Не надо мне ссылок, я и без них вижу что у вас не определено главного - что определяет товар. Так что его определяет в базе - уникальный идентификатор или цена, или модель, или еще что либо иное? Вот как поймете это, придет просветление того, с чем же должен работать как клиентский скрипт, так и серверный. |
laimas, для вывода всего списка моделей. Модель определять должна.
|
Вобщем нормально делается так: заводится отношение n^M - энное число отношений ко многим и вся комплектация по спецификациям в нее загоняется. Адаптеры с переходниками как-то надо приделать еще. Тогда любой выбор в прошлом работает как фильтр для всех остальных в будущем.
Что касается ответа на вопрос как загрузить все и показывать только то, что выбрано - так: в контейнер для рендера опции пихается хтмл сделанный по параметрам опции. Если параметров нет - пихается пусто. Все просто должно быть. То есть разница лишь в том, что данные уже загружены. Все остальное в точности соответствует схеме загрузки данных по требованию. |
Цитата:
|
kostyanet, может хватит лабуду в постах гнать? Или с корточек встань.
|
Цитата:
|
Кстати, "на подобии" - предлог и пишется слитно и вот так: наподобие - "Тогда **, растопыря ноги наподобие буквы хера и подбочась наподобие ферта, произнёс следующую краткую и выразительную речь." Чуть более сложные предлоги: "в течение" и "в заключение". Запомните чтоб быть грамотнее.
Цитата:
|
kostyanet, именно. Я ж сказал, что новичок. И про говнокод тоже знаю.
laimas, в смысле, определяться? Если на вывод данных, то по имени селекта. Если я понял правильно |
Цитата:
|
Цитата:
Что касается js, то js он вообще, а js для браузера со всей тряхомудией загруженной страницы - в частности. То есть js как скриптовый язык применяется не только в браузерах. Просто через браузеры он стал популярным. В винде вы можете писать скрипты на точно таком же js, только DOM там нет, в ФШ есть DOM и есть js, который оперирует объектами в том самом доме, который никакого отношения к хмтлю само собой. В этом смысле изучать приходится не js, а ту часть, которая сношается с DOM, то есть фактически DOM. Ну вот, зная о такой проперти дом-объекта как innerHTML (еще есть outerHTML) вы пользуетесь парсером браузера чтобы превратить кусок _нового_ хтмля - в часть document obkect model. Вы ему текст - вам рендер текста и элементы. |
Цитата:
|
kostyanet, ты уже достал тут всех своим словесным поносом.
|
kostyanet, я начал на гавнокоде писать. Потом начну с нуля смотреть PDO по учебникам.
|
Часовой пояс GMT +3, время: 23:46. |