Weltmeister
@Weltmeister

Как присвоить уникальный порядковый номер заказу, отправляемому через обычную форму?

Здравствуйте. На лендинге установлена простая форма заказа (обычная почтовая форма с PHP-обработчиком). Хотелось бы, чтобы в письме с содержанием заказа ему же присваивался и свой порядковый номер. Предполагаю, с сохранением номеров успешно отправленных заказов в файл или БД. Как это можно реализовать?
Желательно с конкретным примером. Почтовый обработчик прилагаю.

if (!empty($_POST['name']) AND !empty($_POST['phone'])) 
{
    $headers = 'From: otpravitel@site.ru
' .
                'Reply-To: mail@site.ru@site.ru
' .
                'X-Mailer: PHP/' . phpversion();
         
    $theme = "Заказ по акции";             
             
    $letter = "Заявка на акционное предложение:";
    $letter .="
";
    $letter .="Имя: ".$_POST['name'];
    $letter .="
Телефон: ".$_POST['phone'];
    $letter .="
Цена: ".$_POST['price'];
    $letter .="
Покупка: ".$_POST['model'];    
    $letter .="
Цвет: ".$_POST['color'];

    
    if (mail("poluchatel@site.ru", $theme, $letter, $headers)){
      header("Location: /succes.html");
    } else {
      header("Location: /");
    }  
              
} else {
  header("Location: /");
}
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
ischerbin
@ischerbin
*nix админ увлекающийся программированием
Как вариант сохранять заявку в БД и только после этого отправлять письмо. После сохранения в mysql например можно посмотреть автоматически сгенерированный БД ID записи и его использовать при отправке письма. Функция mysqli_insert_id
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
be_a_dancer
@be_a_dancer
Middle Backend/Fullstack Developer
Возникает вопрос, а зачем его присваивать, если у тебя в 99% случаев есть поле ID с auto-increment? Просто отдавай этот айдишник.
Теперь понятнее.
В базе:
order_table

id>int, autoincrement
user_name>varchar
phone>varchar
price>float
model_id>int, index (foreign key)

Логика скрипта (писать не буду, мне лениво):
Получаешь заказ на сервер, проверяешь все переменные, наличие. Сохраняешь в базу данных (советую сохранять с использованием PDO), затем получаешь ID последней записи и используешь его в качестве уникального идентификатора заказа. Формируешь и отправляешь письмо. Все.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы