Bonjour;

je vous prie pour votre aide, j'arrive pas à exécuter la fonction suivante, ci-dessous le code;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?php
 
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "payment";
 
$link=mysqli_connect($servername,$username,$password,$dbname);
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
  if (isset($_POST['button9'])) {
 
  $query = "SELECT * FROM Contrat Limit 1";
 
  if ($result = mysqli_query($link, $query)) {
 
        while ($row = mysqli_fetch_assoc($result)) {
         $a= $row["PrixHT"];
         $b=$row["Duree"];
         $c=$row["VR"];
         $d=$row["Redevance"];
      ECHO calc_rate($a,$b,$c,$d);
    }
    /* Libération des résultats */
    mysqli_free_result($result); 
}
}
/* Fermeture de la connexion */
mysqli_close($link); 
 
 
 
 
 
function calc_rate($pv, $payno,$RV, $pmt)
{
// check that required values have been supplied
if (empty($pv)) {
   echo "<p class='error'>a value for PRINCIPAL is required</p>";
   exit;
} // if
if (empty($payno)) {
   echo "<p class='error'>a value for NUMBER of PAYMENTS is required</p>";
   exit;
} // if
if (empty($pmt)) {
   echo "<p class='error'>a value for PAYMENT is required</p>";
   exit;
} // if
if (($RV<0)) {
   echo "<p class='error'>RV must be > 0 </p>";
   exit;
} 
 
// now try and guess the value using the binary chop technique
$GuessHigh   = (float)100;    // maximum value
$GuessMiddle = (float)2.5;    // first guess
$GuessLow    = (float)0;      // minimum value
$GuessPMT    = (float)0;      // result of test calculation
 
do {
   // use current value for GuessMiddle as the interest rate,
   // and set level of accurracy to 6 decimal places
   $GuessPMT = (float)calc_payment($pv, $payno, $GuessMiddle,$RV, 6);
 
   if ($GuessPMT > $pmt) {    // guess is too high
      $GuessHigh   = $GuessMiddle;
      $GuessMiddle = $GuessMiddle + $GuessLow;
      $GuessMiddle = $GuessMiddle / 2;
   } // if
 
   if ($GuessPMT < $pmt) {    // guess is too low
      $GuessLow    = $GuessMiddle;
      $GuessMiddle = $GuessMiddle + $GuessHigh;
      $GuessMiddle = $GuessMiddle / 2;
   } // if
 
   if ($GuessMiddle == $GuessHigh) break;
   if ($GuessMiddle == $GuessLow) break;
 
   $int = number_format($GuessMiddle, 9, ".", "");    // round it to 9 decimal places
   if ($int == 0) {
      echo "<p class='error'>Interest rate has reached zero - calculation error</p>";
      exit;
   } // if
 
} while ($GuessPMT !== $pmt);
 
return $int;
 
} // calc_rate =======================================================================
 
 
function calc_payment($pv, $payno, $int,$RV, $accuracy)
{
// check that required values have been supplied
if (empty($pv)) {
   echo "<p class='error'>a value for PRINCIPAL is required</p>";
   exit;
} // if
if (empty($payno)) {
   echo "<p class='error'>a value for NUMBER of PAYMENTS is required</p>";
   exit;
} // if
if (empty($int)) {
   echo "<p class='error'>a value for INTEREST RATE is required</p>";
   exit;
} // if
if (($RV<0)) {
   echo "<p class='error'>RV must be > 0 </p>";
   exit;
} 
// now do the calculation using this formula:
 
//******************************************
//            INT * ((1 + INT) ** PAYNO)
// PMT = PV * --------------------------
//             ((1 + INT) ** PAYNO) - 1
//******************************************
$RV=$RV/pow((1+($int/100)),$payno);
$int    = $int / 100;    // convert to a percentage
$value1 = $int * pow((1 + $int), $payno);
$value2 = pow((1 + $int), $payno) - 1;
$pmt    = ($pv-$RV) * ($value1 / $value2);
// $accuracy specifies the number of decimal places required in the result
$pmt    = number_format($pmt, $accuracy, ".", "");
 
return $pmt;
 
} // calc_payment ====================================================================
?>
 
</div>
</body>
</html>