Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 29.11.2018, 16:29
Интересующийся
Отправить личное сообщение для rick_77 Посмотреть профиль Найти все сообщения от rick_77
 
Регистрация: 12.03.2017
Сообщений: 15

Всё увидел...
Ответить с цитированием
  #32 (permalink)  
Старый 29.11.2018, 16:42
Интересующийся
Отправить личное сообщение для rick_77 Посмотреть профиль Найти все сообщения от rick_77
 
Регистрация: 12.03.2017
Сообщений: 15

https://photos.google.com/search/_tr...aWbeZtHE?hl=ru
Необходимо ввести в область 1 количество горючего, при выборе в меню определённого пункта (область 2), а в области 3 отображается ТО количество горючего , которое необходимо выдать с учётом норм.
Ответить с цитированием
  #33 (permalink)  
Старый 29.11.2018, 17:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Можно, но зачем, словами что не проще ответить? Спрашивается то простое.

Пишу все, далее думайте. Нельзя в DIV помещать TD.

Пусть есть форма со списком, в котором по выбору рассчитывается нечто и отображается на клиенте как результат выбора. Данный расчет на клиенте чисто для клиента и серверу на него наплевать, ему нужен выбор клиента. То есть клиент выбрал, увидел, удовлетворился и отправил форму. Сервер по полученному значению произвел расчет и ... далее не знаю для чего.

Вывод списка, что у вас, это какая-то профанация - переменная $_SESSION['temperatura'] не являясь набором может иметь только одно значение, а значит ваш список может иметь только 3 опции, так как опции выводятся по условию (и заметьте, что это у вас попытка вывода, ибо это не вывод, а сплошные ошибки), что, судя по задаче, совсем не то что нужно.

Судя по "хотению" переменная $_SESSION['temperatura'] хранит ранее выбранное пользователем значение и если был выбор, то делает соответствующую опцию в списке выбранной. Но выводить список как каждую опцию отдельно, определяя выбор в списке, это не гут, вывод производится в цикле, а параметры опций определяются значениями из описанного набора. Коли у вас "руками" значит такой набор нужно описать в массиве. При этом опция <option>Выберите температуру</option> лишняя, так как опция <option value="1">Температура выше 0</option> фактически есть опция по умолчанию, то есть изначально это и есть выбор.

//данные для выбора
$data = [
    1 => ['title'=> 'Температура выше 0', 'percent'=>0],
    ['title'=> 'от 0 до -5 градусов', 'percent'=>.2],
    ['title'=> 'от -5 до -10 градусов', 'percent'=>.4],
    ['title'=> 'от -10 до -15 градусов', 'percent'=>.6],
    ['title'=> 'от -15 до -20 градусов', 'percent'=>.8],
    ['title'=> 'от -20 до -25 градусов', 'percent'=>.10],
    ['title'=> 'от -25 и ниже', 'percent'=>.12]
];

//вывод списка в форме (я не привожу код формы и как список располагается в ней)
echo '<select name="percent" id="T">';
//если $_SESSION['temperatura'] определена (был уже выбор) и равна ключу массива данных, то опция списка будет выбрана
foreach($data as $k=>$v) echo '<option data-percent="'.$v['percent'].'" value="'.$k.'" '.($_SESSION['temperatura']==$k ? 'selected' : null).'>'.$v['title'].'</option>';

echo '</select>';


Далее расчет на клиенте (код должен быть расположен ниже кода формы и элемента span в котором будет вывод расчета или ... ладно, пока опустим)

<!-- в этом элементе будет отображается и сумма при расчете -->
<span id="total">250</span>

<script>
var gor_vydat = 250; //откуда это берется вопрос, ну пусть где-то, как-то, в общем значение передано на клиента
//рассчитываем по выбору
document.getElementById('T').onchange = function() {
    document.getElementById('total').innerHTML = gor_vydat + gor_vydat * this.options[this.value-1].getAttribute('data-percent');
}
</script>


Пощелкал пользователь, выбрал, подходит ему, отправляет форму. Сервер принимая ее проверяет истинность данных и если ОК, производит расчет, выводит результат и опять форму, иначе какая надобность в $_SESSION['temperatura']? То есть прием формы должен быть кодом расположенным до вывода формы.

if($d = (int)$_GET['percent'] AND key_exists($d, $data)) {
    //данные с клиента не левые, расчет
    $total = 250 + 250 * $data[$d]['percent'];
    //запомнить выбор в сессии
    $_SESSION['temperatura'] = $d;
}


Если форма должна отправляться при каждом выборе в списке, то никакого расчета на клиенте не надо (это нелогично), data атрибуты в опциях тоже не нужны, и по событию просто обновлять страницу с передачей текущего значения в списке.

У меня не так много времени, чтобы вытягивать из вас по капельке, поэтому читайте, думайте и всегда отвечайте на вопросы полно.

Последний раз редактировалось laimas, 29.11.2018 в 17:45.
Ответить с цитированием
  #34 (permalink)  
Старый 29.11.2018, 17:35
Интересующийся
Отправить личное сообщение для rick_77 Посмотреть профиль Найти все сообщения от rick_77
 
Регистрация: 12.03.2017
Сообщений: 15

Ого! Большущая благодарность за проделанную работу! Приступаю к чтению и опробации! Ещё раз благодарю!
Ответить с цитированием
  #35 (permalink)  
Старый 29.11.2018, 17:38
Интересующийся
Отправить личное сообщение для rick_77 Посмотреть профиль Найти все сообщения от rick_77
 
Регистрация: 12.03.2017
Сообщений: 15

Понял на счёт вопросов. Буду стараться описывать ситуацию по полной! Удачи и Вам!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет суммы чисел при отметке чекбоксов Garik Элементы интерфейса 11 27.07.2013 21:47