За последние 24 часа нас посетили 21656 программистов и 1060 роботов. Сейчас ищут 723 программиста ...

Как правильно добавить переменную ID в письмо отправляемое функцией mail

Тема в разделе "PHP Free-Lance", создана пользователем TRVR PHLPS, 14 май 2017.

Метки:
  1. TRVR PHLPS

    TRVR PHLPS Новичок

    С нами с:
    8 май 2017
    Сообщения:
    8
    Симпатии:
    0
    Доброго времени суток
    Имею код
    Код (Text):
    1. <!doctype html>
    2. <html lang="ru">
    3. <body>
    4. <html>
    5. <head>
    6. </head>
    7. <body>
    8.     <form method="POST" action="">
    9.         <input name="LastName" type="text" placeholder="Фамилия"/>
    10.         <input name="FirstName" type="text" placeholder="Имя"/>
    11.         <input name="Phone" type="text" placeholder="Телефон"/>
    12.         <input name="Email" type="text" placeholder="Емейл"/>
    13.         <input type="submit" value="Отправить"/>
    14.     </form>
    15. </body>
    16. </html>
    17.  
    18. <?php
    19.  
    20.  
    21. $servername = "XXX";
    22. $username = "XXX";
    23. $password = "XXX";
    24. $dbname = "XXX";
    25. $db_table = "Persons";
    26. // Create connection
    27. $conn = new mysqli($servername, $username, $password, $dbname);
    28. // Check connection
    29. $lname = $_POST['LastName'];
    30. $fname = $_POST['FirstName'];
    31. $yphone = $_POST['Phone'];
    32. $ymail = $_POST['mail'];
    33.  
    34.  
    35.    
    36.  
    37.  
    38.  
    39. if (isset($_POST['LastName']) && isset($_POST['FirstName'])){
    40.     // Переменные с формы
    41.     $id = ['mysql_insert_id ()'];
    42.     $lname = $_POST['LastName'];
    43.     $fname = $_POST['FirstName'];
    44.     $yphone = $_POST['Phone'];
    45.     $ymail = $_POST['Email'];
    46.     // Параметры для подключения
    47.     $db_host = "XXX";
    48.     $db_user = "XXX"; // Логин БД
    49.     $db_password = "XXX"; // Пароль БД
    50.     $db_table = "XXX"; // Имя Таблицы БД
    51.    
    52.     // Подключение к базе данных
    53.     $db = mysql_connect($db_host,$db_user,$db_password) OR DIE("Не могу создать соединение ");
    54.    
    55.     // Выборка базы
    56.     mysql_select_db("blueskya_zhiguli",$db);
    57.    
    58.     // Установка кодировки соединения
    59.     mysql_query("SET NAMES 'utf8'",$db);
    60.    
    61.     $result = mysql_query ("INSERT INTO ".$db_table." (LastName,FirstName,Phone,Email) VALUES ('$lname','$fname','$yphone','$ymail')");
    62.    
    63.  
    64.     if ($result = 'true'){
    65.    printf("Спасибо за участие, Ваш призовой ID %d\n", mysql_insert_id());
    66.  
    67. ;
    68.     }else{
    69.         echo "Информация не занесена в базу данных";
    70.     }
    71. }
    72.  
    73. ;
    74. mail("$ymail", "My Subject", "Спасибо за участие, Ваш призовой номер $lastid");
    75. ?>
    76.  
    77.  
    78. </html>
    Как правильно написать переменную $lastid, что бы в тексте письма отправляемого функцией mail выводило id записи
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    А зачем вызов функции брать в апострофы? И ты уж реши, каким расширением пользоваться, а то у тебя и mysqli, и mysql (которое устарело, вообще-то, лет 5 как)
     
  3. TRVR PHLPS

    TRVR PHLPS Новичок

    С нами с:
    8 май 2017
    Сообщения:
    8
    Симпатии:
    0
    Вы поймите я конкретно в коде ну совсем совсем пока блин рагопил, у меня задача какая - сделать то что необходимо, я вот этот файл натаскал из интернета из разных заготовок у людей и он работает я сам прекрасно понимаю что там есть ошибки и их очень много, это вопрос времени когда я научусь писать без ошибок, сейчас задача сделать так чтобы юзер забивал в поле email и чтобы на этот e-mail сразу же отправлялся ID записи этой формы, который вводятся в базу данных. Если вы мне можете по этому поводу помочь Я буду премного благодарен если вы можете понятным языком Объяснить и сделать замечание по поводу того как правильно исправить на примере показать ошибки которые допущены я тоже буду благодарен
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Ясно. @Fell-x27, тему надо в "Сделайте за меня"
     
  5. TRVR PHLPS

    TRVR PHLPS Новичок

    С нами с:
    8 май 2017
    Сообщения:
    8
    Симпатии:
    0
    Ну не совсем, я готов минимально отблагодарить - долларов 10-15$.
    И я же не прошу с нуля нафигачить, я один вопрос задаю - как прописывается переменная последнего id.
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Тогда перенесу во фриланс, раз оплата предполагается.
     
  7. varz62

    varz62 Активный пользователь

    С нами с:
    31 авг 2014
    Сообщения:
    20
    Симпатии:
    2
    PHP:
    1. <!doctype html>
    2. <html lang="ru">
    3. <body>
    4. <html>
    5. <head>
    6. </head>
    7. <body>
    8.     <form method="POST" action="">
    9.         <input name="LastName" type="text" placeholder="Фамилия"/>
    10.         <input name="FirstName" type="text" placeholder="Имя"/>
    11.         <input name="Phone" type="text" placeholder="Телефон"/>
    12.         <input name="Email" type="text" placeholder="Емейл"/>
    13.         <input type="submit" value="Отправить"/>
    14.     </form>
    15. </body>
    16. </html>
    17. <?php
    18. $servername = "XXX";
    19. $username = "XXX";
    20. $password = "XXX";
    21. $dbname = "XXX";
    22. $db_table = "Persons";
    23. // Create connection
    24. $conn = new mysqli($servername, $username, $password, $dbname);
    25. // Check connection
    26. $lname = $_POST['LastName'];
    27. $fname = $_POST['FirstName'];
    28. $yphone = $_POST['Phone'];
    29. $ymail = $_POST['mail'];
    30.  
    31. if (isset($_POST['LastName']) && isset($_POST['FirstName'])){
    32.     // Переменные с формы
    33.     $id = ['mysql_insert_id ()'];
    34.     $lname = $_POST['LastName'];
    35.     $fname = $_POST['FirstName'];
    36.     $yphone = $_POST['Phone'];
    37.     $ymail = $_POST['Email'];
    38.     // Параметры для подключения
    39.     $db_host = "XXX";
    40.     $db_user = "XXX"; // Логин БД
    41.     $db_password = "XXX"; // Пароль БД
    42.     $db_table = "XXX"; // Имя Таблицы БД
    43.  
    44.     // Подключение к базе данных
    45.     $db = mysql_connect($db_host,$db_user,$db_password) OR DIE("Не могу создать соединение ");
    46.  
    47.     // Выборка базы
    48.     mysql_select_db("blueskya_zhiguli",$db);
    49.  
    50.     // Установка кодировки соединения
    51.     mysql_query("SET NAMES 'utf8'",$db);
    52.  
    53.     $result = mysql_query ("INSERT INTO ".$db_table." (LastName,FirstName,Phone,Email) VALUES ('$lname','$fname','$yphone','$ymail')");
    54.  
    55.     if ($result = 'true'){
    56.         $lastid = mysql_insert_id();
    57.    printf("Спасибо за участие, Ваш призовой ID %d\n", $lastid);
    58.  
    59.  
    60.     }else{
    61.         echo "Информация не занесена в базу данных";
    62.     }
    63. }
    64.  
    65. mail("$ymail", "My Subject", "Спасибо за участие, Ваш призовой номер $lastid");
    66. ?>
    67. </html>
    как то так если не править ошибки и прочее
    если интересует как надо более правильно
    скайп anatolva

    письмо по идее надо отправлять только при удачной записи ну и т.д.
     
    TRVR PHLPS нравится это.
  8. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    А как же очевидные ошибки?))
    --- Добавлено ---
    Вообще, мне интересно стало, и решил запилить ему этот код.
    Всезнающий класс
    PHP:
    1. <?php
    2.  
    3. /*
    4. * To change this license header, choose License Headers in Project Properties.
    5. * To change this template file, choose Tools | Templates
    6. * and open the template in the editor.
    7. */
    8.  
    9. class MailForm {
    10.  
    11.     private $firstName;
    12.     private $lastName;
    13.     private $phone;
    14.     private $email;
    15.     //
    16.     private $tableName = 'test';
    17.     private $errors = array();
    18.  
    19.     function __construct() {
    20.         $this->setFirstName();
    21.         $this->setLastName();
    22.         $this->setPhone();
    23.         $this->setEmail();
    24.     }
    25.  
    26.     function setFirstName() {
    27.         $first_name = filter_input(INPUT_POST, 'first_name', FILTER_SANITIZE_STRING);
    28.         if (!empty($first_name)) {
    29.             $this->firstName = $first_name;
    30.         } else {
    31.             $this->errors[] = "Имя обязательное поле";
    32.         }
    33.     }
    34.  
    35.     function setLastName() {
    36.         $last_name = filter_input(INPUT_POST, 'last_name', FILTER_SANITIZE_STRING);
    37.         if (!empty($last_name)) {
    38.             $this->lastName = $last_name;
    39.         } else {
    40.             $this->errors[] = "Фамилия обязательное поле обязательное поле";
    41.         }
    42.     }
    43.  
    44.     function setPhone() {
    45.         $phone = filter_input(INPUT_POST, 'phone', FILTER_SANITIZE_NUMBER_INT);
    46.         if (!empty($phone)) {
    47.             $this->phone = $phone;
    48.         } else {
    49.             $this->errors[] = "Телефон обязательно надо указывать";
    50.         }
    51.     }
    52.  
    53.     function setEmail() {
    54.         $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
    55.         if (!empty($email)) {
    56.             $this->email = $email;
    57.         } else {
    58.             $this->errors[] = "Укажите вашу электронную почту";
    59.         }
    60.     }
    61.  
    62.     /**
    63.      * Если валидация успешна, возвращается true иначе массив с ошибками
    64.      *
    65.      * @return boolean|array
    66.      */
    67.     function validate() {
    68.  
    69.         if (empty($this->errors)) {
    70.  
    71.             return TRUE;
    72.         }
    73.         return $this->errors;
    74.     }
    75.  
    76.     function sendMail($message = '') {
    77.         try {
    78.             $pdo = new pdo(DSN, DBUSER, DBPASS, array(
    79.                 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    80.             ));
    81.         } catch (PDOException $pe) {
    82.             echo $pe->getMessage();
    83.         }
    84.      
    85.         $query = "
    86.                    INSERT
    87.                    INTO
    88.                      `$this->tableName`(
    89.                        `first_name`,
    90.                        `last_name`,
    91.                        `phone`,
    92.                        `email`
    93.                      )
    94.                    VALUES(
    95.                      :first_name,
    96.                      :last_name,
    97.                      :phone,
    98.                      :email
    99.                    )";
    100.         //echo $query;
    101.         $stmt = $pdo->prepare($query);
    102.         $stmt->bindParam(':first_name', $this->firstName);
    103.         $stmt->bindParam(':last_name', $this->lastName);
    104.         $stmt->bindParam(':phone', $this->phone);
    105.         $stmt->bindParam(':email', $this->email);
    106.  
    107.         $result = $stmt->execute();
    108.         if ($result === TRUE) {
    109.             printf($message, $pdo->lastInsertId());
    110.             mail($this->email, "My Subject", $message . $pdo->lastInsertId());
    111.         } else {
    112.             echo "Информация не занесена в базу данных";
    113.         }
    114.     }
    115.  
    116. }
    сама форма
    HTML:
    1. <?php
    2. include 'handler.php';
    3. ?>
    4. <!DOCTYPE html>
    5. <html lang="ru">
    6. </head>
    7.     <form method="POST" action="">
    8.         <input name="last_name" type="text" placeholder="Фамилия">
    9.         <input name="first_name" type="text" placeholder="Имя">
    10.         <input name="phone" type="text" placeholder="Телефон">
    11.         <input name="email" type="text" placeholder="Емейл">
    12.         <input type="submit" name="htmlform" value="Отправить">
    13.     </form>
    14. </body>
    15. </html>
    конфиг
    PHP:
    1. <?php
    2.  
    3. /*
    4. * To change this license header, choose License Headers in Project Properties.
    5. * To change this template file, choose Tools | Templates
    6. * and open the template in the editor.
    7. */
    8. define('DBHOST', 'localhost');
    9. define('DBUSER', 'root');
    10. define('DBPASS', '');
    11. define('DBNAME', 'xmld');
    12. define('DSN', 'mysql:dbname=xmld;host=127.0.0.1;charset=utf8');
    как использовать
    PHP:
    1. <?php
    2.  
    3. /*
    4. * To change this license header, choose License Headers in Project Properties.
    5. * To change this template file, choose Tools | Templates
    6. * and open the template in the editor.
    7. */
    8. include 'config.php';
    9. include __DIR__ . '/classes/MailForm.php';
    10. $form = new MailForm();
    11. $validate = $form->validate();
    12. if ($validate === TRUE) {
    13.     $form->sendMail("Спасибо за участие, Ваш призовой ID %d\n");
    14.     exit();
    15. } else {
    16.     var_dump($validate);
    17. }
    файловая структура
    upload_2017-5-14_18-26-20.png
     
  9. TRVR PHLPS

    TRVR PHLPS Новичок

    С нами с:
    8 май 2017
    Сообщения:
    8
    Симпатии:
    0
    Гайз, вы красавцы - спасибо огромное, я короче сегодня помучаюсь, всё это дело впилю и как догребу до терминала Скину Вам мою скромную благодарность!