IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Formulaire mail avec PJ


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut Formulaire mail avec PJ
    Bonjour !

    J'ai un soucis avec la fonction pièce jointe de mon formulaire.
    En fait mon formulaire existait déja, et j'ai voulu y ajouter un champ "Fichier" pour ajouter une pièce jointe au mail automatique envoyé.

    Mais j'ai l'impression qu'il ne prends pas en compte le champ d'envoi de mon formulaire dans le fichier de traitement.. Je ne comprends pas pourquoi.

    Mon formulaire :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    		<p>
    			<form id="form1" method="post" action="add.php" >
    				<p class="double">
    					<label for="f1-nom"><em  style="color:red">*</em> UI:</label>
    					<select name="ui" id="ui">
    						<option value=""></option>
    						<option value="AL">AL</option>
    						<option value="BFC">BFC</option>
    						<option value="CA">CA</option>
    						<option value="NPC">NPC</option>
    						<option value="P">P</option>
    					</select>
    				</p>
    				<p class="double">
    					<label for="f1-prenom"><em  style="color:red">*</em> Client:
    					<span class="info">(Complétion Automatique)</span></label>
    					<input type="text" name="client" autocomplete="off" onKeyUp="suggest(this, 'preetude', 'client');" />
    				</p>
    				<p class="double">
    					<label for="f1-adresse"><em  style="color:red">*</em> Adresse:
    					<span class="info">(Numéro, Rue et Ville)</span></label>
    					<input type="text" name="adresse" />
    				</p>
    				<p class="double">
    					<label for="f1-adresse">Telephone:
    					</label>
    					<input type="text" name="tel" />
    				</p>
    				<p class="double">
    					<label for="f1-ville"><em  style="color:red">*</em> Nom Demandeur:</label>
    					<input type="text" name="urs" />
    				</p>
    				<p class="double">
    					<label for="f1-ville">Nature de l'Etude:</label>
    					<input type="text" name="nature" />
    				</p>
    				<p class="double">
    					<label for="f1-telephone"><em  style="color:red">*</em> Arrivée THD:
    					<span class="info">(Format : YYYY-MM-JJ)</span></label>
    					<input type="text" name="arrivee" />
    				</p>
    				<p class="double">
    					<label for="f1-telephone"><em  style="color:red">*</em> Dde étude:
    					<span class="info">(Format : YYYY-MM-JJ)</span></label>
    					<input type="text" name="demetude" value="<?php echo date("Y-m-d"); ?>" />
    				</p>
    				<p class="double">
    					<label for="f1-telephone"><em  style="color:red">*</em> CAFF/ROS:</label>
    					<select name="ascaff" id="ascaff">
    						<option value=""></option>
    						<option value="Bernard SCHATT">Bernard SCHATT</option>
    						<option value="Denis DEFFUNT">Denis DEFFUNT</option>
    						<option value="Gauthier BEURAERT">Gauthier BEURAERT</option>
    						<option value="Jacques HUET">Jacques HUET</option>
    						<option value="Ludovic MARET">Ludovic MARET</option>
    						<option value="Maxime DE VENDT">Maxime DE VENDT</option>
    						<option value="Michel LESCURE">Michel LESCURE</option>
    						<option value="Olivier GRANDTENER">Olivier GRANDTENER</option>
    						<option value="Olivier PAUCHET">Olivier PAUCHET</option>
    						<option value="Steven PAWLAK">Steven PAWLAK</option>
    						<option value="Philippe MARZIN">Philippe MARZIN</option>
    						<option value="Régis BUNY">Régis BUNY</option>
    						<option value="Richard KLEMESIAK">Richard KLEMESIAK</option>
    						<option value="Roland SIX">Roland SIX</option>
    						<option value="Thierry LAMBRE">Thierry LAMBRE</option>
    						<option value="Vincent RETHORE">Vincent RETHORE</option>
    						<option value="ZZZ GE AT UI BFC">ZZZ GE AT UI BFC</option>
    						<option value="ZZZ PIL AFF UICHAMP">ZZZ PIL AFF UICHAMP</option>
    						<option value="ZZZ PILOTAGE THD UI AL">ZZZ PILOTAGE THD UI AL</option>
    						<option value="ZZZ THD UPR NE">ZZZ THD UPR NE</option>
    					</select>
    				</p>
    				<p class="double">
    					<label for="f1-telephone">Relance:</label>
    					<input type="text" name="relance" />
    				</p>
    				<p class="double">
    					<label for="f1-telephone"><em  style="color:red">*</em> Valideur:</label>
    					<select name="valideur" id="valideur">
    						<option value=""></option>
    						<option value="Gauthier BEURAERT">Gauthier BEURAERT</option>
    						<option value="Sébastien HEU">Sébastien HEU</option>
    						<option value="Steven PAWLAK">Steven PAWLAK</option>
    					</select>
    				</p>
    				<p class="double">
    					<label for="f1-infos">Commentaire Etude:
    					<span class="info">(Saisissez ici toutes les informations que vous jugerez utiles)</span></label>
    					<textarea name="commentaire" rows="150" cols="30">
    Cout Global:
     
    Delai de Prod:
     
    Ref AS D'etude si CAFF UI:</textarea>
    				</p>
     
    				<p class="double">
    					<!-- On limite le fichier à 10Mo -->
    					<input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
    					<label for="f1-telephone">Fichier : </label>
    					<input type="file" name="csv" />
    				</p>
     
    				<p class="simple">
    					<input type="button" value="Envoyer ces informations" onClick="verifForm(this.form)">
    					<input type="reset" name="reset" value="Effacer" />
    				</p>
    			</form>
     
    		</p>

    Mon script de traitement :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    <?php
     
    // sélection de la base de données
     
    $msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :
    <br/><br/>";
    $msg_ok = "Votre Pré-Etude a bien été ajouté à la base.";
    $message = $msg_erreur;
    $errs = array();
     
    // vérification des champs 
    if (empty($_POST['ui'])) 
      $message .= "Votre ui<br/>";
     
     
     
    $arr = "".$_POST['arrivee']."";
    $sem = "S".date("y", strtotime($arr)).strftime("%U", strtotime($arr));
     
    //mois en cours par defaut
    $mois_en_cours=date("n", strtotime($arr));
     
    //Determine le trimestre en cours (1,2,3,4)
    $tri_en_cours = floor(($mois_en_cours-1)/3)+1;
     
    //Determine le premier mois du trimestre en cours
    $date_mois1_tri = 3*floor(($mois_en_cours-1)/3)+1;
     
    $tri = "T".date("y", strtotime($arr))."0".$tri_en_cours;
     
     
    // si un champ est vide, on affiche le message d'erreur
    if (strlen($message) > strlen($msg_erreur)) {
     
      echo $message;
     
    // sinon c'est ok 
    } else {
     
      foreach($_POST as $index => $valeur) {
        $$index = mysql_real_escape_string(trim($valeur));
      }
     
      $sql = "INSERT INTO preetude VALUES (NULL,'".$ui."', '".$adresse."', '".$client."', '".$tel."', '".$urs."', '".$nature."', '".$arrivee."', '".$sem."', '".$tri."','".$demetude."','".$ascaff."','".$relance."',NULL,NULL,'".$valideur."','".$commentaire."')";
      $res = mysql_query($sql);
     
      if ($res) {
        echo $msg_ok;
      } else {
        echo mysql_error();
      }
     
    }
    ?>
     
    <?php
     
    $sql2 = "SELECT LAST_INSERT_ID('preetude')";
    //$sql2 = "select MAX(id_etu) AS ID FROM preetude";
    $qry = mysql_query($sql2);
    while($row = mysql_fetch_assoc($qry)) {
       $dataSQL[] = $row;
    }
    $id_et = mysql_insert_id();
    echo "<br>(ID Pré-Etude : ".$id_et.")";
     
     
     
    ?>
     
    <?php
    	if(isset($_FILES['csv']))
    	{ 
    		 $dossier = 'tmp/';
    		 $fichier = basename($_FILES['csv']['name']);
    		 if(move_uploaded_file($_FILES['csv']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    		 {
    			  echo "Upload du fichier effectué avec succès !";
    			  echo "<br>Chemin du fichier : tmp/".$_FILES['csv']['name']."<br><br>";
    		 }
    		 else //Sinon (la fonction renvoie FALSE).
    		 {
    			  echo "Echec de l\'upload !";
    		 }
    	}
     
    	//Le chemin d'acces a ton fichier sur le serveur
    	$fichier = fopen("tmp/".$_FILES['csv']['name'], "r");
     
    	$fichier = "".$dossier."".$_FILES['csv']['name']."";
    	$fichier2 = $_FILES['csv']['name'];
     
    	echo $fichier;
     
    ?>
    <?php
     
     
     
     
     
     
    if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui rencontrent des bogues.
    {
    	$passage_ligne = "\r\n";
    }
    else
    {
    	$passage_ligne = "\n";
    }
     
     
     
     
     
    $comm2 = nl2br($commentaire);
     
    // =====Déclaration du message au format TXT.
    $message_txt = "
    Bonjour <b>$ascaff</b>, 
    <p>~ Une nouvelle Pré-Etude vous a été affecté, par <i>OAP-THD</i>. ~</p>
    <p>
    		<table>
    			<tr>
    				<td><b>UI</b> :</td>
    				<td>$ui</td>
    			</tr>
    			<tr>
    				<td><b>Adresse</b> :</td>
    				<td>$adresse</td>
    			</tr>
    			<tr>
    				<td><b>Client</b> :</td>
    				<td>$client</td>
    			</tr>
    			<tr>
    				<td><b>Tel</b> :</td>
    				<td>$tel</td>
    			</tr>
    			<tr>
    				<td><b>Nature</b> :</td>
    				<td>$nature</td>
    			</tr>
    			<tr>
    				<td><b>Arrivée THD</b> :</td>
    				<td>$arrivee</td>
    			</tr>
    			<tr>
    				<td><b>Demande d'Etude</b> : </td>
    				<td>$demetude</td>
    			</tr>
    			<tr>
    				<td><b>Commentaire</b> : </td>
    				<td>$comm2</td>
    			</tr>
    		</table>
    	</p>
    ";
     
    // =====Déclaration du message au format HTML.
    $message_html = "
    <html>
    <head>
    </head>
    <body>
    	<p><img src=\"http://oapthd-pprod.si.francetelecom.fr/styles/logo.png\" alt=\"OAP-THD\" /></p>
    	
    	<p>
    		Bonjour <b>$ascaff</b>,
    	</p>
    	<p>~ Une nouvelle Pré-Etude vous a été affecté, par <i>OAP-THD</i>. ~</p>
    
    	<p>
    		<table>
    			<tr>
    				<td><b>UI</b> :</td>
    				<td>$ui</td>
    			</tr>
    			<tr>
    				<td><b>Adresse</b> :</td>
    				<td>$adresse</td>
    			</tr>
    			<tr>
    				<td><b>Client</b> :</td>
    				<td>$client</td>
    			</tr>
    			<tr>
    				<td><b>Tel</b> :</td>
    				<td>$tel</td>
    			</tr>
    			<tr>
    				<td><b>Nature</b> :</td>
    				<td>$nature</td>
    			</tr>
    			<tr>
    				<td><b>Arrivée THD</b> :</td>
    				<td>$arrivee</td>
    			</tr>
    			<tr>
    				<td><b>Demande d'Etude</b> : </td>
    				<td>$demetude</td>
    			</tr>
    			<tr>
    				<td><b>Commentaire</b> : </td>
    				<td>$comm2</td>
    			</tr>
    		</table>
    	</p>
    	
    
    	
    	</body>
    </html>";
     
    $message_html.= "".$sign."";
     
    //=====Création de la boundary
    $boundary = "-----=".md5(rand());
    //==========
     
    // =====Définition du sujet.
    $sujet = "[OAP-THD] Nouvelle Pré-Etude : ".$client."";
    // =========
     
    // =====Création du header de l'e-mail.
    $header = "From: \"ZZZ THD UPR NE\"<****>".$passage_ligne;
    $header.= "Reply-to: \"ZZZ THD UPR NE\" <*****>".$passage_ligne;
    $header.= "Cc: \"ZZZ THD UPR NE\" <*****>".$passage_ligne;
    $header.= "MIME-Version: 1.0".$passage_ligne;
    $header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
    // ==========
     
    //=====Création du message.
    $message = $passage_ligne."--".$boundary.$passage_ligne;
    //=====Ajout du message au format texte.
    $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
    $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
    $message.= $passage_ligne.$message_txt.$passage_ligne;
    //==========
    $message.= $passage_ligne."--".$boundary.$passage_ligne;
    //=====Ajout du message au format HTML
    $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
    $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
    $message.= $passage_ligne.$message_html.$passage_ligne;
    //==========
    $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
    $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
    //==========
     
     
     
    // Traitement pour attacher une PJ
    // D'abord on lit le fichier
    $contenu = file_get_contents($fichier);
    $attachement = "\n------=$limite\n";
    // Dans mon exemple, il s'agit d'un fichier html, il faut mettre le bon mime type
    $attachement .= "Content-Type: text/html; name=\"$fichier2\"\n";
    $attachement .= "Content-Transfer-Encoding: base64\n";
    $attachement .= "Content-Disposition: attachment; filename=\"$fichier2\"\n\n";
    // Ca y est on joint le fichier en l'encodant en base 64
    $attachement .= chunk_split(base64_encode($contenu));
     
     
     
     
     
    // =====Ajout du message au format HTML
    // $message= $passage_ligne.$message_html.$passage_ligne;
    // ==========
     
    // =====Envoi de l'e-mail.
    ini_set('SMTP','***********'); 
    mail($mail,$sujet,$message.$attachement,$header);
    ini_set('smtp_port',25);
    ini_get('SMTP');
    // ==========
     
    echo ("<br><br>Un mail a été envoyé à <b>$ascaff</b>. ($mail)");
    ?>

    Si quelqu'un arrive a comprendre pourquoi mon fichier ne s'envoi pas a l'envoi de mon formulaire... Je suis perdu

    (J'ai supprimé les adresses pour la confidentialité)

    merci d'avance !!

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    oui j'arrive à comprendre.

    il faut regarder comment ça marche:
    http://php.developpez.com/faq/langag...ichiers_upload


    Citation Envoyé par commentçamarche
    <form method="post" action="[votre fichier PHP pour l'upload.php]" enctype="multipart/form-data">
    ensuite ceci est inutile:
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/06/2014, 15h26
  2. prob formulaire mail avec liste deroulante
    Par oukok dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2007, 13h20
  3. Réponses: 8
    Dernier message: 25/07/2006, 22h49
  4. Réponses: 1
    Dernier message: 25/07/2006, 22h11
  5. Réponses: 1
    Dernier message: 25/04/2006, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo