Utilisation d'une fonction, ou est l'erreur ?

Eléphant du PHP | 440 Messages

29 sept. 2008, 16:59

Bonjour à tous,

J'ai mis en place sur une page distinct une fonction que voici

fonction.mail.php
<?php

function mail_exe_ai()
{
$message = '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Action immediate</title>

<style>
body
{
	margin: 10px 0 ;
	padding: 0 ;
	text-align: center ;
	background:#FFFFF;
	font: 0.8em "Trebuchet MS", helvetica, sans-serif ;
}
div#conteneur
{
	width: 1000px ;
	margin: 0 auto ;
	text-align: left ;
	border: 0px solid #0066CC;
	background: #fff ;
}
h1#header
{
	border: 0px solid #0066CC;
	height: 100px ;
	background: url(../img/header.jpg) no-repeat top ;
	background-color: #41b7d4;
}
div#contenu
{
margin: 0px 0px 0 10px ;
float: left ;
display: block ;
width:770px;
border-left: 2px dashed #41b7d4;
border-bottom: 2px dashed #41b7d4;
}
div#contenu h2
{
	margin: 0 10px 0 10px;
	padding-left: 25px ;
	line-height: 25px ;
	font-size: 1.4em ;
	color: #FF6600 ;
	background: url(../img/bouton.jpg) no-repeat left bottom ;
	border-bottom: 1px solid #41b7d4 ;
	border-left: 1px solid #41b7d4 ;
}


</style>
</head>
<body>
<br>
<table id="visu">
<tr>
<td align=center> Réclamation du client:'.$row0["id_motif_reclamation"].'.</td><td bgcolor="#8000FF" align=center>'.$row0["nom_client"].'('.$row0["code_client"].')</td>
</tr>
<tr>
<td>Contact:'.$row0["contact_client"].'</td><td>Nom:'.$row0["nom_client"].'</td>
</tr>
<td>Téléphone:'.$row0["tel_client"].'</td><td>Fax:'.$row0["fax_client"].'</td>
</tr>
</table>
<br>
Probleme'.$row0["nom_motif_reclamation"].':
<table id="visu">
<td align=center colspan="2" bgcolor="#FF6600"> Réclamation du client:</td>
</tr>
<tr>
<td align="center" colspan="2">'.$row0["des_reclamation"].'</td></tr>
<tr><td align=center>Cause (si elle est connue):</td><td align="center">'.$row0["cause_reclamation"].'</td></tr>
<tr>
<td align=center> Code Produit:</td><td align=center>'.$row0["code_produit"].'
</td>
</tr>
<tr>
<td align=center> N° de lot:</td><td align=center>'.$row0["lot_reclamation"].'</td>
</td>
<tr>
<td align=center> date_fabrication:(Format JJ/MM/2008)</td><td align=center>
'.$row0["date_fabrication"].
'</td>
</tr>
<tr>
<td align=center> date_DLUO:(Format JJ/MM/2008)</td><td align=center>
'.$row0["date_dluo"].'</td>
</tr>
<tr>
<td align=center> equipe:</td><td align=center>'.$row0["equipe"].'</td>
</tr>
<tr>
<td align=center> N_carton:</td><td align=center'.$row0["N_carton"].'</td>
</tr>
<tr>
<td align=center> quantité:</td><td align=center>'.$row0["quantite"].'</td>
</tr>
<tr>
<td align="center" >N° Bl:</td><td align=center>'.$row0["n_bl"].'</td></tr>
<tr>
<td align="center" >N° facture:</td><td align=center>'.$row0["n_facture"].'</td></tr>
</table>

<a href="http://intranet/qualite/v0.3a/action_immediate.php?login='.$rosmail["login_user"].'&mdp='.$rosmail["mdp_user"].'&id_reclamation='.$row0["id_reclamation"].'">
Cliquer ICI </a>
</body>';
}
?>

Ma page qui appelle cette fonction:

Code : Tout sélectionner

