Pb en PHP!!!

Résolu
kunt45 Messages postés 124 Date d'inscription   Statut Membre Dernière intervention   -  
kunt45 Messages postés 124 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,actuellement je suis en train de créer un logiciel d'amortissement en comptabilité.
le logiciel est composé de html et php.
voila le message d'erreur:
_Notice: Undefined variable: duree in C:\site\lineaire.php on line 59
_Notice: Undefined variable: taux in C:\site\lineaire.php on line 66
ci-joint:mes fichiers sources:
lineaire.php:
<?php
//affichage du linéaire
/*if ($_POST['Envoyer']=="Envoyer")
{
echo "<pre>";
print_r($_POST);
echo "</pre>";
} */
?>

<html>
<head></head>
<table border="1">
<tr>
<th>année</th>
<th>valeur net comptable debut exercice</th>
<th>montant amortissement</th>
<th>valeur net comptable fin d'exercice</th>
</tr>
<?php
if ($_POST['type']=="batimentadministratif")
{
$taux=0.25;
$duree=25;
}
if ($_POST['type']=="batimentindustriel")
{
$taux=0.20;
$duree=20;
}
if ($_POST['type']=="materielindustriel")
{
$taux=0.10;
$duree=10;
}
if ($_POST['type']=="materielbureau")
{
$taux=0.10;
$duree=10;
}
if ($_POST['type']=="voiture")
{
$taux=0.05;
$duree=5;
}
if ($_POST['type']=="ordinateur")
{
$taux=0.02;
$duree=2;
}
?>
<!--//récupérer le type de bien, et en déduire la durée-->
<?php
$vnc=$_POST['base_amortissable'];
$annee=$_POST['annee_mise_en_service'];
$jours_restants=$_POST['jours_restant_annee_apres_mise_en_service'];
$nbre_ligne=1;

while($nbre_ligne<>$duree)
//for($i=1;$i<=$duree;$i++)
{
?>
<tr>
<td><?php $annee;?></td>
<td><?php $vnc;?></td>
<td><?php $montantamortissement=$vnc*$taux*$jours_restants/360;?></td>
<td><?php $vnc=$vnc-$montantamortissement;?></td>
</tr>
<?php
$annee=$annee+1;
$nbre_ligne=$nbre_ligne+1;
$jours_restants=360;
}
?>

<!--fin de la boucle-->
<?php
$jours_restants=$_POST['jours_restant_annee_apres_mise_en_service'];
if ($jours_restants<360)
{ ?>
<tr>
<td><?php $annee;?></td>
<td><?php $vnc;?></td>
<td><?php $montantamortissement=$vnc*$taux*$jours_restants/360;?></td>
<td><?php $vnc=$vnc-$montantamortissement;?></td>
</tr>
<?php
}
?>
</table>
</html>

mon menu:
<HTML>
<HEAD>
</HEAD>
<BODY align="center">
<form method="post" action="lineaire.php">
<h1 align="center">mode lineaire<h1>
<TABLE BORDER=0 align="center">
<TR>
<TD align="center"> base amortissable: </TD>
<TD align="center"><INPUT type="text" name="base_amortissable" size="6" maxlength="6"><BR></TD>
</TR>
<TR>
<TD align="center"> annee de mise en service: </TD>
<TD align="center">
<INPUT type="text" name="annee_mise_en_service" size="6" maxlength="6"></TD>
<TD align="right"> jours restant année apres mise en service : </TD>
<TD align="center">
<INPUT type="text" name="jours_restant_annee_apres_mise_en_service" size="6" maxlength="6"></TD>
</TR>
<TR>
<TD align="center"> type du bien:</td>
<td> <SELECT name="type" align="center">
<OPTION value="batimentadministratif">Batiment administratif</OPTION>
<OPTION value="batimentindustriel">Batiment industrielle</OPTION>
<OPTION value="materielindustriel">Materiel industrielle</OPTION>
<OPTION value="materielbureau">Materiel de bureau</OPTION>
<OPTION value="Voiture">Voiture</OPTION>
<OPTION value="Ordinateur">Ordinateur</OPTION>
</SELECT></td>
</TR>

<TR align="center">
<td><INPUT type="reset" name="annuler" value="annuler"></td>
<td><INPUT type="submit" name="Envoyer" value="Envoyer"></td>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
merci infiniment de votre aide car je commence sincèrement à être désespéré sa fait des semaines que je cherche sans pour autant trouver mon erreur.
A voir également:

5 réponses

NookZ Messages postés 2138 Date d'inscription   Statut Membre Dernière intervention   514
 
le problème est que tu définis ces deux variables dans des if
En interprétant le code, et comme il n'y a pas de else, le programme détermine qu'il y a une possibilité de passer dans aucun des if donc que tes deux variables ne soient pas déclarées!

