fonction qui ne fonctionne pas. (nouvelle)

Mammouth du PHP | 702 Messages

25 mai 2012, 10:11

Bonjour à tous, j'ai besoin de créer une fonction néanmoins celle ci ne fonctionnes pas.
voila la fonction en question:
<?php function honoraires($p1,$p2,$p3,$p4,$t1,$t2,$t3,$principal2,$type,$versement,$acompte)
{
if ($type=="d")
	{
	if(($versement+$acompte)<$p1)
		{
		$pc=($t1/100);
		$taux=$pc+1;
		$h1=($acompte*$taux-$acompte);
		$honoraires=$h1;
		}
	elseif($versement<$p1 AND ($versement+$acompte)>$p1)
		{
		$reste=$p1-$versement;
		$pc=($t1/100);
		$taux=$pc+1;
		$h1=($reste*$taux-$reste);
		$reste2=$acompte-$reste;
		$h2=$reste2*$taux-$reste;
		$honoraires=$h1+$h2;
		}
	else
		{
			$honoraires=0;
		}
	}
}
?>
le soucis c'est que quand je fais l'enregistrement dans mysql, il me dit undefined $honoraires
alors que pourtant il me semble qu'elle soit bien définie.

j'appelles la fonction ici:
<?php
if (isset($_POST['go'])) { 
 
$b = date_create($_POST['date_reception']);
$c = date_format($b, 'Y/m/d');
$sql = 'INSERT INTO versements SET
n_doss ="'.mysql_real_escape_string($_GET['n_doss']).'",
date_reception = "'.mysql_real_escape_string($c).'",
mode= "'.mysql_real_escape_string($_POST['mode']).'",
montant= "'.mysql_real_escape_string($acompte).'",
honoraires= "'.mysql_real_escape_string($honoraires).'",
pd= "'.mysql_real_escape_string($_POST['pd']).'"
' ;
mysql_query($sql) or die(__LINE__.mysql_error().$sql);
la définition de toutes les variables se passe plus haut, voici le code:
<?php
$sql119 ="SELECT * FROM `creance` INNER JOIN `bareme_honoraires` ON `creance`.`bareme` = `bareme_honoraires`.`bareme` WHERE `creance`.`n_doss`='".mysql_real_escape_string($_GET['n_doss'])."'";

$req19 = mysql_query ($sql119) or die ('Erreur SQL !<br>'.$sql119.'<br>'.mysql_error ()); 

while($d9 = mysql_fetch_assoc ($req19)) 
{ 
if (isset($_POST['go']))
{
$t1=$d9['t1'] ;
$t2=$d9['t2'] ;
$t3=$d9['t3'] ;
$p1=$d9['p1'] ;
$p2=$d9['p2'] ;
$p3=$d9['p3'] ;
$p4=$d9['p4'] ;
$type=$d9['type'];
$acompte=$_POST['acompte'];
}
}

?>
la variable $type renvoi bien "d".
je ne comprends pas d'ou peut venir l'erreur.

d'avance merci pour votre aide.

ViPHP
ViPHP | 2577 Messages

25 mai 2012, 10:35

C'est un problème de portée des variables cf : http://php.net/manual/fr/language.variables.scope.php

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 mai 2012, 11:02

perso je ne vois pas de déclaration de $honoraires en dehors de la fonction honoraires en haut.

cette fonction n'ayant pas de return je ne vois pas a quoi elle sert ^^

d'ailleurs, dans le code montré, tu ne l'utilise pas.

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

25 mai 2012, 15:35

perso je ne vois pas de déclaration de $honoraires en dehors de la fonction honoraires en haut.

cette fonction n'ayant pas de return je ne vois pas a quoi elle sert ^^

d'ailleurs, dans le code montré, tu ne l'utilise pas.

@+
Bien vu, Moogli,
Moi aussi je ne vois pas à quoi elle sert!!!
peut-être qu'un
return $honoraires
ajouté à la fonction
et un
$honoraires = honoraires(AVEC DES PARAMÈTRE de valeur connue )
ajouté dans le script qui met à jour la BDD
amélioreraient nettement les choses.
Une autre façon de procéder consisterait à initialiser $honoraires à une valeur par défaut avant d'appeler la fonction.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD