Pb en PHP!!!

Résolu/Fermé
kunt45 Messages postés 124 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 22 mars 2012 - 3 févr. 2009 à 08:56
kunt45 Messages postés 124 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 22 mars 2012 - 3 févr. 2009 à 19:56
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 jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
3 févr. 2009 à 09:08
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 mardi 3 février 2009 Statut Membre Dernière intervention 22 mars 2012 6
3 févr. 2009 à 18:42
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 mardi 3 février 2009 Statut Membre Dernière intervention 22 mars 2012 6
3 févr. 2009 à 18:44
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 févr. 2009 à 19:50
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 mardi 3 février 2009 Statut Membre Dernière intervention 22 mars 2012 6
3 févr. 2009 à 19:56
merci sa fonctionne!!!
enfin!!
merci a tous et bonne programmation!
0