Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2011, 17h56   #1
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 169
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 169
Points : 37
Points : 37
Par défaut Afficher les dates mensuelles successives dans un tableau en fonction d'une date de départ et d'une durée

Après récupération du $_post['date'] du formulaire:
exemple à dater de ce jour soit le 18/11/2011 j'aimerais afficher dans un tableau automatiquement les dates mensuelles en fonction d'une durée t=3mois par exemple
A savoir:les dates suivantes dans un tableau
18/11/2011(date de départ)
18/12/2011
18/01/2012
18/02/2012
Le problème c'est que je ne vois pas comment manipuler la date avec ses mois et année pour utiliser le for conseillé:
Code :
1
2
3
4
5
6
 
 for ($i=0;$i<4; $i++)
 { 
   $mois = (($moisCourant-1 + $i) % 12)+1;
    $annee= ($anneeCourante + ((($moisCourant+$i)>12) ? 1 : 0 )); 
 }
Sincères remerciements pour votre aide
Claudine
Claudine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 18h26   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Hello

Il faut utiliser strtotime

Code :
1
2
3
4
5
6
$from = $current = time();
$month_span = 3;
 
do {
  echo date('d/m/y', $current) . '<br />';
} while (($current = strtotime('+1 month', $current)) && $month_span--);
Et voilà...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/11/2011, 18h29   #3
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
+1 month ou next month (j'aime bien l'expressivité de strtotime( )).
Ceci dit il va probablement y avoir un effet de bord si la date de départ est par exemple 31/10 ou 31/12.

Claudine, quelle est la finalité de la chose ?
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/11/2011, 07h53   #4
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 169
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 169
Points : 37
Points : 37
Bonjour Benjamin Delespierre,
Sincères remerciements pour ces lignes de code et veuillez m'excuser pour ce contre-temps(problèmes de santé).
Malheureusement ,(c'est ma faute car j'ai parlé de date de ce jour ) la date introduite par le formulaire est quelconque et ces lignes ne fonctionnent que pour la date du jour. Voulez-vous adapter pour la récupération du formulaire:
Code :
1
2
 
$date=$_POST['date'];
car si j'indique $date au lieu de date dans l'echo il m'indique le code d'erreur: date indéfinie
Salutations
Claudine
Claudine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2011, 08h04   #5
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 169
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 169
Points : 37
Points : 37
Bonjour Séb,
Merci pour votre commentaire éclairé.
En ce qui concerne la finalité: j'aimerai créer un tableau personnel d'amortissements d'un prêt en vue de récupérer les sommes des intérêts et capitaux remboursés mensuellement et annuellement en vue d'adapter la situation indiciaire de l'année .
Je veux essayer en PHP mais je doute de mes capacité et de la possibilité de le réaliser avec PHP.Avant de poursuivre , est-ce réalisable par cette méthode?
remerciements pour vos conseils.
Claudine
Claudine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2011, 11h01   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Citation:
Envoyé par Claudine Voir le message
j'aimerai créer un tableau personnel d'amortissements d'un prêt en vue de récupérer les sommes des intérêts et capitaux remboursés mensuellement et annuellement en vue d'adapter la situation indiciaire de l'année .
Je veux essayer en PHP mais je doute de mes capacité et de la possibilité de le réaliser avec PHP.Avant de poursuivre , est-ce réalisable par cette méthode?
Pas de souci du côté de PHP. Donne les données attendues en entrée/sortie et la méthode de calcul si tu veux un peu d'aide ;-)
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/11/2011, 12h13   #7
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Citation:
Envoyé par Claudine Voir le message
Bonjour Benjamin Delespierre,
Sincères remerciements pour ces lignes de code et veuillez m'excuser pour ce contre-temps(problèmes de santé).
Malheureusement ,(c'est ma faute car j'ai parlé de date de ce jour ) la date introduite par le formulaire est quelconque et ces lignes ne fonctionnent que pour la date du jour. Voulez-vous adapter pour la récupération du formulaire:
Code :
1
2
 
$date=$_POST['date'];
car si j'indique $date au lieu de date dans l'echo il m'indique le code d'erreur: date indéfinie
Salutations
Claudine
Il faut convertir la date saisie en timestamp (entier) toujours avec strtotime. Ou la découper et utiliser mktime si cette date n'est pas reconnue par strtotime.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 20h23   #8
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 169
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 169
Points : 37
Points : 37
Bonsoir Séb,
voici mon travail de deux jours avec un formulaire pour introduire les principales caractéristiques d'un emprunt(somme empruntée, taux, durée et date) que je vous soumet:
Code :
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
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
	   "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">	
