This is partly PHP, partly javascript, so I wasn't sure where to stick it, but I'll stick it here. I'm sorry if this is a bit confusing, but I hope I can explain myself well.

The below code queries a table in my database, and prints out a table with those values. The embedded javascript enables you to change the values in some of the fields, and the other fields will automatically update using the "onchange" event handler. I'm a little experienced with php, and extremely new at javascript. Anyway, here's the code, and my question will follow:

$query="SELECT * from categories";
$result = mysql_query($query) or die(mysql_error());
    
while($row = mysql_fetch_array($result))
{
$balance=$row['balance']/100;
$allotment=$row['allotment']/100;
$total=$balance+$allotment;
$name=$row['name'];
$id=$row['id'];
$left=$net-$sum;

echo "<tr>
<td align='right'>$name</td>
<td>$<input type='text' value='$balance' name='balance$id' readonly size=8 ></td>
<td>$<input type='text' value='$allotment' name='allotment$id' size=8 onchange='total$id.value = ((allotment$id.value*100) + (balance$id.value*100))/100;'></td>
<td>$<input type='text' value='$total' name='total$id' align='right' size=8 readonly></td>
</tr>";
}

So it basically prints out a table of values, but since they're in a loop, and not necessarily being pulled from my database, I don't know how to pull the totals. What I would like to do is pull the sum from the "allotment" field. Is this possible? Again, I'm sorry if I don't make any sense, but if anyone can help, I'd appreciate it.

Thanks.

I'm not sure I understand everything you're trying to do, but if you want the sum of all the rows' allotment columns, you can use the sum() mysql function.

for example:

SELECT sum( allotment ) FROM `categories`

Yeah, sorry, I need to be more clear. I need to get the sum of the 'total$id' fields. I can get the sum of the allotment column from my database, but I need the sum of some of the totals that are calculated here in my table, that don't exist in my database. Thanks for the reply.

Still not sure if I understand completely...

If you want to sum the totals you calculate in each loop with this line:

$total=$balance+$allotment;

you could instead use an array to hold each of the totals, and then add all/some of the elements together later...for example, you could modify your code to something like this...

$query="SELECT * from categories";
$result = mysql_query($query) or die(mysql_error());
$calcTotal = array();

while($row = mysql_fetch_array($result))
{
$balance=$row['balance']/100;
$allotment=$row['allotment']/100;
$total = $balance+$allotment;
$name=$row['name'];
$id=$row['id'];

$calcTotal[$id] = $total; //stores each calculated total as array element with key of 'id'

$left=$net-$sum;

echo "<tr>
<td align='right'>$name</td>
<td>$<input type='text' value='$balance' name='balance$id' readonly size=8 ></td>
<td>$<input type='text' value='$allotment' name='allotment$id' size=8 onchange='total$id.value = ((allotment$id.value*100) + (balance$id.value*100))/100;'></td>
<td>$<input type='text' value='$ThisTotal' name='total$id' align='right' size=8 readonly></td>
</tr>";
}

you could then use

array_sum($calcTotal);

to add all the values that you calculated, or you could add only the ones you want by calling the individual keys, such as

$myTotal = $calcTotal[12]  + $calcTotal[61]

...

sorry if I'm off track with what you're looking to accomplish!

This article has been dead for over six months. Start a new discussion instead.