Mon conseil pour y remédier :
utiliser le switch (voir http://www.manuelphp.com/php/control-structures.switch.php
puisque tu testes différentes valeurs pour une même variable $_POST['type'] et faire un "default:" en dessous du dernier case où tu mets les valeurs de tes variables dans le cas où on ne passe dans aucune condition (même si ce cas n'a pas forcément lieu!)
0
kunt45 Messages postés 124 Date d'inscription   Statut Membre Dernière intervention   6
 
merci pour la reponse voila comment jai changer mon code:
<html>
<head></head>
<table border="1">
<tr>
<th>année</th>
<th>valeur net comptable debut exercice</th>
<th>montant amortissement</th>
<th>valeur net comptable fin d'exercice</th>
</tr>
<?php
$type=$_POST['type'];
switch ($type)
{
case "batimentadministratif":
$taux=0.25;
$duree=25;
break;
case "batimentindustriel":
$taux=0.20;
$duree=20;
break;
case "materielindustriel":
$taux=0.10;
$duree=10;
break;
case "materielbureau":
$taux=0.10;
$duree=10;
break;
case "Voiture":
$taux=0.05;
$duree=5;
break;
case "Ordinateur":
$taux=0.02;
$duree=2;
break;
}
$vnc=$_POST['base_amortissable'];
$annee=$_POST['annee_mise_en_service'];
$jours_restants=$_POST['jours_restant_annee_apres_mise_en_service'];
$nbre_ligne=1;

while($nbre_ligne<>$duree)
//for($i=1;$i=<$duree;$i++)
{
?>
<tr>
<td><?php $annee;?></td>
<td><?php $vnc;?></td>
<td><?php $montantamortissement=$vnc*$taux*$jours_restants/360;?></td>
<td><?php $vnc=$vnc-$montantamortissement;?></td>
</tr>
<?php
$annee=$annee+1;
$nbre_ligne=$nbre_ligne+1;
$jours_restants=360;
}
?>

<!--fin de la boucle-->
<?php
$jours_restants=$_POST['jours_restant_annee_apres_mise_en_service'];
if ($jours_restants<360)
{ ?>
<tr>
<td><?php $annee;?></td>
<td><?php $vnc;?></td>
<td><?php $montantamortissement=$vnc*$taux*$jours_restants/360;?></td>
<td><?php $vnc=$vnc-$montantamortissement;?></td>
</tr>
<?php
}
?>
</table>
</html>

mais apresent bizaremment... il ne rentre pas dans la boucle :s
decidement jarriverais jamais a finir a temps
merci de vos reponse ;)
0
kunt45 Messages postés 124 Date d'inscription   Statut Membre Dernière intervention   6
 
ah et dans mon switch maintenant il y a un default: $taux=0; $duree=0;
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Bonsoir,

pour afficher une variable il faut faire echo $variable

ensuite il faut faire un if formulaire posté

<html>
<head></head>
<table border="1">
<tr>
<th>année</th>
<th>valeur net comptable debut exercice</th>
<th>montant amortissement</th>
<th>valeur net comptable fin d'exercice</th>
</tr>
<?php
if(isset($_POST['nom_du_bouton_submit_du_formulaire'])){
	$type=$_POST['type'];
	switch ($type)
	{
	case "batimentadministratif":
	$taux=0.25;
	$duree=25;
	break;
	case "batimentindustriel":
	$taux=0.20;
	$duree=20;
	break;
	case "materielindustriel":
	$taux=0.10;
	$duree=10;
	break;
	case "materielbureau":
	$taux=0.10;
	$duree=10;
	break;
	case "Voiture":
	$taux=0.05;
	$duree=5;
	break;
	case "Ordinateur":
	$taux=0.02;
	$duree=2;
	break;
	}
	$vnc=$_POST['base_amortissable'];
	$annee=$_POST['annee_mise_en_service'];
	$jours_restants=$_POST['jours_restant_annee_apres_mise_en_service'];
	$nbre_ligne=1;

	while($nbre_ligne < $duree)
	//for($i=1;$i=<$duree;$i++)
	{
	$montantamortissement=$vnc*$taux*$jours_restants/360;
	$vnc=$vnc-$montantamortissement;
	?>
	<tr>
	<td><?php echo $annee;?></td>
	<td><?php echo $vnc;?></td>
	<td><?php echo $montantamortissement;?></td>
	<td><?php echo $vnc;?></td>
	</tr>
	<?php
	$annee++;
	$nbre_ligne++;
	$jours_restants=360;
	}
	?>

	<!--fin de la boucle-->
	<?php
	$jours_restants=$_POST['jours_restant_annee_apres_mise_en_service'];
	if ($jours_restants<360)
	{ 
	$montantamortissement=$vnc*$taux*$jours_restants/360;
	$vnc=$vnc-$montantamortissement;
	?>
	<tr>
	<td><?php echo $annee; ?></td>
	<td><?php echo $vnc; ?></td>
	<td><?php echo $montantamortissement; ?></td>
	<td><?php echo $vnc; ?></td>
	</tr>
	<?php
	}
}
?>
</table>
</html>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kunt45 Messages postés 124 Date d'inscription   Statut Membre Dernière intervention   6
 
merci sa fonctionne!!!
enfin!!
merci a tous et bonne programmation!
0