Re: Division by 0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Looks to me like you are closing your form before you put anything in it. Therefore, the loan_amount is not set making the value 0. Follow the math, and you are dividing by 1-1.

Change this line:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"></form>

to:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

and you should be good to go.

Joseph

Gary wrote:
I have a mortgage amortization script that was working fine,now it seems to have gone awry. Below is the entire script plus input page. I am getting an error

Warning: Division by zero in /home/content/J/a/y/Jayski/html/one2one/Ricksrecursivefunctions.php on line 47

Which is  (pow($intCalc,$totalPayments) - 1);

Frankly I am not even sure the information is being passed to the script.

Anyone see what I am missing?

Gary


<div id="onecol">Calculate your Loan</div>
<div id="leftcontent">

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"></form>
<table>
 <tr>
      <td style="background-color:#B1D8D8" width="110px">Loan Amount</td>
        <td><input name="loan_amount" type="text" size="25" /> USD</td>
<td><a href="javascript:void(0);" onmouseover="Tip('This is the amount of money to be loaned.')" onmouseout="UnTip()"><img src="images/help.png" class="noborder"/></a></td>
  </tr>
<tr>
      <td style="background-color:#B1D8D8" width="110px">Type of Loan</td>
      <td>
<select name="type" size="1" id="type">
  <option>Installment</option>
  <option>Balloon</option>
</select></td>
<td><a href="javascript:void(0);" onmouseover="Tip('This is the method of repayment.')" onmouseout="UnTip()"><img src="images/help.png" class="noborder"/></a></td>
  </tr>
   <tr>
     <td style="background-color:#B1D8D8" width="100px">Term of Loan</td>
        <td><input name="loan_term" type="text" size="5" />
</select>Months</td>
<td><a href="javascript:void(0);" onmouseover="Tip('This is the amount of time that the money is loaned for.')" onmouseout="UnTip()"><img src="images/help.png" class="noborder" /></a></td>
        </tr>
     <tr>
     <td style="background-color:#B1D8D8" width="140px">Interest Rate</td>
<td><input name="int_rate" type="text" size="10" /> Per Annum</td><td><a href="javascript:void(0);" onmouseover="Tip('Percentage (%) charged on loan on an annual basis. <br />Please see our FAQs for information on usury rates. <br />If no amount is entered this will be 0%.')" onmouseout="UnTip()"><img src="images/help.png" class="noborder" /></a></td>
        </tr>
</table>
<label>
<input type="submit" name="submit" id="submit" value="submit" />
    </label>
</form>
<?php

function amortizationTable($paymentNum, $periodicPayment, $balance,
                           $monthlyInterest) {
    $paymentInterest = round($balance * $monthlyInterest,2);
    $paymentPrincipal = round($periodicPayment - $paymentInterest,2);
    $newBalance = round($balance - $paymentPrincipal,2);
    print "<tr>
           <td>$paymentNum</td>
           <td>\$".number_format($balance,2)."</td>
           <td>\$".number_format($periodicPayment,2)."</td>
           <td>\$".number_format($paymentInterest,2)."</td>
           <td>\$".number_format($paymentPrincipal,2)."</td>
           </tr>";
     # If balance not yet zero, recursively call amortizationTable()
     if ($newBalance > 0) {
        $paymentNum++;
        amortizationTable($paymentNum, $periodicPayment, $newBalance,
                          $monthlyInterest);
     } else {
        exit;
     }
} #end amortizationTable()

   # Loan balance
   $balance =($_POST['loan_amount']);

   # Loan interest rate
   $interestRate = ($_POST['int_rate']);

   # Monthly interest rate
   $monthlyInterest = ("$interestRate / 12");

   # Term length of the loan, in years.
   $termLength =($_POST['loan_term']);

   # Number of payments per year.
   $paymentsPerYear = 12;

   # Payment iteration
   $paymentNumber =($_POST['loan_term']);

   # Perform preliminary calculations
   $totalPayments = $termLength * $paymentsPerYear;
   $intCalc = 1 + $interestRate / $paymentsPerYear;
$periodicPayment = $balance * pow($intCalc,$totalPayments) * ($intCalc - 1) /
                                    (pow($intCalc,$totalPayments) - 1);
   $periodicPayment = round($periodicPayment,2);

   # Create table
   echo "<table width='50%' align='center' border='1'>";
   print "<tr>
          <th>Payment
    Number</th><th>Balance</th>
          <th>Payment</th><th>Interest</th><th>Principal</th>
          </tr>";

   # Call recursive function
amortizationTable($paymentNumber, $periodicPayment, $balance, $monthlyInterest);

   # Close table
   print "</table>";

?>
</div>


__________ Information from ESET Smart Security, version of virus signature database 4932 (20100310) __________

The message was checked by ESET Smart Security.

http://www.eset.com






--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux