C'est bon!! après deux jours de recherche et de travail enfin trouver toutes les solutions à mes problèmes. Alors pour ceux à qui ça peut aider :
- Premièrement pour faire un upload de fichier dans le formulaire (avec reception des information du formulaire en mail, je n'est pas essayer avec MySQL) :
Dans la partie html :
[code]<form method="post" action="traitement.php" enctype="multipart/form-data">
</form>
Vous pouvez remarquer l'ajout de :
enctype="multipart/form-data"
Puis nous allons insérer le bouton "parcourir" permettant de séléctionner le fichier voulu, et définir aussi le taille maximal du fichier (valeur en octet, 1 Mo = 1048576 octets), donc le code à afficher dans l'ordre, et à inserer dans le formulaire :
<input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
<p><label for="fichier">Fichier : </label><input type="file" name="fichier" /></p>
Pour l'exemple nous imposons donc un fichier de taille maximal d'1 Mo.
Voila pour la partie html.
Maintenant dans le document "traitement.php" :
Juste après la vérifications des champs, c'est à dire après :
if (strlen($message) > strlen($msg_erreur)) {
echo $message;
}
On va indiquer quel script il faut utiliser si la personne a mi un fichier joint :
if (strlen($fichier_name) > 0)
{
ici on indique que si le nom du fichier est superieur a 0 caractere on effectue le script suivant :donc ensuite le script si la personne a bien mi un fichier joint :
$fichier_name = strtr($fichier_name,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
//On remplace les lettres accentutées par les non accentuées dans $fichier.
//Et on récupère le résultat dans fichier
//En dessous, il y a l'expression régulière qui remplace tout ce qui n'est pas une lettre non accentuées ou un chiffre
//dans $fichier par un tiret "-" et qui place le résultat dans $fichier.
$fichier_name = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier_name);
$repertoire = "upload/";
$destination = $repertoire.$fichier_name;
if (!move_uploaded_file($fichier, $destination)) {print "ERREUR: Impossible de telecharger le fichier:$fichier_name , verifier la taille de document";}
else {
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}
//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
."<{$_POST['mail']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['mail']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";
// préparation du corps du mail
$mail_corps = "Message de : $civilite $nom $prenom\n";
$mail_corps .= "Adresse : $ville, $departement\n";
$mail_corps .= "Contacts : $tel, $mail\n";
$mail_corps .= "Raison sociale : $raison\n";
$mail_corps .= "Qualité : $qualite\n";
$mail_corps .= "Raison sociale : $raison\n\n\n";
$mail_corps .= "Type de prestation : $prestation\n";
$mail_corps .= "Autre type : $autre1\n";
$mail_corps .= "Structure : $structure\n";
$mail_corps .= "Autre structure : $autre2\n";
$mail_corps .= "Professionnel ou amateur : $p_ou_a\n";
$mail_corps .= "Titre de l'oeuvre : $titre\n";
$mail_corps .= "Durée de la prestation: $duree\n";
$mail_corps .= "Distribution : $nb_homme h, $nb_femme f\n";
$mail_corps .= "Public concerné : $public\n";
$mail_corps .= "Droit d'auteur : $droit\n";
$mail_corps .= "Décor : $decor\n";
$mail_corps .= "Site internet : $internet\n\n\n";
$mail_corps .= "Fichier joint : http://www.keopsprod.com/essai/upload/$fichier_name\n";
$mail_corps .= "Message de l'artiste: $comments\n";
// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
//Le mail est bien expédié
echo $msg_ok;
} else {
//Le mail n'a pas été expédié
echo 'Une erreur est survenue lors de l\'envoi du formulaire par email';
}
}
}
J'explique :
- La premiere parti du code effectue un changement du nom du fichier de la personne qui veut l'envoyer, cela permet de ne pas avoir d'erreur, car les caractères speciaux et les espaces, peuvent être mal interpreter.
- Et la deuxieme est simplement l'upload du fichier sur le serveur.
Il faut donc creer un dossier au meme niveau que le script sur le serveur, j'ai ici appeler le dossier "upload", mais aussi un dossier "tmp" sur certain serveur ceci est obligatoire. N'oublier pas de mettre comme attribut chmod a ces deux dossier : 777
- le reste du code provient du tutorial donc normalement pas de probleme pour vous

avec la seul difference :
lajout du lien du fichier joint dans le corps du mail.
maintenant il faut indiquer le script qui doit etre utiliser si la personne n'a pas mi de fichier, qui est en realité le meme script utiliser ci dessu mais sans la partie upload, et avec dans le corps du mail: fichier joint : aucun (au lieu du lien) :
else {
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}
//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
."<{$_POST['mail']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['mail']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";
// préparation du corps du mail
$mail_corps = "Message de : $civilite $nom $prenom\n";
$mail_corps .= "Adresse : $ville, $departement\n";
$mail_corps .= "Contacts : $tel, $mail\n";
$mail_corps .= "Raison sociale : $raison\n";
$mail_corps .= "Qualité : $qualite\n";
$mail_corps .= "Raison sociale : $raison\n\n\n";
$mail_corps .= "Type de prestation : $prestation\n";
$mail_corps .= "Autre type : $autre1\n";
$mail_corps .= "Structure : $structure\n";
$mail_corps .= "Autre structure : $autre2\n";
$mail_corps .= "Professionnel ou amateur : $p_ou_a\n";
$mail_corps .= "Titre de l'oeuvre : $titre\n";
$mail_corps .= "Durée de la prestation: $duree\n";
$mail_corps .= "Distribution : $nb_homme h, $nb_femme f\n";
$mail_corps .= "Public concerné : $public\n";
$mail_corps .= "Droit d'auteur : $droit\n";
$mail_corps .= "Décor : $decor\n";
$mail_corps .= "Site internet : $internet\n\n\n";
$mail_corps .= "Fichier joint : aucun\n";
$mail_corps .= "Message de l'artiste: $comments\n";
// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
//Le mail est bien expédié
echo $msg_ok;
} else {
//Le mail n'a pas été expédié
echo 'Une erreur est survenue lors de l\'envoi du formulaire par email';
}
}
Si vous avez suivi le tutorial sur les formulaires html,css,php, normalement aucun probleme ne se pose.
Dans le prochains post je vais expliquer comment rajouter une sécurité pour les spambots (image avec lettre à recopier pour pouvoir envoyer le formulaire) sans que des robots vienne pourrir votre boite mail et votre serveur (l'ajout d'upload est risqué sans cette méthode)
Voila j'espers que j'ai pût aider des personnes.

Si vous voulez voir un exemple, l'adresse d'une page de mon site :
http://www.keopsprod.com/essai/form.html[/code]