<?php include ("fonction/fonction.mail.php"); if($id_motif_reclamation == 3) { $resmail = mysql_query("SELECT login_user, mdp_user, email_user FROM user INNER JOIN user_groupe ON user_groupe.id_user_groupe=user.id_user_groupe WHERE user.id_user_groupe='1'; "); while($rosmail = mysql_fetch_assoc($resmail)) { echo 'login&mdptest'; $login_user= $rosmail["login_user"]; $mdp_user=$rosmail["mdp_user"]; $res = mysql_query("SELECT id_reclamation, heure_reclamation, reclamation.id_motif_reclamation, nom_motif_reclamation, nom_user, prenom_user, code_client, nom_client, adresse_client, ville_client, contact_client, tel_client, fax_client, des_reclamation, cause_reclamation, code_produit, n_carton, quantite, DATE_FORMAT(date_fabrication,'%d/%m/%Y') as date_fabrication, DATE_FORMAT(date_dluo,'%d%/%m/%Y') as date_dluo, equipe, n_bl, n_facture FROM reclamation INNER JOIN motif_reclamation ON motif_reclamation.id_motif_reclamation = reclamation.id_motif_reclamation INNER JOIN user ON user.id_user = reclamation.id_user INNER JOIN client ON client.id_client = reclamation.id_client WHERE id_reclamation='$id_reclamation' "); while($row0 = mysql_fetch_assoc($res)){ $login_user= $rosmail["login_user"]; $mdp_user=$rosmail["mdp_user"]; $id_motif_reclamation=$row0["id_motif_reclamation"]; $code_client= $row0["code_client"]; $nom_motif_reclamation= $row0["nom_motif_reclamation"]; mail_exe_ai(); echo $rosmail["login_user"];echo '<br>'; echo $rosmail["mdp_user"];echo '<br>'; } //echo $message; $headers ='From: "Service Réclamation"<µµµµµµµµµµ>'."\n"; $headers .='Reply-To: NNNNNNNNNNNN'."\n"; $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; $headers .='Content-Transfer-Encoding: 8bit'; $Sujet = 'Réclamation '.$nom_motif_reclamation.' sur le client '.$code_client.''; if(mail('NNNNNNNNNNNN', 'Sujet', $message, $headers)) { echo 'Le message a été envoyé'; } else { echo 'Le message n\'a pu être envoyé'; } } } else { $resmail = mysql_query("SELECT login_user, mdp_user, email_user FROM user INNER JOIN user_groupe ON user_groupe.id_user_groupe=user.id_user_groupe WHERE user.id_user_groupe='2'; "); while($rosmail = mysql_fetch_assoc($resmail)) { $res = mysql_query("SELECT id_reclamation, heure_reclamation, reclamation.id_motif_reclamation, nom_motif_reclamation, nom_user, prenom_user, code_client, nom_client, adresse_client, ville_client, contact_client, tel_client, fax_client, des_reclamation, cause_reclamation, code_produit, n_carton, quantite, DATE_FORMAT(date_fabrication,'%d/%m/%Y') as date_fabrication, DATE_FORMAT(date_dluo,'%d%/%m/%Y') as date_dluo, equipe, n_bl, n_facture FROM reclamation INNER JOIN motif_reclamation ON motif_reclamation.id_motif_reclamation = reclamation.id_motif_reclamation INNER JOIN user ON user.id_user = reclamation.id_user INNER JOIN client ON client.id_client = reclamation.id_client WHERE id_reclamation='$id_reclamation' "); while($row0 = mysql_fetch_assoc($res)){ $id_motif_reclamation=$row0["id_motif_reclamation"]; $code_client= $row0["code_client"]; $nom_motif_reclamation= $row0["nom_motif_reclamation"]; mail_exe_ai(); } $headers ='From: "Service Réclamation"<[email protected]>'."\n"; $headers .='Reply-To: XXXXXXXXXX'."\n"; $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; $headers .='Content-Transfer-Encoding: 8bit'; $Sujet = 'Réclamation '.$nom_motif_reclamation.' sur le client '.$code_client.''; $email=XXXXXXXXXXXXXXXXXX'; $Sujet = 'Réclamation '.$nom_motif_reclamation.' sur le client '.$code_client.''; if(mail($email, $Sujet, $message, $headers)) { echo 'Le message a été envoyé'; } else { echo 'Le message n\'a pu être envoyé'; } } mysql_close(); } ?>
Le problème c'est que mon mail est vide, je le reçois bien le mail mais rien dedans quel erreur est-je commis?

Merci D'avance

guigui69

Eléphant du PHP | 291 Messages

29 sept. 2008, 17:19

Que vaut $message ? Il vaut bien ce que tu veux envoyer ? Sur ?

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

29 sept. 2008, 17:51

Si les avertissements étaient activés, tu aurais sans doute un beau message d'avertissement te disant que la variable $message utilisée n'est pas définie.
(bon on aura aussi un $row0 et $rosmail ne sont pas définie dans fonction.mail.php ;))

Un petit indice pour te mettre sur la voie : ta fonction mail_exe_ai(), lorsque tu l'appelles, définie une variable locale nommée $message... absolument rien de plus... :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 440 Messages

29 sept. 2008, 20:48

Merci pour vos réponses.

Cela voudrait dire qu'au niveau de la fonction je doit definir les variable ?

mail_exe_ai($message, $rosmail, $row0) c'est bien ca ? (Désolé je n'ai jamais utilisé d'option)

Merci

guigui69

Eléphant du PHP | 291 Messages

29 sept. 2008, 21:01

Pour toi, quel est le sens que tu veux donner à ta fonction "mail_exe_ai" ?

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

29 sept. 2008, 21:19

Merci pour vos réponses.

Cela voudrait dire qu'au niveau de la fonction je doit definir les variable ?

mail_exe_ai($message, $rosmail, $row0) c'est bien ca ? (Désolé je n'ai jamais utilisé d'option)

Merci

guigui69
C'est à peu-prés çà. Réfléchissons un p'tit peu:

Le rôle de la fonction est de créer le message du mail, et on remarque que tout ce qu'elle fait est de générer automatiquement $message à partir des données qui se trouvent au préalable dans $rosmail et $row0.

Puisque la fonction retourne une valeur (dans notre cas le message) elle doit faire un return, c'est obligatoire. Et puisqu'elle doit recevoir les données $rosmail et $row0 pour travailler, ces dernières doivent être passées comme paramètres en entrée. Cela s'écriait :
function mail_exe_ai($rosmail, $row0)
{
//Données obligatoires
if ( $rosmail == null || $row0 == null || ! is_array($rosmail) || ! is_array($row) ) return null;
else
return  '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Action immediate</title>

<style>
body
{
    margin: 10px 0 ;
    padding: 0 ;
    text-align: center ;
    background:#FFFFF;
    font: 0.8em "Trebuchet MS", helvetica, sans-serif ;
}
div#conteneur
{
    width: 1000px ;
    margin: 0 auto ;
    text-align: left ;
    border: 0px solid #0066CC;
    background: #fff ;
}
h1#header
{
    border: 0px solid #0066CC;
    height: 100px ;
    background: url(../img/header.jpg) no-repeat top ;
    background-color: #41b7d4;
}
div#contenu
{
margin: 0px 0px 0 10px ;
float: left ;
display: block ;
width:770px;
border-left: 2px dashed #41b7d4;
border-bottom: 2px dashed #41b7d4;
}
div#contenu h2
{
    margin: 0 10px 0 10px;
    padding-left: 25px ;
    line-height: 25px ;
    font-size: 1.4em ;
    color: #FF6600 ;
    background: url(../img/bouton.jpg) no-repeat left bottom ;
    border-bottom: 1px solid #41b7d4 ;
    border-left: 1px solid #41b7d4 ;
}


</style>
</head>
<body>
<br>
<table id="visu">
<tr>
<td align=center> Réclamation du client:'.$row0["id_motif_reclamation"].'.</td><td bgcolor="#8000FF" align=center>'.$row0["nom_client"].'('.$row0["code_client"].')</td>
</tr>
<tr>
<td>Contact:'.$row0["contact_client"].'</td><td>Nom:'.$row0["nom_client"].'</td>
</tr>
<td>Téléphone:'.$row0["tel_client"].'</td><td>Fax:'.$row0["fax_client"].'</td>
</tr>
</table>
<br>
Probleme'.$row0["nom_motif_reclamation"].':
<table id="visu">
<td align=center colspan="2" bgcolor="#FF6600"> Réclamation du client:</td>
</tr>
<tr>
<td align="center" colspan="2">'.$row0["des_reclamation"].'</td></tr>
<tr><td align=center>Cause (si elle est connue):</td><td align="center">'.$row0["cause_reclamation"].'</td></tr>
<tr>
<td align=center> Code Produit:</td><td align=center>'.$row0["code_produit"].'
</td>
</tr>
<tr>
<td align=center> N° de lot:</td><td align=center>'.$row0["lot_reclamation"].'</td>
</td>
<tr>
<td align=center> date_fabrication:(Format JJ/MM/2008)</td><td align=center>
'.$row0["date_fabrication"].
'</td>
</tr>
<tr>
<td align=center> date_DLUO:(Format JJ/MM/2008)</td><td align=center>
'.$row0["date_dluo"].'</td>
</tr>
<tr>
<td align=center> equipe:</td><td align=center>'.$row0["equipe"].'</td>
</tr>
<tr>
<td align=center> N_carton:</td><td align=center'.$row0["N_carton"].'</td>
</tr>
<tr>
<td align=center> quantité:</td><td align=center>'.$row0["quantite"].'</td>
</tr>
<tr>
<td align="center" >N° Bl:</td><td align=center>'.$row0["n_bl"].'</td></tr>
<tr>
<td align="center" >N° facture:</td><td align=center>'.$row0["n_facture"].'</td></tr>
</table>

<a href="http://intranet/qualite/v0.3a/action_immediate.php?login='.$rosmail["login_user"].'&mdp='.$rosmail["mdp_user"].'&id_reclamation='.$row0["id_reclamation"].'">
Cliquer ICI </a>
</body>';
}
?>
Pour appeler cette fonction il faut écrire :
$message = mail_exe_ai($rosmail, $row0);
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 20 Messages

30 sept. 2008, 00:19

fait une recherche sur: 'global' et sur 'portée des variables',
tu vas tout comprendre.. :)

