will_1990 Posted February 26, 2010 Share Posted February 26, 2010 Hello all, long time no post! I have missed php!! Thanks in advance for any advice!! I am trying to add an updating price variable to 0 to give a total price, eg someone selects how many items they want, these are listed and the total price is added, however it seems to keep giving me the final price of the last item in my flat file database - whether or not it is selected as an item.... here is my code! <?php $var=0; foreach ($_POST as $ID2 => $price) { if(!($lines = file('php_ffdb.txt'))) {echo 'ERROR: Unable to open file! </body></html>'; exit;} foreach($lines as $theline) { list($ID, $title, $author, $description, $price, $image) = split('\|',$theline); if($ID==$ID2) { echo " <table> <tr> <td> $price</td> <td>$ID</TD> </TABLE> "; } } $sum=$var + $price; echo("$sum"); } ?> Any advice would be great!! Thanks!!! Will Quote Link to comment https://forums.phpfreaks.com/topic/193464-adding-an-updating-variable/ Share on other sites More sharing options...
PFMaBiSmAd Posted February 26, 2010 Share Posted February 26, 2010 I doubt that your entire $_POST array is just a list of id's and their prices. Post an example of what data your form submits. You should move the code that is reading the file so that it is before the first foreach() loop. Where it is now causes it to re-read the file on every post value. Your code is not accumulating or adding up the values inside of the conditional test when a match is found. You would need something like - $var += $price; And then $var would be the total at the end of the posted logic. Quote Link to comment https://forums.phpfreaks.com/topic/193464-adding-an-updating-variable/#findComment-1018515 Share on other sites More sharing options...
will_1990 Posted February 26, 2010 Author Share Posted February 26, 2010 cheers for the quick reply, im looking into moving the for loop just thought id post this first - i am posting just the id i thought id use a short cut and have the name of the check box the $ID tag as thats all i need as its unique to each entry.... <?php if(!($lines = file('php_ffdb.txt'))) {echo 'ERROR: Unable to open file! </body></html>'; exit;} foreach($lines as $theline) { list($ID, $title, $author, $description, $price, $image) = split('\|',$theline); echo " <tr align='center'> <td><img src='$image' width='82' height='125'></td> <td align='center'>$ID. $title <br><font face='arial' size='1'>$description</font>£$price </td> <td> <input type='checkbox' name='$ID'><br></td> </tr> "; } ?> Here is my flat file database - dont believe i have to use this sql would be far better.. but it cant be helped! 1|The Lovely The Lovely Bones|Alice Sebold|<b>RRP:</b>£1.97<br><b>You Save:</b> £3.02 (61%) <br><b>Price:</b> |3.00|images/TLB.jpg 2|The Girl with the Dragon Tattoo|Stieg Larsson|<b>RRP:</b>£3.48<br><b>You Save:</b>£4.51 (56%)<br><b>Price:</b>|3.00|images/TGWDT.jpg 3|Mums Know Best|Dave Myers|<b>RRP:</b> £20.00<br><b>You Save: </B> 4.13 (52%)<br><b>Price:</b> |3.50|images/MKB.jpg 4|The Girl Who Played with Fire|Stieg Larsson|<b>RRP:</b> £7.99<br><b>You Save: </B> £4.51 (56%)<br><b>Price:</b> |1.98|images/TGWPWF.jpg 5|Breaking Dawn (Twilight Saga)|Stephenie Meyer|<b>RRP:</b> £14.99 <br><b>You Save: </B> £7.50 (50%)<br><b>Price:</b>|7.50|images/BD.jpg 6|101 One-pot Dishes|Good Food Magazine|<b>RRP:</b> £4.99 £1.97<br><b>You Save:</B> £3.02 (61%)<br><b>Price:</b>|1.97|images/GF.jpg 7|Eclipse (Twilight Saga)|Stephenie Meyer|<b>RRP:</b> £7.99 <br><b>You Save: </B> £4.53 (50%)<br><b>Price:</b>|3.46|images/Eclipse.jpg Will Quote Link to comment https://forums.phpfreaks.com/topic/193464-adding-an-updating-variable/#findComment-1018523 Share on other sites More sharing options...
will_1990 Posted February 26, 2010 Author Share Posted February 26, 2010 Solved this! Great thanks for your help, i wasnt aware of the += operator, thanks! Is there a way to ensure that if 1.00 and 1.00 were added it would return 2.00 instead of 2? Here is how i changed the code: <?php if(!($lines = file('php_ffdb.txt'))) {echo 'ERROR: Unable to open file! </body></html>'; exit;} foreach ($_POST as $ID2 => $price) { foreach($lines as $theline) { list($ID, $title, $author, $description, $price, $image) = split('\|',$theline); if($ID==$ID2) { echo " <table> <tr> <td> $price</td> <td>$ID</TD> </TABLE> "; $var += $price; } } } echo ("$var"); ?> Thanks very much for your help!! Quote Link to comment https://forums.phpfreaks.com/topic/193464-adding-an-updating-variable/#findComment-1018529 Share on other sites More sharing options...
PFMaBiSmAd Posted February 26, 2010 Share Posted February 26, 2010 http://us.php.net/manual/en/function.number-format.php or http://us.php.net/manual/en/function.sprintf.php Quote Link to comment https://forums.phpfreaks.com/topic/193464-adding-an-updating-variable/#findComment-1018535 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.