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 :

[SQL] Envoi d'un formulaire/mail après traitement avec sql


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Points : 10
    Points
    10
    Par défaut [SQL] Envoi d'un formulaire/mail après traitement avec sql
    Bonjour à tous,

    J'ai pratiquement terminé un site.
    Dans celui-ci je désire ajouter un formulaire qui me permettrait de traiter mes données avec une base en sql et parallèlement de les recevoir dans ma boite mail.
    Toute la partie sql est écrite et fonctionne correctement.
    C'est la fonction "mail" qui me pose problème :
    - je ne sais pas où l'insérer dans ma page de traitement.
    - je ne sais pas non plus exactement comment l'écrire, en fonction de mes variables.
    Mon niveau en php me permet de bidouiller un petit peu, mais là ça devient trop compliqué pour moi. Je complique mon code, et rien ne fonctionne.
    Je pense y avoir passé trop de temps et ne plus voir même les choses les plus évidentes.
    Voici le code de ma page de traitement, sans la partie "mail". L'un d'entre vous saurez me dire où je dois l'insérer et m'orienter dans sa rédaction, svp?
    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
     
     
    <?php
      /* tableau de légende des champs */
      $labels = array ( "prenom" => "Prénom: ",
      		"nom" => "Nom: ",
                             "mail" => "Mail: ",
                             "secteur" => "Secteur d'activité: ",
    		"ville" => "Ville: ",
    		"renseignements" => "Renseignements: ");
     
    /* regarde les champs reçus */
      foreach($_POST as $field => $value)
      {
        /* Charche les champs vides */
        if( $value == "" )
        {
          $blank_array[] = $field;
        }
    	/* Teste le format des champs */
        elseif( ereg("(nom)",$field) )  
        {
          if(!ereg("^[A-Za-z' -]{1,50}$",$value) )
          {
              $bad_format[] = $field;
          }
        }
        elseif($field == "mail")
        {
          if(!ereg("^.+@.+\.fr$",$value) )
          {
              $bad_format[] = $field;
          }
        }
      } // Fin de foreach sur $_POST
      /* Si problème, afficher un message et revenir au formulaire */
      if(@sizeof($blank_array) > 0 or @sizeof($bad_format) > 0)
      {
        if(@sizeof($blank_array) > 0)
        {
            /* Information manquante */
            echo "<b>Un champ au moins est vide. Vous devez le remplir :</b><br>";
            /* Liste des données manquantes*/
            foreach($blank_array as $value)
            {
               echo "&nbsp;&nbsp;&nbsp;{$labels[$value]}<br>";
            }
        }
        if(@sizeof($bad_format) > 0)
        {
            /* Informations incorrectes */
            echo "<b>Un champ au moins contient une information incorrecte. Veuillez la corrigez:</b><br>";
            /* Liste des champs incorrects */
            foreach($bad_format as $value)
            {
               echo "&nbsp;&nbsp;&nbsp;{$labels[$value]}<br>";
            }
        }
        /* réaffichage du formulaire */
        echo "<p><hr />";
        echo "<h3>Remplissez le formulaire de demande de renseignement</h3>";
        echo "<form action='traitement.php' method='POST'>
              <table>";
        foreach($labels as $field => $label)
        {
          $good_data[$field]=strip_tags(trim($_POST[$field]));
          echo "<tr>
                 <td style='text-align: right; font-weight: bold'>
    	  	        $label</td>
                 <td><input type='text' name='$field' size='65'
                     maxlength='65' value='$good_data[$field]'></td>
                </tr>";
        }
        echo "<tr>
               <td colspan='2' style='text-align: center'>
                  <input type='submit' value='Envoyer le formulaire'>";
        echo "</td></tr></table>
              </form>";
        exit();
      }
      else   //Si les données sont OK. Envoyer le formulaire et se connecter à la base
      {
        $user="user";
        $host="localhost";
        $password="password";
        $database="nom_base";
        $cxn = mysqli_connect($host,$user,$password,$database)
               or die ("connexion au serveur impossible");
    	//Vérifier le format du champ "mail"
        $fields_all = array_keys($labels);
        foreach($fields_all as $field)
        {
          $good_data[$field] = strip_tags(trim($_POST[$field]));
        }
    	//Inserer les données du formulaire dans la table "entreprise"	   
        $query = "INSERT INTO entreprise (prenom,nom,mail,secteur,ville,renseignements) 
                  VALUES ('$good_data[prenom]','$good_data[nom]','$good_data[mail]','$good_data[secteur]','$good_data[ville]','$good_data[renseignements]')";
        //message d'erreur, si l'envoi du formulaire se passe mal
    	$result = mysqli_query($cxn,$query)
                  or die ("L'envoi du formulaire a échoué");
     
    	//Message si l'envoi du formulaire se passe bien		  
        echo "<h4>Votre demande a bien été envoyé. Nous vous remercions.</h4>";
      }
    ?>
    </body></html>
    Merci d'avance

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Il te suffirait de balancer ta fonction mail ici :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        //message d'erreur, si l'envoi du formulaire se passe mal
    	$result = mysqli_query($cxn,$query)
                  or die ("L'envoi du formulaire a échoué");
     
    Place ici ta fonction mail....
     
    	//Message si l'envoi du formulaire se passe bien		  
        echo "<h4>Votre demande a bien été envoyé. Nous vous remercions.</h4>";
      }
    et si tu ne sais pas faire par ici
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Super ,

    Bon je reçois le mail dans ma boite.
    Il me reste à bricoler un poil la fonction, car pour le moment elle fait des trucs pas vraiment dans le manuel, mais l'essentiel y est.
    C'est mieux que tous ce que j'avais réussi à faire jusqu'a présent.

    merci encore
    Et le bonjour d'une Niçoise à un Niçois...

  4. #4
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Il y a beaucoup plus simple que cette usine à gaz :
    http://phpmailer.sourceforge.net

    Permet de tout faire...
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Bon c'est la fète, mon usine à gaz fonctionne.
    J'incrèmente la base et un mail est envoyé dans la boite de mon choix.
    Il me reste juste une petite demande en ce qui concerne la mise en forme du mail.
    Comment je fais pour insérer un saut de ligne aprés chaque variable, stp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $message = "$prenom,$nom,$secteur,$ville,$renseignements";
    J'ai regardé le lien, c'est bien, mais je m'y mettrais plus tard car je dois mettre le site en ligne ce soir.
    je vais donc me contenter d'une solution imparfaite mais qui fonctionne. Plus tard je ferais des modifs.

    Merci

  6. #6
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Alors il faut mettre des \n :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $message = $prenom."\n".$nom."\n".$secteur."\n".$ville."\n".$renseignements;
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Super,

    C'est beau, et ça fonctionne...

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi automatique d'un mail après chaque modification du classeur
    Par Thebast69 dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 10/05/2022, 18h43
  2. Formulaire accordeon et traitement avec POST
    Par kate59 dans le forum jQuery
    Réponses: 0
    Dernier message: 17/08/2012, 13h09
  3. Réponses: 4
    Dernier message: 30/05/2012, 10h01
  4. [SQL] Tableau moitié numéroté moitié associatif après un requête SQL
    Par sayerh dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/03/2008, 19h46
  5. [SQL] Positionnement dans une liste déroulante aprés une requête SQL
    Par bastienh dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/01/2008, 11h56

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