2013-04-18 7 views
0

Я создал сценарий, который динамически заполняет поля таблицы, используя php. Если вы посмотрите на фрагмент кода ниже, я ударил кирпичную стену сейчас, когда хочу добавить все $sub_total, чтобы создать $total_cost. Не уверен, что я объясняю это хорошо, но любое направление будет высоко оценено.Подвести динамически сгенерированные поля

// loop through results of database query, displaying them in the table 
    while($row = mysql_fetch_array($result)) { 

      // Calculate hours done per day 

      $hrs_done = $row['time_out'] - $row['time_in']; 

      if($hrs_done > $row['con_hr']){$hrs = $hrs_done;} 
      else{$hrs = $hrs_done;} 

      // echo out results into a table 

      echo "<tr>"; 
      echo '<td bgcolor="#FFFFFF">' . $row['date'] . '</td>'; 
      echo '<td bgcolor="#FFFFFF">' . $hrs . '</td>'; 
      echo '<td bgcolor="#FFFFFF">' . $row['rate'] . '</td>'; 
      echo '<td bgcolor="#FFFFFF">'?> 

      // Multiply hrs by rate to get sub total charge for day  

      <?php $sub_total = $hrs * $row['rate']; 
      echo $sub_total ; 
      ?> 

      <?php '</td>'; 
      echo "</tr>"; 
    } 
    // close table> 
    echo "</table>"; 

ответ

0

Во-первых, вы должны смотреть на учебники, которые используют mysqli или PDO для доступа к базе данных, так как mysql_* функции устарели.

Во-вторых эта проблема так же легко, как только сложением подытог предметы, как вы итерацию цикла

$grand_total = 0; 
while($row = mysql_fetch_array($result)) { 
     // your other code omitted for clarity 

     $sub_total = $hrs * $row['rate']; 
     $grand_total += $sub_total; 
     echo $sub_total ; 

     // more code 
} 
echo $grand_total; 
+0

... Совершенный абсолютно имеет смысл. Ты просто спас меня не менее 4 часов. Я возьму ваш совет и проведу mysqli и PDO. Еще раз спасибо. –

0

Если я правильно понимаю ваше желаемое поведение. Во время цикла добавьте каждый $sub_total к $total_cost и echo этого после того, как вы завершили цикл while

<?php 

    $total_cost = 0; 

    while($row = mysql_fetch_array($result)) { 
     $sub_total = $hrs * $row['rate']; 
     $total_cost += $sub_total; 
    } 

    echo "Total cost: " . $total_cost; 
?> 
+0

пятна на ... ура –

0

Ваш IF/ELSE блок приводит к одному и тому же результату в обоих условиях. Это желаемый результат?

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

Поскольку вы хотите получить все $ sub_total, вам нужны все другие вары, которые построили $ sub_total:

Они:

$hrs = $hrs_done = $row['time_out'] - $row['time_in'] 
$row['rate']; 

Если вы попытаетесь с SUM() функция MySQL , вы получите сумму указанных столбцов:

SELECT sum(time_out) as 'sum_time_out', sum(time_in) as 'sum_time_in', sum(rate) as 'sum_rate' FROM myTable; 

$hrs_sum = $hrs_done_sum = $row['sum_time_out'] - $row['sum_time_in']; 
$stotal_cost = $hrs)sum * $row['sum_rate']; 
0

каждой итерация цикла в то время создает новый переменный $ подытог, что вы хотите добавить к вашему постоянная переменным $ всего.

так внутри цикла вы можете добавить $ подытог до $ общего и эхо $ всего после того, как цикл в то время как выход

while($row = mysql_fetch_array($result)) 
{ 
    // your code 
    $total = $total + $subtotal; // shorthand is - $total += $subtotal. 
} 

echo $total; 
Смежные вопросы