Показать сообщение отдельно
  #1 (permalink)  
Старый 21.07.2013, 18:44
Новичок на форуме
Отправить личное сообщение для mindnomind Посмотреть профиль Найти все сообщения от mindnomind
 
Регистрация: 21.07.2013
Сообщений: 7

Счётчик стоимости - необходимо мнение экспертов
Друзья, добрый день. В программировании не силен, но постепенно хочу всему научиться. Написал свой первый 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>

Последний раз редактировалось mindnomind, 22.07.2013 в 10:55.
Ответить с цитированием