flock86 oh non les gars pas le slip! | Salut à tous!
voilà, j'ai un problème depuis plusieurs jours, et je m'arrache les cheveux!!
j'ai créé un formulaire, accessible via un système de session, et les infos sont stockées dans une bdd. une fois l'enregistrement effectué, il ya un système d'envoi automatique de mail au demandeur et à une autre personne.
mon problème est le suivant :
une fois mon formulaire rempli, il arrive que les données et les mails soient envoyés en 1 exemplaire (c'est ce que je souhaite à la base), mais il arrive aussi que ces événement surviennent 2 voire 3 fois d'affilée! o_O ce qui généère des doublons dans la base et les boites mails.
ça doit venir d'un problème de boucle, mais j'arrive pas à trouver...
ce qui m'interpelle d'autant plus, c'est le nombre variable d'envoi et d'insertion dans la base.
que ça se fasse 1, 2 ou 3 fois, je comprendrais si le nombre était constant, mais ça varie!!!
il ya une page de connexion donc, et derrière la page de formulaire que voici (désolé il est long!!) :
Code :
- <?
- session_start();
- mysql_connect("localhost", "***", "****" ) or die(mysql_error());
- mysql_select_db("feb" )or die(mysql_error());
- // récupération des données date du jour
- $datejour=date('d');
- $datemois=date('m');
- $dateannee=date('Y');
- $datedemande= $dateannee.'-'.$datemois.'-'.$datejour;
- //selection des données liées à la personne pour récupérer sa signature
- $requetesign=mysql_query('SELECT * FROM acces WHERE identifiant="'.$_SESSION['identifiant'].'"') or die(mysql_error());
- while ($reponseacces=mysql_fetch_array($requetesign)) {
- $signaturedemandeur=$reponseacces['signature'];
- }
- //création du numéro de la demande
- $requetenombreexact= mysql_query('SELECT numero FROM demande WHERE (mois='.$datemois.' AND an='.$dateannee.') ORDER BY id DESC')or die(mysql_error());
- $reponseexact= mysql_fetch_array($requetenombreexact);
- $nombre=explode('-', $reponseexact['numero']);
- if (isset($nombre[3]))
- {
- //echo $donneesnombre['nb_mois'];
- $n=$nombre[3]+1;
- }
- else {$n=1;}
- $numero='FEB-'.$dateannee.'-'.$datemois.'-'.$n;
- //protection pour éviter les quotes dans les données de la table
- if(isset($_POST['nota'])) {
- $nota1=addslashes($_POST['nota']);}
- if(isset($_POST['definition'])) {
- $definition1=addslashes($_POST['definition']);}
- if(isset($_POST['montant'])) {
- $montant1=addslashes($_POST['montant']);}
- if(isset($_POST['destinataire'])) {
- $destinataire1=addslashes($_POST['destinataire']);}
- if (isset ($_POST['jourdispo'])AND isset($_POST['moisdispo']) AND isset( $_POST['andispo']))
- {
- $datemiseadispo=$_POST['andispo'] . '-' . $_POST['moisdispo'] . '-' . $_POST['jourdispo'];
- }
- //si le responsable est non défini pour l envoi par mail
- if (isset($_POST['resp']) AND $_POST['resp']=="rien" )
- {
- ?><script language="javascript" type="text/javascript">alert("Vous n'avez pas choisi la personne à qui envoyer votre FEB !" );</script><?
- }
- //si oui :
- if(isset($_POST['resp'])AND $_POST['resp']!="rien" )
- {
- //insertion des données dans la table demande
- $insertion=mysql_query("INSERT INTO demande (id, numero, demandeur, signaturedemandeur, tel, mel, definition, destinataire, datemiseadispo, nota, montant, datedemande, respbudget, mois, an) VALUES ('', '".$_POST['numero']."', '".$_SESSION['nomprenom']."', '".$reponseacces['signature']."','".$_SESSION['tel']."', '".$_SESSION['mel']."', '".$definition1."', '".$_POST['destinataire']."', '".$datemiseadispo."', '".$nota1."', '".$montant1."', '".$datedemande."', '".$_POST['resp']."', '".$datemois."', '".$dateannee."' )" ) or die(mysql_error());
- //envoi de mail au demandeur
- $entete = "From: intranet-fiche expression de besoin\r\n";
- $entete .= "MIME-Version: 1.0\r\n";
- $entete .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";
- $email=$_SESSION['mel'];
- $sujet='FEB numero : '.$_POST['numero'] ;
- $message="Bonjour,\n\n ";
- $message .= '<p>Votre demande numero '.$_POST['numero'].' a bien été prise en compte. <br> Vous pouvez à tout moment consulter votre demande à <a href="http://**************/consultation.php?numero='.$_POST['numero'].'" target="_blank">cette adresse</a>. <br>
- Veuillez conserver ce numéro pour accéder à votre demande via le site intranet.
- <br>
- Cordialement,<br>
- Le site Intranet.</p>';
- mail($email,$sujet,$message,$entete);
- //envoi de mail au responsable
- $requeteresp=mysql_query('SELECT * FROM acces WHERE nomprenom="'.$_POST['resp'].'"') or die (mysql_error());
- while ($reponseresp=mysql_fetch_array($requeteresp))
- {
- $entete = "From: intranet-fiche expression de besoin\r\n";
- $entete .= "MIME-Version: 1.0\r\n";
- $entete .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";
- $email= reponseresp['mel'];
- $sujet='FEB numero : '.$_POST['numero'].' en attente' ;
- $message="Bonjour,\n\n ";
- $message .= '<p>La FEB numero '.$_POST['numero'].' a été formulée sur l intranet et est en attente de validation de votre part. <br> Vous pouvez y accéder à <a href="http://***********/consultationrespbudget.php?numero='.$_POST['numero'].'" target="_blank">cette adresse</a>. <br>
- <i>Nota</i> : Votre mot de passe et login seront nécessaires pour authentifier votre identité.<br> Merci de votre compréhension.
- <br>
- Cordialement,<br>
- Le site Intranet.</p>';
- mail($email,$sujet,$message,$entete);
- //destruction de la session
- session_destroy();
- ?>
- <script language="javascript" type="text/javascript">alert("Votre FEB a bien été prise en compte. Un mail de confirmation vous est envoyé, et le responsable budget est informé. " );
- window.location.href="../../index.html";
- </script><?
- //}
- }
- }
- ?>
|
Si qq'un peut me filer un coup de main, je vois vraiment pas mon erreur...
merci!!
[EDIT] : bon j'ai raccourci mon code, pour pas vous décourager de lire mon post, je vous fais grâce de ma partie html, elle n'est pas la cause de mon problème de toutes façons... Message édité par flock86 le 20-07-2006 à 15:46:24
|