Eléphant du PHP | 440 Messages

01 oct. 2008, 17:59

Merci pour votre aide, j'ai commencé a utilisé les fonctions mais la je bloque sur une variable $_POST.

Code : Tout sélectionner

<?php session_start(); include ("fonction/fonction.login.php"); reclamation_acces($_SESSION); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Service réclamation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Language" content="fr" /> <title>fiche réclamation</title> <SCRIPT LANGUAGE="Javascript" SRC="javascript/action_menu.js"> </SCRIPT> <SCRIPT LANGUAGE="Javascript" SRC="javascript/fonction.divers.js"> </SCRIPT> <SCRIPT LANGUAGE="Javascript" SRC="javascript/fonction.reclamation.js"> </SCRIPT> <link rel="stylesheet" type="text/css" href="css/site.css" media="screen" /> <link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> </head> <body> <div id="conteneur"> <h1 id="header"><a href="etape1.html" title="Colored Design - Accueil"></a></h1> <?php include ("fonction/fonction.menu.php"); menu_classique(); ?> <div id="contenu"> <h2>Un titre</h2> <?php If (isset($_POST['ajouter'])) { include ("fonction/fonction.bdd.php"); connexion_mysql(); $id_user=$_SESSION['id_user']; // On commence par récupérer les champs include ("fonction/fonction.bdd.reclamation.php"); insert_reclamation($_POST); if(empty($id_client) OR empty($id_motif_reclamation) OR empty($des_reclamation)) { echo '<font color="red">Attention, <b>tout les champs doivent etre remplis</b> !</font>'; echo '<INPUT TYPE="BUTTON" VALUE=" Retour "onClick="history.back()">'; echo '<br>'; } else { $date = date("Y-m-d"); $heure = date("H:i"); $requetefinal = "INSERT INTO reclamation (id_reclamation, date_reclamation, heure_reclamation, id_user, id_client, id_motif_reclamation, des_reclamation, cause_reclamation, date_fabrication, date_dluo, equipe, n_carton, quantite, n_bl, n_facture, code_produit, lot_reclamation) VALUE ('', '$date', '$heure', '$id_user', '$id_client', '$id_motif_reclamation', '$des_reclamation', '$cause_reclamation', '$date_fabrication', '$date_dluo', '$equipe', '$n_carton', '$quantite', '$n_bl', '$n_facture', '$code_produit', '$lot_reclamation');"; $query2=mysql_query($requetefinal) or die('Erreur SQL !'.$requetefinal.'<br>'.mysql_error()); echo 'Vos infos on &eacute;t&eacute; ajout&eacute;es.<br>'; $id_reclamation = mysql_insert_id(); echo 'Le code la réclamation est le:<span="important">'.$id_reclamation.'</span><br>'; include "exe_ai.php"; } } else { $id_user=$_SESSION['id_user']; $id_client=$_POST["id_client"]; include ("fonction/fonction.bdd.php"); connexion_mysql(); $sql= "SELECT id_client, nom_client, code_client, adresse_client, tel_client, fax_client FROM client WHERE id_client='$id_client';"; $query = mysql_query($sql) or die('erreur!!'); echo '<form action="reclamation1.php" method="post" id="reclamation" ><table id="visu_reclamation"> <tr><td colspan="2" align=center bgcolor="#FF6600"> Information client</td></tr>'; while ($list = mysql_fetch_assoc($query)){ ?> <td align=center><input type="hidden" name="id_user" value="<?php echo $id_user; ?>"><input type="hidden" name="id_client" value="<?echo $list["id_client"];?>"><?echo $list["code_client"];?></td><td align=center><?echo $list["nom_client"];?></td> <tr><td align=center>tél:<?echo $list["tel_client"];?></td><td align=center>fax:<?echo $list["fax_client"];?></td></tr> <tr><td align=center>Adresse:<?echo $row["adresse_client"];?></td><td colspan="2" align=center>Contact:<?echo $row["contact_client"];?></td></tr> <?php } $sqlmotif="SELECT id_motif_reclamation, nom_motif_reclamation FROM motif_reclamation ORDER BY nom_motif_reclamation;"; $query = mysql_query($sqlmotif) or die('erreur!!'); echo '<tr><td colspan="2"><SELECT name="id_motif_reclamation" id="id_motif_reclamation" onchange="motif()"><option value="-1"> Choix</option>'; while ($listmotif = mysql_fetch_assoc($query)){ echo '<option value="'.$listmotif["id_motif_reclamation"].'">'.$listmotif["nom_motif_reclamation"].'</option>'; } echo '</select></td></tr>'; echo '</table>'; ?> <div id="information"> </div> </table> <input type="submit" name="ajouter" id="ajouter" value="Valider" /> </form> <?php mysql_close(); } print_r($_POST); ?> </div> <p id="footer">Essai pour le service Qualité section reclamation cliente</p> </div> </body> </html>
Ma page fonction
<?php
function insert_reclamation($_POST)
{

if ( $_POST == null ) return null;

else
{
if(isset($_POST['id_client']))      $id_client=$_POST['id_client'];
else      $id_client="";

if(isset($_POST['id_user']))      $id_user=$_POST['id_user'];
else      $id_user="";

if(isset($_POST['id_motif_reclamation']))      $id_motif_reclamation=$_POST['id_motif_reclamation'];
else      $id_motif_reclamation="";

if(isset($_POST['code_produit']))      $code_produit=$_POST['code_produit'];
else      $code_produit="N-C";

if(isset($_POST['des_reclamation']))      $des_reclamation=$_POST['des_reclamation'];
else      $des_reclamation="";

if(isset($_POST['cause_reclamation']))      $cause_reclamation=$_POST['cause_reclamation'];
else      $cause_reclamation="N-C";

if(isset($_POST['date_fabrication']) && $_POST['date_fabrication'] != '')
{
list($jour,$mois,$annee) = explode('/',$_POST['date_fabrication']);
$date_fabrication = $annee.'-'.$mois.'-'.$jour;
}
else  {$date_fabrication="0000-00-00";}

if(isset($_POST['date_dluo']) && $_POST['date_fabrication'] != '') {
		list($jour,$mois,$annee) = explode('/',$_POST['date_dluo']);
$date_dluo = $annee.'-'.$mois.'-'.$jour;
}
else    {  $date_dluo="0000-00-00";}

if(isset($_POST['equipe']))      $equipe=$_POST['equipe'];
else      $equipe="N-C";
if(isset($_POST['n_carton']))      $n_carton=$_POST['n_carton'];
else      $n_carton="N-C";
if(isset($_POST['quantite']))      $quantite=$_POST['quantite'];
else      $quantite="N-C";

if(isset($_POST['n_bl']))      $n_bl=$_POST['n_bl'];
else      $n_bl="N-C";

if(isset($_POST['n_facture']))      $n_facture=$_POST['n_facture'];
else      $n_facture="N-C";

if(isset($_POST['lot_reclamation']))      $lot_reclamation=$_POST['lot_reclamation'];
else      $lot_reclamation="N-C";
}
}
Le probleme c'est que cela ne passe pas les $_POST.