<html>
<style type="text/css">
<!--
.Style1 {font-family: Verdana, Arial, Helvetica, sans-serif}
.Style2 {font-family: "Times New Roman", Times, serif}
-->
</style>
<head>
 
<title> FORMULAIRE </title>
 
</head>
<body>
 
<form method="post" action= "Exposantnegatif.php">
<h1 class="Style1"> <font size="4">Formulaire d'emprunt</font></h1>
<table width="408" border="1" cellspacing="0" bordercolordark="white" bordercolorlight="black" align="center">
<tr>
<td width="153"> <span class="Style1"><font size="3">Montant de l'emprunt </font></span></td>
<td width="245"><span class="Style2"><font size="3">
  <INPUT type="text" value="" name="Montant" size="10" maxlenght="8"> 
  en €</font></span></td>
</tr>
<tr>
<td width="153">  <font size="3" face="Verdana">Durée de l'emprunt </font></td>
<td width="245"><font size="3" face="Verdana"><INPUT type="text" value="" name="Duree" size="10" maxlenght="8">en mois</font></td>
</tr>
<tr>
<td width="153"> <font size="3" face="Verdana">Taux d'intérêt </font></td>
            <td width="245">
                <p align="left"><font size="3" face="Verdana"><INPUT type="text" value="" name="Taux" size="10" maxlenght="8"> % par an</font></td>
    </tr>
 
<tr>
 
<tr>
<td width="153"><font size="3" face="Verdana">Date de l'emprunt</font></td>
<td width="245"><font size="3" face="Verdana"><INPUT type="text" value="" name="Date" size="3" maxlenght="3"> jj/mm/aaaa</font></td
></tr>
 
 
 
 
 
  </table>
 
    <p align="center"><input type="submit" value="Soumettre">
</p>
</form>
</body>
                </html>
puis le tableau d'amortissement que je veux remplir après calcul:
Code :
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
 
<?php
//*$duree=$_POST['Duree'];
$duree=$_POST['Duree'];
$n=$duree;
for ($i=1;$i <=$n-1; $i++)
//echo'Ech'.$i.'<br/>;
?>
<?php
$date=$_POST['Date'];
//*Calculs pour déterminer la mensualité à payer.
 
//*a)Montant du capital emprunté
$montant=$_POST['Montant'];//Récupération de la  valeur du formulaire
$c=$montant;
//$c=3300.90;
//* b)Taux annuel en %
$taux=$_POST['Taux'];//Récupération de la valeur du formulaire
 
$t=$taux;
 
//*c)Durée du prêt en mois
$duree=$_POST['Duree'];//Récupération de la valeur du formulaire
 
$n=$duree;
 
 
// Calcul de la mensualié à payer(constante
$tpc=$t/100;
 
$tm=$tpc/12;
//$n=36;// la durée en mois
$num=$c*$tm;
//echo$num
//denominateur...............
 
$yp=1+$tm;
//echo$yp
$y=pow($yp,-$n);
$deno=1-$y;
$m=$num/$deno;
//echo round($m, 2);
 
//* Remboursement en intérêts
$RembI=$c*$t/1200;
//$RembI=$RenI;
?>
<?php
//*Remboursement en capital
$RembC=$m-$RembI;
//boucle N°d'échéance
//$n=$_POST['Duree'];
//Solde Créance
$SC=$n*$m
//**************************************************************************
//<strong><u>Toutes les formules</u></strong>
//* Calcul du SoldeCapitalRestantDu:(SCRD)
//Echéance1: =Capital(c) de départ
//Echéance2: =SCRD1-Remboursement En Capital2
//Echéance3: =SCRD2-Remboursement En Capital3 et aisi de suite
 
//Remboursement en capital
//RemboursEnCapital(1)=$m-RemboursEnInterets1
//RemboursEnCapital(2)=$m-RemboursEnInterets2
 
//remboursement en intérêts
//RemboursEnIntérêts(1)=$c1*$t/1200
////RemboursEnIntérêts(2)=$c2*$t/1200
 
//Solde créance1= nbre d'échéances($n=36)*Mensualité à payer soit($n*$m)-$m
//Solde créance2= nbre d'échéances($n=35)*Mensualité à payer soit($n*$m)-$m
//************************************************************************
?>
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 
<link rel="stylesheet" media="screen" type="text/php" title="formulaireEmprunt" 
<title> FORMULAIRE </title>
</head>
<body>
<h1> <font size="2" face="Verdana"><b>Plan de remboursement</b></font><font face="Verdana"></font></h1>
 
 
 
 
 
<table border="1" cellspacing="0" bordercolordark="white" bordercolorlight="black" align="center">
<tr>
      <td> 
        <p align="center"><font size="1" face="Verdana">N°Echeance <u></u></font></p>
        <td> 
        <p align="center"><font size="1" face="Verdana">DateEcheance <u></u></font></p>
        <td>
        <p align="center"><font size="1" face="Verdana">SoldeCapitalRestantDu<u></u></font></p>
        <td> 
        <p align="center"><font size="1" face="Verdana">SoldeCreance <u></u></font></p>
        <td>
        <p align="center"><font size="1" face="Verdana">RembEnCapital<u></u></font></p>
        <td> 
      <p align="center"><font size="1" face="Verdana">RembEnInterets <u></u></font></p>
        <td>
        <p align="center"><font size="1" face="Verdana">MensualiteAPayer<u></u></font>        <td> 
 
 
<font size="1" face="Verdana"><u></u></font></tr>
<tr>
       <td> 
     <p align="center"><font size="1" face="Verdana"><u><?php echo round($i, 2)  ?> </u></font></p>
        </td>
 
        <td> 
     <p align="center"><font size="1" face="Verdana"><u><?php echo $date=$_POST['Date'] ?> </u></font></p>
        </td>
        <td> 
            <p align="center"><font size="1" face="Verdana"><u><?php echo $c ?> </u></font></p>
        </td>
        <td> 
            <p align="center"><font size="1" face="Verdana"><u><?php echo round($SC, 2)?> </u></font></p>
        </td>
        <td> 
            <p align="center"><font size="1" face="Verdana"><u><?php echo round($RembC, 2) ?></u></font></p>
        </td>
        <td> 
            <p align="center"><font size="1" face="Verdana"><u><?php echo round($RembI, 2)?></u></font></p>
        </td>
 
 
          <td> 
            <p align="center"><font size="1" face="Verdana"><u><?php echo round($m, 2) ?></u></font></p>
        </td></tr>
<font size="1" face="Verdana"><u>
</u></font>
</body>
j'arrive à afficher toutes les données correspondant à la 1ère échéance mais pas la suite car les variables changent en tenant compte des formules....
Bref,j'ai besoin d'un coup de pouce pour afficher toutes les échéances correspondant à la durée exprimée en mois et adapter les formules au N°d'échéance.Le problème de l'affichage des dates correspondant aux échéances subsiste !
Sincères remerciements pour votre aide
Claudine
Claudine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 15h20   #9
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 169
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 169
Points : 37
Points : 37
BonjourBenjamin,
Code :
1
2
3
4
5
6
7
 
$from = $current = time();
$month_span = 3;
 
do {
  echo date('d/m/y', $current) . '<br />';
} while (($current = strtotime('+1 month', $current)) && $month_span--);
Ce code ne me permet pas de résoudre mon problème car la date n'est pas nécessairement la date du jour et dépend d'une date quelconque introduite dans le formulaire.
Est_il possible de le résoudre autrement?
Merci
Claudine
Claudine est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 22/11/2011, 15h42   #10
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Je pensais avoir été clair en disant qu'il fallait convertir la date saisie en timestamp et de l'utiliser en lieu et place de time() (qui renvoie effectivement le timestamp actuel).

Donc voici ce que ça nous donne avec une date arbitraire qui n'est pas nécessairement la date du jour.

Code :
1
2
3
4
5
6
7
8
9
// Fourni par le formulaire
$_POST['date'] = '1987-09-23';
 
$current    = strtotime($_POST['date']);
$month_span = 3;
 
do {
  echo date('d/m/y', $current) . '<br />';
} while (($current = strtotime('+1 month', $current)) && $month_span--);
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 14h58   #11
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 169
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 169
Points : 37
Points : 37
Bonjour Benjamin,
Un grand merci pour votre explications du code.
Je connais l'affichage des données d'uneBDD dans un tableau html, mais dans le cas présent: c'est différent.
Code :
1
2
3
4
5
6
7
8
9
10
 
// Fourni par le formulaire
$_POST['date'] = '1987-09-23';
 
$current    = strtotime($_POST['date']);
$month_span = 3;
 
do {
  echo date('d/m/y', $current) . '<br />';
} while (($current = strtotime('+1 month', $current)) && $month_span--);
je ne trouve aucune aide ou tutoriel qui me permette d'afficher cette série de date dans la colonne 'Date' d'un tableau html.
Voulez-vous m'aider(une dernière fois!).
D'avance, je vous remercie chaleureusement.
Claudine
Claudine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 18h24   #12
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Citation:
je ne trouve aucune aide ou tutoriel qui me permette d'afficher cette série de date dans la colonne 'Date' d'un tableau html.
C'est normal vu qu'un tableau se construit par ligne et non par colonne.

Le mieux à faire est de l'insérer dans la collection (ou l'array) qui sert à l'affichage du tableau HTML.

Ex:
Code :
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
 
<?php
// Données provenant de MySQL
$data = array(
  array('nom' => 'foo1', 'prenom' => 'bar1'),
  array('nom' => 'foo2', 'prenom' => 'bar2'),
  array('nom' => 'foo3', 'prenom' => 'bar3'),
  array('nom' => 'foo4', 'prenom' => 'bar4'),
);
 
// Données provenant du formulaire
$_POST['date'] = '1987-09-23';
 
$current    = strtotime($_POST['date']);
$month_span = 3;
$dates = array();
 
do {
  $dates[] = date('d/m/y', $current) . '<br />';
} while (($current = strtotime('+1 month', $current)) && $month_span--);
 
$c_data = count($data);
for ($i = 0; $i < $c_data; $i++) {
  // Attention, à cette étape il faut être sûr que
  // $data à bien le même nombre d'enrées
  // que $dates sinon WARNING
   $data[$i]['date'] = $date[$i];
}
?>
<!-- Mise en forme du tableau HTML -->
<table>
  <thead>
     <tr>
       <th>Nom</th>
       <th>Prenom</th>
       <th>Date</th>
     </tr>
  </thead>
  <tfoot>
  </tfoot>
  <tbody>
  <?php foreach ($data as $r) : ?>
    <tr>
      <td><?=$r['nom']?></td>
      <!-- ou <?php echo $r['nom']?> si l'option short_open_tag est à off (voir phpinfo() -->
      <td><?=$r['prenom']?></td>
      <td><?=$r['date']?></td>
    </tr>
  <?php endforeach ?>
  </tbody>
</table>
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 20h23   #13
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 169
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 169
Points : 37
Points : 37
Bonsoir Benjamin,
Merci pour cette réponse rapide.
J'ai modifié la ligne 27 et ajouté (s) à $date car message d'erreur(undefined variable date on line 27
Code :
1
2
 
  $data[$i]['date'] = $dates[$i];
Maintenant plus de message d'erreur mais affichage des titres:
nom prenom date
et malheureusement rien dans les colonnes.
Voulez-vous regarder où est situé le petit problème?
Merci
Claudine
Claudine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 08h18   #14
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 169
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 169
Points : 37
Points : 37
Bonjour Benjamin,
Mille excuses, erreur de ma part . L'affichage est correct.
Dans mon projet, ce système pose problème car je dois avoir fixé d'avance autant d'array que la variable $mont_span.Je ne connais pas d'avance la valeur de cette variable.
Ainsi, si j'ai 60 mensualitées ou plus, ce sera assez fastidieux. Par contre la mensualité est une constante donc identique pour les60 ou plus mensualités.
Si j'applique le 1er array(array('N°Echeance' => 'Ech1')......
Bref, je vais essayer de manipuler et étudier ce programme.
Merci pour votre aide
Claudine
Claudine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 17h50   #15
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 169
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 169
Points : 37
Points : 37
Par défaut Fonctions pour calculer un tableau d'amortissement en php

Bonjour à tous,
j'ai réaliser un début de tableau d'amortissement avec php, mais j'avoue que c'est assez fastidieux et probablement impossible comparé à excel.
Je l'ai réalisé en tenant compte de 4 mensualités mais si j'ai un prêt de 36 voir 72 mensualités c'est impossible à réaliser!
Je vous propose mon travail et demande votre avis pour voir, s'il exixte des fonctions particulières pour simplifier le traval:
Code :
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
 
<?php
 
$mensualite=1010.44;
$t=4;
$cap1=4000;
$taux=5/100;
$REI1=$cap1*$taux/12;
 
 
$REC1=$mensualite-$REI1;
 
$SCRD2=$cap1-($mensualite-$REI1);
$REI2=$SCRD2*$taux/12;
$REC2=$mensualite-$REI2;
$REC2=$mensualite-$REI2;
$SCRD3=$SCRD2-($mensualite-$REI2);
$REI3=$SCRD3*$taux/12;
$REC3=$mensualite-$REI3;
$SCRD4=$SCRD3-($mensualite-$REI3);
$REI4=$SCRD4*$taux/12;
$REC4=$mensualite-$REI4;
$REI5=$SCRD5*$taux/12;
$REC5=$mensualite-$REI5;
$SCRE1=$t*$mensualite;
$SCRE2=$SCRE1-$mensualite;
$SCRE3=$SCRE2-$mensualite;
$SCRE4=$SCRE3-$mensualite;
$SCRE5=$SCRE4-$mensualite;
$SCRE6=$SCRE5-$mensualite;
 
 
$data= array(
 
 
  array('N°Echeance' => 'Ech1', 'SoldeCreance' => $SCRE1, 'SCRD' => $cap1,'REC'=>$mensualite-$REI1,'RembEnInterets' => $REI1),
  array('N°Echeance' => 'Ech2', 'SoldeCreance' => $SCRE2, 'SCRD' => $SCRD2,'REC'=>$mensualite-$REI2,'RembEnInterets' => $REI2),
  array('N°Echeance' => 'Ech3', 'SoldeCreance' => $SCRE3, 'SCRD' => $SCRD3,'REC'=>$mensualite-$REI3,'RembEnInterets' => $REI3),
  array('N°Echeance' => 'Ech4', 'SoldeCreance' => $SCRE4, 'SCRD' => $SCRD4
  ,'REC'=>$mensualite-$REI4,'RembEnInterets' => $REI4),
  array('N°Echeance' => 'Ech5', 'SoldeCreance' => $SCRE5, 'SCRD' => $SCRD5,'REC'=>$mensualite-$REI5,'RembEnInterets' => $REI5),
  array('N°Echeance' => 'Ech6', 'SoldeCreance' => $SCRE6, 'SCRD' => $SCRD6,'REC'=>$mensualite-$REI6,'RembEnInterets' => $REI6),
);
//Données provenant de calcul préalables
//Numérotation
$i=0;
do
{
$num[]=$i+1; 
//echo $e, "<br/>";
$i++;
}
while($i<=$t);
 
 
// Données provenant du formulaire
$_POST['date'] = '2011-11-27';
 
$current    = strtotime($_POST['date']);
//$t=4;
$month_span = $t-1;
$dates = array();
 
do {
  $dates[] = date('d/m/y', $current) . '<br />';
} while (($current = strtotime('+1 month', $current)) && $month_span--);
 
//Mensualité (voir calcul)
$mensualite= array();
$mensualite=1010.44;// par exemple mais voir calcul réel
for ($i=1; $i <=$t; $i++)
{
 
$mens[]=$mensualite; 
 
}
$c_data = count($data);
for ($i = 0; $i < $c_data; $i++) {
 
   $data[$i]['date'] = $dates[$i];
   $data[$i]['$num']= $num[$i];
   $data[$i]['$mens']= $mens[$i];
}
?>
<!-- Mise en forme du tableau HTML -->
<table>
  <thead>
     <tr>
       <th>N°Ech</th>
       <th>N°</th>
       <th>Date</th>
	 	   <th>SoldeCapRestantDû</th>
		<th>SoldeCreance</th>   
	   <th>RembEnCap</th>
	   <th>RembEnInterets</th>
	   <th>A payer</th>
     </tr>
  </thead>
  <tfoot>
  </tfoot>
  <tbody>
 
  <?php foreach ($data as $r) : ?>
    <tr>
      <td><?php echo $r['N°Echeance']?></td>
 
      <td><?php echo $r['$num']?></td>
      <td><?php echo $r['date']?></td>
 
 
	  <td><?php echo $r['SCRD']?></td>
	  <td><?php echo $r['SoldeCreance']?></td>
	  <td><?php echo  $r['REC']?></td>
	  <td><?php echo $r['RembEnInterets']?></td>
	  <td><?php echo $r['$mens']?></td>
    </tr>
  <?php endforeach ?>
  </tbody>
</table>
De plus, je n'arrive pas à arrondir les résultats php echo round($,2)pour le rembEnInterets.
Sincères remerciements pour qui pourra m'aider.
Claudine
Claudine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 11h59   #16
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Citation:
j'avoue que c'est assez fastidieux et probablement impossible comparé à excel.
C'est bien connu, Excel c'est le meilleur logiciel de tous les temps
Si tu es plus à l'aise avec Excel qu'avec PHP, pourquoi essayer de faire un tableau d’amortissement en PHP ?

Citation:
Je l'ai réalisé en tenant compte de 4 mensualités mais si j'ai un prêt de 36 voir 72 mensualités c'est impossible à réaliser!
Non c'est possible, tu n'y arrives pas c'est tout. Il faudrait peut être revoir l'algorithme mais j'ai complètement oublié mes cours de compta et je serais bien incapable de valider un algo d'amortissement... un petit rappel me serait utile si tu veux que je continue à me pencher sur ton problème.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h20.


 
 
 
 
Partenaires

Hébergement Web