Tom's Guide > Forum > Programmation > [Résolu] Mauvaise syntaxe php?

[Résolu] Mauvaise syntaxe php?

Forum Programmation : [Résolu] Mauvaise syntaxe php?

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !

Lire la meilleure réponse, apportée par SiM07.

Mot :    Pseudo :           
 

Slt, je pense que je vais mal coder ma page parce que je fais un formulaire et celon ce que choisit l'utilisateur, ça doit renvoyer sur un tableau diférent (1 choix, 2 possibilités) et le problème est que les deux tableau s'affiche en cochant n'importe quel choix, comment ça se fait, où est l'erreur svp?

Je vous montre mon code:

1ère page (remplissage du formulaire pour l'emreunt):

Code :
  1. <html>
  2. <head>
  3. <title>Formulaire de saisie de l'emprunt</title>
  4. <link rel="stylesheet" type="text/css" href="style.css">
  5. </head>
  6. <body>
  7. <style>
  8. h1 {font-family:freesherif;font-size:15pt;color:black;font-style:bold;text-decoration:underline}
  9. h2 {font-family:freesherif;font-size:32pt;color:black;font-style:bold;text-align:center;}
  10. </style>
  11. <form action="tableau_amortissement.php" method="POST">
  12. <TABLE BORDER="2">
  13.   <CAPTION> <h2>Formulaire de saisie de l'emprunt</h2> </CAPTION>
  14. <br/>
  15. <br/>
  16.  
  17.         <TR>
  18.         <TH> <h1> Quelle somme voulez-vous emprunter? </h1> </TH>
  19.         <TH>
  20.         <INPUT type=text name="montant" class="marge">
  21.         </TH>
  22.         <TD>&euro;</TD> 
  23.         </TR>
  24.         <TR>
  25.         <TH> <h1>Quel est le taux de votre emprunt?</h1> </TH>
  26.         <TD>
  27.         <INPUT type=text name="taux" class="marge">
  28.         </TD>
  29.         <TD>%</TD>
  30.         </TR>
  31.         <TR>
  32.         <TH><h1>Choisissez votre remboursement</h1></TH>
  33.         <TH><input type="radio" name="remboursement" value="1" />Remboursement constant<br/>
  34.             <input type="radio" name="remboursement" value="2" />Versement constant</TH>
  35.         </TR>
  36.         <TR>
  37.         <TH> <h1>A partir de quelle date commence votre emprunt?</h1> </TH>
  38.         <TD>
  39.                     <select name="jour">
  40.         <?php  for ( $i=1; $i<=31; $i++ ) {
  41.             echo "<option value=$i>$i</option>";
  42.                                         }  ?>
  43.                   </SELECT>
  44.                                                    
  45.                  
  46.                   <SELECT name="mois">
  47.         <?php  $mois=array( "", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" );
  48.               for ($numero=1; $numero<=12; $numero++ )
  49.             {
  50.             echo "<option value=$numero>$mois[$numero]</option>";
  51.             } ?>
  52.                   </SELECT>
  53.                   <SELECT name="annee">
  54.         <?php 
  55.               for ($an=1900; $an<=2009; $an++ )
  56.               {
  57.               echo "<option value=$an>$an</option>";
  58.               } ?>
  59.                   </SELECT>
  60.         </TD>
  61.         </TR>
  62.      
  63.      
  64.         <TR>
  65.         <TH> <h1>Quelle est la dur&eacute;e de l'emprunt?</h1> </TH>
  66.         <TD>
  67.         <INPUT type=text name="duree">
  68.         </TD>
  69.         <TD>
  70.         <SELECT name="type_duree">
  71.         <OPTION VALUE=1>mois</OPTION>
  72.         <OPTION VALUE=12>ann&eacute;e(s)</OPTION>
  73.         </SELECT>
  74.         </TD>
  75.         </TR>
  76.      
  77.      
  78.         <TR>
  79.         <TH> <h1>Quelle est votre p&eacute;riodicit&eacute;e pour l'emprunt?</h1> </TH>
  80.         <TD><SELECT name="periodicite">
  81.         <OPTION VALUE=1>mensuel</OPTION>
  82.         <OPTION VALUE=3>trimestriel</OPTION>
  83.         <OPTION VALUE=6>semestriel</OPTION>
  84.         <OPTION VALUE=12>annuel</OPTION>
  85.         </SELECT></TD>
  86.         </TR>
  87. </table>
  88. <table>
  89.     <TR>
  90.         <TD COLSPAN=2>
  91.         <INPUT type="submit" value="Envoyer">
  92.         </TD>
  93.         </TR>
  94. </table>
  95. </FORM>
  96. </body>
  97. </html>



2ème page (la récupération et tratement):

Code :
  1. <html>
  2. <head>
  3. <title>Tableau d'amortissement</title>
  4. <link rel="stylesheet" type="text/css" href="style.css">
  5. </head>
  6. <?php
  7. $montant= $_POST['montant'];
  8. $taux=$_POST['taux'];
  9. $jour=$_POST['jour'];
  10. $mois=$_POST['mois'];
  11. $annee=$_POST['annee'];
  12. $duree=$_POST['duree']*$_POST['type_duree'];
  13. $periodicite=$_POST['periodicite'];
  14. $remboursement=$_POST["remboursement"];
  15. ?>
  16. <body>
  17. <CAPTION><h1>Tableau d'amortissement de l'emprunt</h1></CAPTION>
  18. <TABLE BORDER="2">
  19.  
  20.     <TR>
  21.     <TH> <h1> Somme emprunt&eacute;e </h1> </TH>
  22.     <td><? echo $montant ."&euro;" ?></td>
  23.     </TR>
  24.     <TR>
  25.     <TH> <h1> Taux de l'emprunt</h1> </TH>
  26.     <td><? echo $taux . "%" ?></td>
  27.     </TR>
  28.     <TR>
  29.     <TH> <h1>D&eacute;but de l'emprunt</h1> </TH>
  30.     <TD><? echo $jour . $mois . $annee ?></TD>
  31.     </TR>
  32.      
  33.      
  34.     <TR>
  35.     <TH> <h1> Dur&eacute;e de l'emprunt</h1> </TH>
  36.     <TD><? echo $duree." mois" ?></TD>
  37.     </TR>
  38.      
  39.      
  40.     <TR>
  41.     <TH> <h1>P&eacute;riodicit&eacute;e de l'emprunt</h1> </TH>
  42.     <TD><? echo $periodicite." mois" ?></TD>
  43.     </TR>
  44.          
  45.    
  46. </TABLE>
  47. <br/>
  48. <br/>
  49. <br/>
  50. <? (if $remboursement == "1" ) { ?>
  51. <TABLE BORDER="2">
  52. <tr>
  53. <th width="50px">Num&eacute;ro</th>
  54. <th width="60px">Base</th>
  55. <th width="120px">Remboursement</th>
  56. <th width="60px">Cumul</th>
  57. <th width="60px">VNC</th>
  58. <th>Int&ecirc;ret</th>
  59. <th>Versement</th>
  60. </tr>
  61. <?php
  62. // calculs de première ligne
  63. //--> initialisation
  64. $i=1;
  65. $base=$montant;
  66. $cuml=0;
  67. $kr=$montant;
  68. // montant d'un remboursement
  69. $nbr=$duree/$periodicite;
  70. $remb=round($montant/$nbr,2);
  71. // taux périoduque
  72. $taux_p=$taux/12*$periodicite;
  73. //--> calculs complémentaires de première ligne
  74. $cumul=$cumul+$remb;
  75. $kr=$kr-$remb;
  76. $int=round($base*$taux_p,2);
  77. $vers=round($remb+$int,2);
  78. echo"
  79. <tr>
  80. <td>".$i."</td>
  81. <td>".$base."</td>
  82. <td>".$remb."</td>
  83. <td>".$cumul."</td>
  84. <td>".$kr."</td>
  85. <td>".$int."</td>
  86. <td>".$vers."</td>
  87. </tr>";
  88. for ($i=2;$i<$nbr;$i++) {
  89. $base=$kr;
  90. $cumul=$cumul+$remb;
  91. $kr=$kr-$remb;
  92. $int=$base*$taux_p;
  93. $vers=$remb+$int;
  94. echo"
  95. <tr>
  96. <td>".$i."</td>
  97. <td>".$base."</td>
  98. <td>".$remb."</td>
  99. <td>".$cumul."</td>
  100. <td>".$kr."</td>
  101. <td>".$int."</td>
  102. <td>".$vers."</td>
  103. </tr>";
  104. }
  105. // calculs et affichage de dernière ligne
  106. $base=$kr;
  107. $remb=$base;
  108. $cumul=$cumul+$remb;
  109. $kr=$kr-$remb;
  110. $int=$base*$taux_p;
  111. $vers=$remb+$int;
  112. echo"
  113. <tr>
  114. <td>".$i."</td>
  115. <td>".$base."</td>
  116. <td>".$remb."</td>
  117. <td>".$cumul."</td>
  118. <td>".$kr."</td>
  119. <td>".$int."</td>
  120. <td>".$vers."</td>
  121. </tr>";
  122. ?>
  123. </TABLE>
  124. <? }
  125. else
  126. { ?>
  127. <TABLE BORDER="2">
  128. <tr>
  129. <td>Ann&eacute;e</td>
  130. <td>Base</td>
  131. <td>Remboursement</td>
  132. <td>Cumul</td>
  133. <td>Capital restant</td>
  134. <td>Interêts</td>
  135. <td>Versement</td>
  136. </tr>
  137. </TABLE>
  138. <? } ?>
  139. </body>
  140. </html>

------------------------------ I5 750; BFG GTX 280 1Go; Asus P7P55D Pro; 2*2Go G.Skill PC16000; watercooling CPU + GPU
<pre> ne sert qu'à la mise en forme.

 

print_r($_POST); permet de facilement voir tous les élements du tableau $_POST. tu peux effectuer des print_r sur tout quasiment, c'est bien pour visualiser une succession de tableau imbriqué par exemple. (tableau ou objet)

 

error_reporting(E_ALL); permet d'afficher tous les messages d'erreur. Souvent les configuration PHP sont configurées pour n'afficher qu'au maximum les Warning.

 

Un T_NOTICE c'est par exemple ceci :

 
Code :
  1. $a = 1;
  2. if($a == $b) echo "toto";
 

$b n'a jamais été initialisé et tu fais un test dessus ... pas bon ! tu auras dans ce cas un message d'erreur.

 


Sur un site en production, il est bon de passer error_reporting(0); afin de n'afficher aucun message d'erreur.

  

Au passage, si ton sujet est résolu, merci de le passer en tant que tel en cliquant sur la coupe (en haut à droite de tous les messages) du message qui t'a le plus aidé.

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

up svp

------------------------------ I5 750; BFG GTX 280 1Go; Asus P7P55D Pro; 2*2Go G.Skill PC16000; watercooling CPU + GPU
Répondre à absot77

<? (if $remboursement == "1" ) { ?>

par

<? if ($remboursement == 1 ) { ?>

et

$remboursement=$_POST["remboursement"];

par

$remboursement=$_POST['remboursement'];

sinon fait un for each($_POST) pour voir ce que retourne tout tes $post

Répondre à okinou

Je viens de le faire et ça me met toujours les deux tableau... :??:

Tout a l'air bon pourtant?

------------------------------ I5 750; BFG GTX 280 1Go; Asus P7P55D Pro; 2*2Go G.Skill PC16000; watercooling CPU + GPU
Répondre à absot77

En fait c'est plutôt $remboursement === "1", j'ai peur que le == "1" fasse comme un test d'existence de la variable.

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

Ca ne change toujours rien.. :/

------------------------------ I5 750; BFG GTX 280 1Go; Asus P7P55D Pro; 2*2Go G.Skill PC16000; watercooling CPU + GPU
Répondre à absot77

En meêm temps, c'est normal qu'il est 2 tableaux ... Je suppose donc que le problème c'est qu'il en aurait 3. Ce tableau

Code :
  1. <h1>Tableau d'amortissement de l'emprunt</h1>

s'affiche systématiquement vu qu'il est dans aucun test.

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

Oui en tout, il y a 3 tableaux mais moi je n'en voudrais que deux, le premier étant le récapitulatif des choix de l'utilisateur, il y est tout le temps, après il reste soit le 2ème ou le 3ème qui doit s'afficher en fonction du type de remboursement ou versement..

------------------------------ I5 750; BFG GTX 280 1Go; Asus P7P55D Pro; 2*2Go G.Skill PC16000; watercooling CPU + GPU
Répondre à absot77

tu peux mettre la ligne suivante dans ton code :

echo "<pre>";print_r($_POST);echo"</pre>";

et coller ici le contenu.

Ajoute également en début de page

error_reporting(E_ALL);

regarde si il y a des messages d'erreurs en plus (des notices) et colle les ici.

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

J'ai eu ça:

";print_r($_POST);echo""; ?>

Il ne s'est rien affiché pour les messages d'erreur..

------------------------------ I5 750; BFG GTX 280 1Go; Asus P7P55D Pro; 2*2Go G.Skill PC16000; watercooling CPU + GPU
Répondre à absot77

ah :) c'était du PHP hein :)

Code :
  1. <?php
  2. echo "<pre>";print_r($_POST);echo"</pre>";
  3. ?>



Mais bon, plus je regarde ton code et plus je me demande si le problème ne serait juste pas au niveau des accolades. As tu bien mis en forme ton code pour bien voir comment son imbriqué les blocs de code ?

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

Ca me met ça:

Array
(
[montant] => 1000
[taux] => 5
[remboursement] => 2
[jour] => 8
[mois] => 4
[annee] => 1959
[duree] => 6
[type_duree] => 1
[periodicite] => 1
)


Pourquoi parfois quand je mets ces balises "<? ?>", ça ne m'affiche rien ou ça me met ce qu'il y a ou quand je mets "<?php ?>" soit ça me met une erreur, soit ça ne m'affiche rien ou ça m'affiche?

Pour obtenir le résultat que j'ai mis au dessus, j'ai juste rajouté "php" après "<?"... :??:

Oui je pense que mes accolades sont bien mises..

------------------------------ I5 750; BFG GTX 280 1Go; Asus P7P55D Pro; 2*2Go G.Skill PC16000; watercooling CPU + GPU
Répondre à absot77

La balise d'ouverture est <?php et non <?. Il est préférable de ne jamais utilisé <? tout comme <?= (<?php echo "toto"; ?> == <?="toto"?>

Rhaaa, remplace :

Code :
  1. <? (if $remboursement == "1" ) { ?>


par
[code]<?php if($remboursement == "1" ) { ?>

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

C'est bon ça fonctionne comme je veux.. :)

Pourquoi tu m'as fais mettre " error_reporting(E_ALL); " et " echo "<pre>";print_r($_POST);echo"</pre>"; " ?

Faut que je m'entraîne en php moi.. :whistle:

Merci :)

------------------------------ I5 750; BFG GTX 280 1Go; Asus P7P55D Pro; 2*2Go G.Skill PC16000; watercooling CPU + GPU
Répondre à absot77
Meilleure réponse

<pre> ne sert qu'à la mise en forme.

 

print_r($_POST); permet de facilement voir tous les élements du tableau $_POST. tu peux effectuer des print_r sur tout quasiment, c'est bien pour visualiser une succession de tableau imbriqué par exemple. (tableau ou objet)

 

error_reporting(E_ALL); permet d'afficher tous les messages d'erreur. Souvent les configuration PHP sont configurées pour n'afficher qu'au maximum les Warning.

 

Un T_NOTICE c'est par exemple ceci :

 
Code :
  1. $a = 1;
  2. if($a == $b) echo "toto";
 

$b n'a jamais été initialisé et tu fais un test dessus ... pas bon ! tu auras dans ce cas un message d'erreur.

 


Sur un site en production, il est bon de passer error_reporting(0); afin de n'afficher aucun message d'erreur.

  

Au passage, si ton sujet est résolu, merci de le passer en tant que tel en cliquant sur la coupe (en haut à droite de tous les messages) du message qui t'a le plus aidé.


Message édité par SiM07 le 09-02-2009 à 19:47:07
------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

SiM07 a écrit :

La balise d'ouverture est <?php et non <?. Il est préférable de ne jamais utilisé <? tout comme <?= (<?php echo "toto"; ?> == <?="toto"?>

Rhaaa, remplace :

Code :
  1. <? (if $remboursement == "1" ) { ?>


par
[code]<?php if($remboursement == "1" ) { ?>



hey, c'est ce que j'ai dit dès mon premier post!!

absot qu'as tu modifié au final pour que cela fonctionne chez toi?!

------------------------------ La boutique Sexy : http://www.dream-shop.fr pour toutes vos envies à petits prix !
Webmaster, rentabilisez votre trafic : http://www.dream-shop.fr/affiliation 28% de commission !
Répondre à okinou

" <? ?> " en " <?php ?> ", " <?php if($remboursement == "1" ) { ?> "...

Erreur bête.. :/

------------------------------ I5 750; BFG GTX 280 1Go; Asus P7P55D Pro; 2*2Go G.Skill PC16000; watercooling CPU + GPU
Répondre à absot77
Tom's Guide > Forum > Programmation > [Résolu] Mauvaise syntaxe php?
Aller à :

Il y a 290 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens