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 :

Optimisation d'un formulaire contact


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut Optimisation d'un formulaire contact
    Bonjour,
    Je recherche de l'aide afin d'optimiser mon formulaire de contact.
    Actuellement voici la configuration de ma base de données :

    Table "formulaire" :
    id_form   nom   objet   texte   mail   mail_dest
    
    Table "destinataire" :
    Id_dest   Nom   mail_desti
    Voici le code de mon formulaire :

    Code : 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
     
    <?php
    // Initalisation
    	$validContact 	= 0;
    	$MsgErrContact 	= '';
    	$defaut_nom 	= 'Nom';
    	$defaut_mail 	= 'Votre adresse mail';
    	$defaut_objet 	= 'Objet';
    	$defaut_texte 	= 'Texte';
    	$nom 		= $defaut_nom;
    	$mail 		= $defaut_mail;
    	$objet 		= $defaut_objet;
    	$texte 		= $defaut_texte;
     
    // si le formulaire est post�
    if (isset($_POST['B1']))
    {
    	// ----------------------------------------------------
    	// R�cup�ration des valeurs des champs du formulaire
    	// ----------------------------------------------------
    	$nom 		= (isset($_POST['nom']) && trim($_POST['nom'])!=$defaut_nom)? 		trim(stripslashes($_POST['nom'])) : $defaut_nom;
    	$mail 		= (isset($_POST['mail']) && trim($_POST['mail'])!=$defaut_mail)? 	trim(stripslashes($_POST['mail'])) : $defaut_mail;
    	$objet 		= (isset($_POST['objet']) && trim($_POST['nom'])!=$defaut_objet)? 	trim(stripslashes($_POST['objet'])) : $defaut_objet;
    	$texte 		= (isset($_POST['texte']) && trim($_POST['nom'])!=$defaut_texte)? 	strip_tags(trim(stripslashes($_POST['texte']))) : $defaut_texte;	// textarea + protection anti-xss
    	// ----------------------------------------------------
    	// Gestion des erreurs
    	// ----------------------------------------------------
    	// champs obligatoires
    	$champ_obligatoire = array();
    	// Message
    	if ($nom=='' || $nom==$defaut_nom) {	$validContact = 2;	$champ_obligatoire[] = 'Votre Nom'; }
    	if ($mail=='' || $mail==$defaut_mail) {	$validContact = 2;	$champ_obligatoire[] = 'Votre adresse mail'; }
    	if($validContact==2 && count($champ_obligatoire)>0) {
    		$MsgErrContact 	.= 'Remplissez les champs obligatoires : '.implode(', ',$champ_obligatoire).'<br />';
    	}
    	// -------------
    	// regex e-mail
    	$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i'; 
    	// On v�rifie que le format de l'e-mail est correct
    	if ($mail!='' && $mail!='Votre adresse mail' && !preg_match($regex_mail, $mail)) {
    		$MsgErrContact 	.= 'Adresse mail invalide (doit �tre de la forme : <a href="mailto:xxxx@xx.xx">xxxx@xx.xx</a>)'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	// essai de connexion � la base de donnees
    	if(!mysql_connect('mysql51-26.pro','sniazllbbd2','XXXXXXX')){
    		$MsgErrContact 	.= 'Connection � la base de donnees Impossible'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	if ($validContact!=2) {
    		$validContact = 1;
    	}
    	// ----------------------------------------------------
    	// PAS d'ERREUR : TRAITEMENT
    	// ----------------------------------------------------
    	if($validContact == 1) {
     
    		// -------------
    		// 1/ PROTECTION contre injection SQL AVANT insertion en bdd
    		$bd_nom 	= mysql_real_escape_string($nom);
    		$bd_mail 	= mysql_real_escape_string($mail);
    		$bd_objet 	= mysql_real_escape_string($objet);
    		$bd_texte 	= mysql_real_escape_string($texte);
    		// -------------
    		// 2/ Enregistrement en base de donn�es
    		mysql_select_db('sniazllbbd2');
    		$requete = "INSERT INTO formulaire SET nom='$bd_nom',objet='$bd_objet',texte='$bd_texte', mail='$bd_mail'" ;
    		$resultat = mysql_query($requete);
    		// -------------
    		// 3/ ENVOI d'un email a l'administrateur
    		$message	= date("d/m/Y H:m:s\n")."\n".
    					" Nouveau contact :"."\n";
    					" Nom :".$nom."\n".
    					" Adresse mail :".$mail."\n".
    					" Objet :".$objet."\n".
    					" Texte :".$texte;
    		$entetes	= "From: $mail\nReply-to: $mail\n".
    					"MIME-Version: 1.0\r\n".
    					"Content-type: text/plain; charset=utf-8\r\n"; // (format TEXTE)
    		$sujet		= "Contact site SNIA de la part de ".$nom;
    		$webmaster	= 'raphael.1@gmail.com';
    		mail($webmaster,$sujet,$message,$entetes);
    		// -------------
    	} // fin traitement
    } // fin si le formulaire est post�
    ?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>Formulaire contact</title>
    	<style type="text/css">
    	label { float:left; width:150px; text-align:right; margin-right:5px; }
    	</style>
    </head>
    <body>
    <?php // Messages
    if($validContact==1) { // message OK ?>
    	<p>Votre message a bien �t� envoy�</p>
    <?php
    } elseif($validContact==2) { // message ERREUR ?>
    	<p><?php echo $MsgErrContact; ?></p>
    <?php } ?>
     
    <?php // Formulaire
    if($validContact!=1) { ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    	<p>
    		<label for="idnom">Nom : </label>
    		<input id="idnom" name="nom" type="text" size="30" value="<?php echo $nom; ?>" onfocus="if(this.value=='<?php echo $defaut_nom; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_nom; ?>'; }">
    	</p>
    	<p>
    		<label for="idmail">Votre adresse mail : </label>
    		<input id="idmail" name="mail" type="text" size="30" value="<?php echo $mail; ?>" onfocus="if(this.value=='<?php echo $defaut_mail; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_mail; ?>'; }">
    	</p>
    	<p>
    		<label for="idobjet">Objet : </label>
    		<input id="idobjet" name="objet" type="text" size="50" value="<?php echo $objet; ?>" onfocus="if(this.value=='<?php echo $defaut_objet; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_objet; ?>'; }">
    	</p>
    	<p>
    		<label for="idtexte">Texte : </label>
    		<textarea id="idtexte" name="texte" cols="40" rows="3" onfocus="if(this.value=='<?php echo $defaut_texte; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_texte; ?>'; }"><?php echo $texte; ?></textarea>
    	</p>
    	<p>
    		<label>&nbsp;</label>
    		<input type="submit" value="Envoyer" name="B1">
    	</p>
    </form>
    <p>
      <?php } // fin formulaire ?>
     
    </p>
    <p>&nbsp;</p>
    </body>
    </html>
    J'ai créé un formulaire mais je n'arrive pas a y ajouter une liste déroulante permettant de sélectionner le destinataire.
    Je voudrais y ajouter une liste déroulante (la liste déroulante afficherait que le nom du destinataire et non sont adresse afin de diffuser celle-ci. Les infos sont issu de la table "destinataire") dans laquelle l'utilisateur sélectionnerez le nom du destinataire et quand il cliquerez sur le bouton "envoi" le serveur enverrait le mail issu du formulaire à l'adresse du destinataire sélectionné et une copie des informations saisie serait enregistrée dans la table "formulaire".

    Quelqu'un pourrait il m'apporter son aide, un conseil, une remarque, une idée, … SVP Merci

    Bonne fin de journée

    Raphael

  2. #2
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    salut ; avant tout change de balise pou que ton code soit lisible enlève celle de citation est utilise la balise #
    juste une proposition essaye de passé a PDO ou mysqli
    http://php.net/manual/fr/class.pdo.php
    http://php.net/manual/fr/class.mysqli.php
    en attendant que la code soit visible , ajoute un autre contrôle coté php
    en ce qui concerne la liste des destinataires une balise select et une requête feront l'affaire.

    Bonne fin de journée....

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut Optimisation formulaire
    Salut,

    Merci de cette repose.

    Pourrais tu m'expliquer ce qu'est PDO ou mysqli ? SVP Merci

    Pourrais tu m'expliquer comment mettre une balise select et comment formuler la requête ? SVP Merci

    @+

    Raphaël

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re , suit le premier lien , voila 1 exemple:
    Code : 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
     
    <?php
    // On se connecte à la bdd
    try
    {
    $PARAM_hote='localhost'; // le chemin vers le serveur
    $PARAM_nom_bd='bddd'; // le nom de votre base de données
    $PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
    $PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter
    // connexion marche très bien avec affichage de msg erreure
     
    // Options de connexion
    $options = array
    (
    PDO::MYSQL_ATTR_INIT_COMMAND    => "SET NAMES utf8" ,  // indiquer à MySQL que echanger nos données en UTF8.
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION , 
    PDO::ATTR_PERSISTENT => true);
     
     
    $cbd = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe , $options  );
    }
     
    catch(PDOException $e)
    {
    echo 'Une erreur de connexion est survenue !'; $e->getMessage();
    die();
    }
     
    ?>

  5. #5
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    et pour la balise select alimenté a partir de la BDD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    .........
    // ta requête
    $datacom = resultat de ta requête
    <select name="com">
    <option >Sélectionnez un destinataie</option>
      <?php
      foreach ($datacom as $com)  {
      // on affiche les informations de l'enregistrement en cours
      echo '<option value="'.$com['cdc'].'" '>'.$com['dest'].'</option>';
     }
     ?>
    </select>
    a testé

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonjour,

    Attention à la quote en trop dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="'.$com['cdc'].'" '>'.$com['dest'].'</option>';
    juste avant la fermeture de la balise option.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="'.$com['cdc'].'" >'.$com['dest'].'</option>';
    une réponse vous a permis d'avancer ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut Optimisation formulaire (suite)
    Bonjour,

    Merci pour l'aide que vous m'avez apporte.

    Voulant toujours optimiser mon formulaire je refais appel aux membres du forum.

    Je voudrais apporter l'amelioration suivante a monformulaire :

    La personne souhaitant utiliser ce formulaire de contacter pourrais choisir le destinataire de son mail a partir d'une liste deroulante alimenté par une seconde table de ma base. Bien evidement elle ne verrait apparaitre que le nom du destinataire et non pas son adresse mail que se soit dans le formulaire ou dans la copie du mail qu'elle recevrait.

    Voici la structure de ma base :
    -- phpMyAdmin SQL Dump
    -- version 3.3.9
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Ven 07 Décembre 2012 à 13:46
    -- Version du serveur: 5.5.8
    -- Version de PHP: 5.3.1

    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;

    --
    -- Base de données: `snia1`
    --

    -- --------------------------------------------------------

    --
    -- Structure de la table `adressformulaire`
    --

    DROP TABLE IF EXISTS `adressformulaire`;
    CREATE TABLE IF NOT EXISTS `adressformulaire` (
    `id_formd` int(11) NOT NULL AUTO_INCREMENT,
    `nomd` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
    `maild` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
    PRIMARY KEY (`id_formd`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

    --
    -- Contenu de la table `adressformulaire`
    --

    INSERT INTO `adressformulaire` (`id_formd`, `nomd`, `maild`) VALUES
    (1, 'Raphael', 'raphael.l1@gmail.com'),
    (2, 'SNIA', 's@s.net');

    -- --------------------------------------------------------

    --
    -- Structure de la table `formulaire`
    --

    DROP TABLE IF EXISTS `formulaire`;
    CREATE TABLE IF NOT EXISTS `formulaire` (
    `id_form` int(11) NOT NULL AUTO_INCREMENT,
    `nom` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
    `mail` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
    `objet` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
    `texte` varchar(250) COLLATE utf8_unicode_ci NOT NULL,
    `maild` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
    PRIMARY KEY (`id_form`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

    --
    -- Contenu de la table `formulaire`
    --
    Voici le code de mon formulaire :
    Code : 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
     
    <?php require_once('Connections/cnxsnia1.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      if (PHP_VERSION < 6) {
        $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
      }
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    mysql_select_db($database_cnxsnia1, $cnxsnia1);
    $query_rsNomd = "SELECT * FROM adressformulaire";
    $rsNomd = mysql_query($query_rsNomd, $cnxsnia1) or die(mysql_error());
    $row_rsNomd = mysql_fetch_assoc($rsNomd);
    $totalRows_rsNomd = mysql_num_rows($rsNomd);
     
    // Initalisation
    	$validContact 	= 0;
    	$MsgErrContact 	= '';
    	$defaut_nom 	= 'Nom';
    	$defaut_mail 	= 'Votre adresse mail';
    	$defaut_objet 	= 'Objet';
    	$defaut_texte 	= 'Texte';
    	$defaut_nomd 	= 'NomdTexte';
    	$defaut_maild 	= 'Texte';
    	$nom 		= $defaut_nom;
    	$mail 		= $defaut_mail;
    	$objet 		= $defaut_objet;
    	$texte 		= $defaut_texte;
    	$nomd 		= $defaut_nomd;
    	$maild 		= $defaut_maild;
     
    // si le formulaire est post�
    if (isset($_POST['B1']))
    {
    	// ----------------------------------------------------
    	// R�cup�ration des valeurs des champs du formulaire
    	// ----------------------------------------------------
    	$nom 		= (isset($_POST['nom']) && trim($_POST['nom'])!=$defaut_nom)? 		trim(stripslashes($_POST['nom'])) : $defaut_nom;
    	$mail 		= (isset($_POST['mail']) && trim($_POST['mail'])!=$defaut_mail)? 	trim(stripslashes($_POST['mail'])) : $defaut_mail;
    	$objet 		= (isset($_POST['objet']) && trim($_POST['nom'])!=$defaut_objet)? 	trim(stripslashes($_POST['objet'])) : $defaut_objet;
    	$texte 		= (isset($_POST['texte']) && trim($_POST['nom'])!=$defaut_texte)? 	strip_tags(trim(stripslashes($_POST['texte']))) : $defaut_texte;	// textarea + protection anti-xss
    	// ----------------------------------------------------
    	// Gestion des erreurs
    	// ----------------------------------------------------
    	// champs obligatoires
    	$champ_obligatoire = array();
    	// Message
    	if ($nom=='' || $nom==$defaut_nom) {	$validContact = 2;	$champ_obligatoire[] = 'Votre Nom'; }
    	if ($mail=='' || $mail==$defaut_mail) {	$validContact = 2;	$champ_obligatoire[] = 'Votre adresse mail'; }
    	if($validContact==2 && count($champ_obligatoire)>0) {
    		$MsgErrContact 	.= 'Remplissez les champs obligatoires : '.implode(', ',$champ_obligatoire).'<br />';
    	}
    	// -------------
    	// regex e-mail
    	$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i'; 
    	// On v�rifie que le format de l'e-mail est correct
    	if ($mail!='' && $mail!='Votre adresse mail' && !preg_match($regex_mail, $mail)) {
    		$MsgErrContact 	.= 'Adresse mail invalide (doit �tre de la forme : <a href="mailto:xxxx@xx.xx">xxxx@xx.xx</a>)'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	// essai de connexion � la base de donnees
    	if(!mysql_connect('localhost','root','','snia1'){
    		$MsgErrContact 	.= 'Connection � la base de donnees Impossible'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	if ($validContact!=2) {
    		$validContact = 1;
    	}
    	// ----------------------------------------------------
    	// PAS d'ERREUR : TRAITEMENT
    	// ----------------------------------------------------
    	if($validContact == 1) {
     
    		// -------------
    		// 1/ PROTECTION contre injection SQL AVANT insertion en bdd
    		$bd_nom 	= mysql_real_escape_string($nom);
    		$bd_mail 	= mysql_real_escape_string($mail);
    		$bd_objet 	= mysql_real_escape_string($objet);
    		$bd_texte 	= mysql_real_escape_string($texte);
    		$bd_maild 	= mysql_real_escape_string($maild);
    		// -------------
    		// 2/ Enregistrement en base de donn�es
    		mysql_select_db('snia1');
    		$requete = "INSERT INTO formulaire SET nom='$bd_nom',objet='$bd_objet',texte='$bd_texte', mail='$bd_mail',maild='$bd_maild'" ;
    		$resultat = mysql_query($requete);
    		// -------------
    		// 3/ ENVOI d'un email a l'administrateur
    		$message	= date("d/m/Y H:m:s\n")."\n".
    					" Nouveau contact :"."\n";
    					" Nom :".$nom."\n".
    					" Adresse mail :".$mail."\n".
    					" Objet :".$objet."\n".
    					" Texte :".$texte;
    		$entetes	= "From: $mail\nReply-to: $mail\n".
    					"MIME-Version: 1.0\r\n".
    					"Content-type: text/plain; charset=utf-8\r\n"; // (format TEXTE)
    		$sujet		= "Contact site SNIA de la part de ".$nom;
    		$webmaster	= $maild;
    		mail($webmaster,$sujet,$message,$entetes);
    		// -------------
    	} // fin traitement
    } // fin si le formulaire est post�
    ?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>Formulaire contact</title>
    	<style type="text/css">
    	label { float:left; width:150px; text-align:right; margin-right:5px; }
    	</style>
    </head>
    <body>
    <?php // Messages
    if($validContact==1) { // message OK ?>
    	<p>Votre message a bien �t� envoy�</p>
    <?php
    } elseif($validContact==2) { // message ERREUR ?>
    	<p><?php echo $MsgErrContact; ?></p>
    <?php } ?>
     
    <?php // Formulaire
    if($validContact!=1) { ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    	<p>&nbsp;</p>
    	<p>
    	  <label for="nomd">Nom du destinataire</label>
    	  <select name="nomd" id="nomd" accesskey="n" tabindex="1">
    	    <?php
    do {  
    ?>
    	    <option value="<?php echo $row_rsNomd['maild']?>"><?php echo $row_rsNomd['nomd']?></option>
    	    <?php
    } while ($row_rsNomd = mysql_fetch_assoc($rsNomd));
      $rows = mysql_num_rows($rsNomd);
      if($rows > 0) {
          mysql_data_seek($rsNomd, 0);
    	  $row_rsNomd = mysql_fetch_assoc($rsNomd);
      }
    ?>
          </select>
    	</p>
    <p>&nbsp;</p>
    	<p>
    	  <label for="idnom">Nom : </label>
    	  <input id="idnom" name="nom" type="text" size="30" value="<?php echo $nom; ?>" onFocus="if(this.value=='<?php echo $defaut_nom; ?>'){ this.value=''; }" onBlur="if(this.value==''){ this.value='<?php echo $defaut_nom; ?>'; }">
      </p>
    	<p>
      <label for="idmail">Votre adresse mail : </label>
    		<input id="idmail" name="mail" type="text" size="30" value="<?php echo $mail; ?>" onFocus="if(this.value=='<?php echo $defaut_mail; ?>'){ this.value=''; }" onBlur="if(this.value==''){ this.value='<?php echo $defaut_mail; ?>'; }">
    	</p>
    	<p>
    		<label for="idobjet">Objet : </label>
    		<input id="idobjet" name="objet" type="text" size="50" value="<?php echo $objet; ?>" onFocus="if(this.value=='<?php echo $defaut_objet; ?>'){ this.value=''; }" onBlur="if(this.value==''){ this.value='<?php echo $defaut_objet; ?>'; }">
    	</p>
    	<p>
    		<label for="idtexte">Texte : </label>
    		<textarea id="idtexte" name="texte" cols="40" rows="3" onFocus="if(this.value=='<?php echo $defaut_texte; ?>'){ this.value=''; }" onBlur="if(this.value==''){ this.value='<?php echo $defaut_texte; ?>'; }"><?php echo $texte; ?></textarea>
    	</p>
    	<p>
    		<label>&nbsp;</label>
    		<input type="submit" value="Envoyer" name="B1">
    	</p>
    </form>
    <?php } // fin formulaire ?>
     
    </body>
    </html>
    <?php
    mysql_free_result($rsNomd);
    ?>
    Voici le detail de mon fichier cnxsnia1.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    # FileName="Connection_php_mysql.htm"
    # Type="MYSQL"
    # HTTP="true"
    $hostname_cnxsnia1 = "localhost";
    $database_cnxsnia1 = "snia1";
    $username_cnxsnia1 = "root";
    $password_cnxsnia1 = "azer1234";
    $cnxsnia1 = mysql_pconnect($hostname_cnxsnia1, $username_cnxsnia1, $password_cnxsnia1) or trigger_error(mysql_error(),E_USER_ERROR); 
    ?>
    Avez-vous des idées ? des conseils ? SVP Merci

    Raphael

Discussions similaires

  1. [Joomla!] formulaire contact : pas d'envoi
    Par kamilane dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 10/12/2007, 16h52
  2. Mon formulaire contact me parvient vide
    Par mercibien dans le forum Langage
    Réponses: 15
    Dernier message: 13/05/2007, 17h59
  3. [PHP-JS] probleme avec mon formulaire contact
    Par gtraxx dans le forum Langage
    Réponses: 27
    Dernier message: 03/10/2006, 00h41
  4. pb de formulaire contact asp
    Par idea2concept dans le forum ASP
    Réponses: 1
    Dernier message: 22/08/2006, 21h46

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