Quand je valide ma premiere page et que ca arrive sur cette page il bloque a

Code : Tout sélectionner

if(empty($id_client) OR empty($id_motif_reclamation) OR empty($des_reclamation)) { echo '<font color="red">Attention, <b>tout les champs doivent etre remplis</b> !</font>'; echo '<INPUT TYPE="BUTTON" VALUE=" Retour "onClick="history.back()">'; echo '<br>'; }
Aurait-je fais un oublier en déclarent cette fonction.?

Merci d'avance

guigui69

Eléphant du PHP | 440 Messages

02 oct. 2008, 17:19

Re bonjour à tous,

Je ne peut pas garder comme nom de variable $_POST? Les données viennent bien d'un formulaire.

Merci

guigui69

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

03 oct. 2008, 12:10

Hmm... t'as pas bien suivi les notions de locale/globale.. Toute variable déclarée à l'intérieure d'une fonction a une portée locale. Seule la fonction les voit et peut les utiliser, même si elles ont le même nom qu'une variable se trouvant en dehors de la fonction :
$a = 1;
function plusDeux() { // ma fonction
  echo '$a est égal à : ' . $a; // => Affiche "$a est égal à : ", la variable n'est pas définie
  $a = $a + 2;
  echo '$a est égal à : ' . $a; // => Affiche "$a est égal à : 2"
} 
plusDeux(); // appel à la fonction
echo '$a est égal à : ' . $a; // => Affiche "$a est égal à : 1"
En effet, la variable $a de dehors est différente de $a de dedans. Dans la fonction on a déclaré une nouvelle variable $a, à laquelle on a ajouté 2. Celà n'a pas affecté la variable en dehors de la fonction qui est restée à 1.

Première option pour que cela se fasse bien : passer une valeur en paramètre (pour que la fonction la connaisse) et renvoyer une valeur en résultat (pour mettre à jour la variable en dehors de la fonction :
$a = 1;
function plusDeux($a) { // ma fonction avec une variable passée en paramètre
  echo '$a est égal à : ' . $a; // => Affiche "$a est égal à : 1", la variable a été envoyée à la fonction
  $a = $a + 2;
  echo '$a est égal à : ' . $a; // => Affiche "$a est égal à : 3"
  return $a; // on retourne la valeur
} 
plusDeux($a); // appel à la fonction sans récupération du résultat
echo '$a est égal à : ' . $a; // => Affiche "$a est égal à : 1", la variable n'a pas changée
$a = plusDeux($a); // appel à la fonction et récupération du résultat dans $a
echo '$a est égal à : ' . $a; // => Affiche "$a est égal à : 3"
Deuxième option, déclarée la variable $a de la fonction comme étant "globale" pour que php sache qu'elle fait référence à une variable en dehors de la fonction :
$a = 1;
function plusDeux() { // ma fonction
  global $a; // déclaration de la variable, comme étant globale, donc exploitée en dehors de la fonction
  echo '$a est égal à : ' . $a; // => Affiche "$a est égal à : 1"
  $a = $a + 2; // met à jour la variable externe
  echo '$a est égal à : ' . $a; // => Affiche "$a est égal à : 3"
} 
plusDeux(); // appel à la fonction
echo '$a est égal à : ' . $a; // => Affiche "$a est égal à : 3", la variable externe a bien été mise à jour

Le problème de ton code vient donc du fait que toutes les variables que tu déclares à l'intérieur de ta fonction ($id_client, $id_user, ...) ne sont pas connue en dehors et donc pas exploitables :)

Une petite particularité également, $_POST (et ses camarades $_GET, $_SERVER, etc.) est une variable un peu spéciale.... c'est ce que l'on appelle une variable "super globale", c'est à dire qu'elle accessible de partout (même à l'intérieur d'une fonction), toujours, tout le temps. Il n'est donc pas nécessaire de la passer en argument de ta fonction, ni de la déclarer comme global, elle l'est déjà par défaut :)

