Друзья, добрый день. В программировании не силен, но постепенно хочу всему научиться. Написал свой первый js-скрипт - всё работает, но я более чем уверен, что сделано громоздко и не по-человечески. Заинтересован именно в обучении, а не прошу написать код за меня. Буду рад услышать ваши замечания и советы. Заранее большое спасибо!
Итак. Использую 2 таблицы в БД:
- в 1-й лежат: id типовой работы, её название и цена, id типа работы
- во 2-й: id типа работы и название типа работы
Нужно всё представить в виде калькулятора. Примерный вид представлен в изображении.
Собственно Кол-во пользователь прописывает через инпуты самостоятельно. Без перезагрузки страницы выводятся аутпуты: индивидуальная сумма для каждой работы, промежуточный итог по каждому типу работ, общая конечная сумма.
Ниже представлен код (т.к. использовалась джумла, то присутствует характерный код в работе с БД):
Код:
|
$db = JFactory::getDbo();
//DB #_usl
$query = $db->getQuery(true);
$query->select(array('id','name','price','id_r'));
$query->from('#__usl');
$db->setQuery($query);
$result= $db->loadAssocList();
//DB #_usl_r
$query = $db->getQuery(true);
$query->select(array('id','name'));
$query->from('#__usl_r');
$db->setQuery($query);
$result_r= $db->loadAssocList();
?>
<form onsubmit="return false;" oninput="changeText0()">
<table border ='1' id='tablecalc'>
<tr><strong>
<td>Наименование</td>
<td>Цена</td>
<td>Количество</td>
<td>Сумма</td>
</strong></tr>
<?php
$i = 0;
while ($i < count($result_r))
{ ?>
<tr id="trmain">
<td colspan="4"><?php echo $result_r[$i]["name"]?></td>
</tr>
<?php $ii = 0;$x = 0;
while ($ii < count($result))
{
if ($result[$ii]['id_r'] == $result_r[$i]['id'])
{?>
<tr id="trmain<?php echo $result_r[$i]["id"] ?>">
<td class="tdname" ><?php echo $result[$ii]["name"]?></td>
<td class="tdprice" price='
<?php echo $result[$ii]["price"] ?>'>
<?php echo $result[$ii]["price"]?> руб.</td>
<td><input type='text'></td>
<td><output id='tot<?php echo "$i-$x" ?>'>0 руб.</output></td>
</tr>
<?php
$x++;}
$ii++;} ?>
<tr id="trmain">
<td>Итого:</td><td colspan="3">
<output class="stot" id="stot<?php echo $i ?>">0 руб.</output>
</td>
</tr>
<?php $i++;} ?>
</table>
<output id="supertotal">0 руб.</output>
</form>
<script>
function changeText0(){
var supertotal = 0;
var total = 0;
var prices = [];
var vals = [];
var totals = [];
var stotalsid= [];
var stotals= 0;
$('.stot').each(function(){
stotalsid.push (Number($(this).attr("id")));
});
for (var i=0; i<stotalsid.length; i++)
{
$('#trmain'+ i +' .tdprice').each(function(){
prices.push (Number($(this).attr("price")));
});
$('#trmain'+ i +' input').each(function(){
vals.push (Number($(this).val()));
});
for (var ii=0; ii<vals.length; ii++)
{
totals[ii] = vals[ii]*prices[ii];
$('#tot' +i +'-'+ ii).html( totals[ii] + ' руб.' );
stotals += totals[ii];
}
supertotal += stotals;
$('#stot'+ i).html( stotals + ' руб.' );
stotals= 0;
prices = [];
vals = [];
totals=[];
}
$('#supertotal').html( supertotal + ' руб.' );
};
</script> |