Ta fonction pourrait donc ressembler à quelque chose du genre :
// déclaration des variables en dehors de la fonction (c'est pas obligatoire, mais ça évite les "Notice" de variable non déclarées :)
$id_client=""; 
$id_user=""; 
...
function insert_reclamation() { 
  global $id_client, $id_user, ...; // déclaration dans la fonction des variables globales (pas besoin d'y mettre $_POST)
  if (isset($_POST['id_client']))      $id_client=$_POST['id_client']; 
  if (isset($_POST['id_user']))      $id_user=$_POST['id_user']; 
  ...
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 440 Messages

21 oct. 2008, 10:08

Bonjour revient sur mon sujet, je voudrait savoir si il possible de rajouter des conditions dans ma function.

function mail_exe_ai_repondre($rosmail, $row0)
{
//Données obligatoires
if ( $rosmail == null || $row0 == null) return null;
else
return  '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Action immediate</title>

<style>
body
{
	margin: 10px 0 ;
	padding: 0 ;
	text-align: center ;
	background:#FFFFF;
	font: 0.8em "Trebuchet MS", helvetica, sans-serif ;
}
div#conteneur
{
	width: 1000px ;
	margin: 0 auto ;
	text-align: left ;
	border: 0px solid #0066CC;
	background: #fff ;
}
h1#header
{
	border: 0px solid #0066CC;
	height: 100px ;
	background: url(../img/header.jpg) no-repeat top ;
	background-color: #41b7d4;
}
div#contenu
{
margin: 0px 0px 0 10px ;
float: left ;
display: block ;
width:770px;
border-left: 2px dashed #41b7d4;
border-bottom: 2px dashed #41b7d4;
}
div#contenu h2
{
	margin: 0 10px 0 10px;
	padding-left: 25px ;
	line-height: 25px ;
	font-size: 1.4em ;
	color: #FF6600 ;
	background: url(../img/bouton.jpg) no-repeat left bottom ;
	border-bottom: 1px solid #41b7d4 ;
	border-left: 1px solid #41b7d4 ;
}
div#contenu p
{
	text-align: justify ;
	text-indent: 2em ;
	line-height: 1.7em ;
	padding: 0 0 0 125px;

}

table#reclamation, table#ai, table#tableau_reclamation, table#recap_reclamation, table#visu_reclamation, table#evaluation, table#recap_par_fac, table#recap_par_fac, table#recap_fac, table#recap_semaine, table#visu
{
width:765px;
margin: 0px auto;
border-collapse: collapse;
border: 1px solid #000000;
}

table#reclamation th, td, table#ai th, td, table#tableau_reclamationth, td, table#recap_reclamation th,td, table#visu_reclamation th, td, table#evaluation th, td, table#recap_fac th, td, table#recap_semaine th, td, table#visu th, td
{
border: 1px solid #000000;
}
.important {color : red;}

</style>
</head>
<body>
<br>
<table id="visu">
<tr>
<td align=center> Réclamation du client sur :'.$row0["nom_motif_reclamation"].'</td><td bgcolor="#8000FF" align=center>'.$row0["nom_client"].'('.$row0["code_client"].')</td>
</tr>
<tr>
<td>Contact:'.$row0["contact_client"].'</td><td>Nom:'.$row0["nom_client"].'</td>
</tr>
<td>Téléphone:'.$row0["tel_client"].'</td><td>Fax:'.$row0["fax_client"].'</td>
</tr>
</table>
<br>
Probleme'.$row0["nom_motif_reclamation"].':
<table id="visu">
<td align=center colspan="2" bgcolor="#FF6600"> Réclamation du client:</td>
</tr>
<tr>
<td align="center" colspan="2">'.$row0["des_reclamation"].'</td></tr>
<tr><td align=center>Cause (si elle est connue):</td><td align="center">'.$row0["cause_reclamation"].'</td></tr>
<tr>
<td align=center> Code Produit:</td><td align=center>'.$row0["nom_produit"].'('.$row0["code_produit"].')
</td>
</tr>
<tr>
<td align=center> N° de lot:</td><td align=center>'.$row0["lot_reclamation"].'</td>
</td>
<tr>
<td align=center> date_fabrication:(Format JJ/MM/2008)</td><td align=center>
'.$row0["date_fabrication"].
'</td>
</tr>
<tr>
<td align=center> date_DLUO:(Format JJ/MM/2008)</td><td align=center>
'.$row0["date_dluo"].'</td>
</tr>
<tr>
<td align=center> date Livraison :(Format JJ/MM/2008)</td><td align=center>
'.$row0["date_livraison"].'</td>
</tr>
<tr>
<td align=center> equipe:</td><td align=center>'.$row0["equipe"].'</td>
</tr>
<tr>
<td align=center> N_carton:</td><td align=center'.$row0["n_carton"].'</td>
</tr>
<tr>
<td align=center> quantité:</td><td align=center>'.$row0["quantite"].' '.$row0["nom_type_quantite"].'</td>
</tr>
<tr>
<td align="center" >N° Bl:</td><td align=center>'.$row0["n_bl"].'</td></tr>
<tr>
<td align="center" >N° facture:</td><td align=center>'.$row0["n_facture"].'</td></tr>
<tr>
<td align="center" >Utilisateur:</td><td align=center>'.$row0["prenom_user"].' '.$row0["nom_user"].'</td>
</tr>
</table>


<table id="ai">
<tr>
<td align="center"colspan="2" bgcolor="#FF6600">Action Immediate</td>
</tr>
<td colspan="2">
L\'action réalisé:'.$row0["nom_ar"].'
</td><tr>
<td>
';

if(isset($row0["autre_ai"]) && $row0["autre_ai"] !="")
{
echo $row0["autre_ai"];
}
elseif (isset($row0["date_si_re"]) && $row0["date_si_re"]!="0000-00-00")
{
echo $row0["date_si_re"];
echo $row0["heure_si_re"];
}
elseif(isset($row0["avoir_ai"]) && $row0["avoir_ai"]!="")
{
echo $row0["avoir_ai"];
echo 'Quantite:'.$row0["quantite_ai"].''.$row0["nom_type_quantite_ai"].'';
}
elseif(isset($row0["gratuite_ai"]) && $row0["gratuite_ai"]!="")
{
echo $row0["gratuite_ai"];
echo 'Quantite:'.$row0["quantite_ai"].''.$row0["nom_type_quantite_ai"].'';
}
else
{
}
'
</td></tr>
</tr>
<td align="center">Groupe en charge de l\'action:</td>
<td>'.$row0["nom_user_groupe"].'</td>
</tr>
</table>
<a href="http://intranet/qualite/v0.3a/action_immediate_repondre.php?login='.$rosmail["login_user"].'&mdp='.$rosmail["mdp_user"].'&id_ai='.$row0["id_ai"].'">Cliquer ICI </a>

</body>';
}
Je voudrait savoir si on peut rajouter des condition dans un return (exemple ci-dessus) avec mes if etc...


Merci d'avance

guigui69