@aidosgd2

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

Как работает сама форма обратной связи сейчас, она сохраняет информацию в бд mysql, и отправляет письмо клиенту что он успешно отправил запрос.

Что мне нужно получить от новой формы, это возможность вводить промо код для скидки.

1. Один промо код.
2. Ограниченное кол-во ее использования.
3. Другое письмо для человека который ввел промо код.

Подскажите кто чем может )
  • Вопрос задан
  • 4431 просмотр
Пригласить эксперта
Ответы на вопрос 2
Straven
@Straven
Я бы реализовывал это так.
В таблице промокодов хранятся:
- тип промокода;
- его хэш;
- кол-во использований;
- флаг доступности;

1. Пользователь вводит полученный промокод.
2. Проходит проверка заполненности поля промокод.
3. Если не заполнено, то отрабатывает уже существующее решение, если нет плывем дальше.
4. Этот промокод сравнивается с хэшем, при совпадении смотрим на флаг доступности, и если доступен получаем данные этого промокода.
5. Из полученных данных из формы и базы формируем мэйл для пользователя и отсылаем мэйл в котором пишем что он получил используя свой промокод в дополнение к тому что и так отсылается.
6. Проводим модификацию поля кол-во использований (либо +1 либо -1, если храним в поле максимальное кол-во использований).
7. Когда кол-во использований достигает опр. значения меняем флаг доступности промокода.

Я бы ставил максимальное кол-во использований и уменьшал. Тогда будет ненужен флаг. Просто проверять на совпадение с хэшем и чтобы кол-во использований было >0.
Как-то так.
Ответ написан
@aidosgd2 Автор вопроса
Друг спасибо что уделил внимания написал алгоритм, теперь осталось написать сам код поможешь хоть советами и т.д ? исходник формы скину ниже

Я тут мега новичок

create table test_table(
id int(11) not null auto_increment,
name varchar(255) not null,
email varchar(255) not null,
phone varchar(255) not null,
data date not null,
primary key (id)
);

<form action="save_form.php" method="post" name="test_form">
<table border="1" cellpadding="0" cellspacing="0">
 <tr>
  <td colspan="2" align="center"><strong>Отправка запроса</strong></td>
 </tr>
 <tr>
  <td width="150">Имя :</td>
  <td><input type="text" name="test_name" maxlength="30" /></td>
 </tr>
 <tr>
  <td width="150">E-Mail :</td>
  <td><input type="text" name="test_mail" maxlength="30" /></td>
 </tr>
 <tr>
  <td width="150">Телефон :</td>
  <td><input type="text" name="test_phone" maxlength="30" /></td>
 </tr>
 <tr>
  <td colspan="2" align="center">
   <input type="submit" class="buttons" value="Отправить запрос" />
   <input type="reset" class="buttons" value="Очистить" />
  </td>
 </tr>
</table>
</form>


<?
 
/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "test_base"; // название базы данных
 
/* Таблица MySQL, в которой будут храниться данные */
$table = "test_table";
 
/* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
 
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());
 
/* Определяем текущую дату */
$cdate = date("Y-m-d");
 
/* Составляем запрос для вставки информации в таблицу
name...date - название конкретных полей в базе;
в $_POST["test_name"]... - в этих переменных содержатся данные, полученные из формы */
$query = "INSERT INTO $table SET name='".$_POST['test_name']."', email='".$_POST["test_mail"]."',
phone='".$_POST["test_phone"]."', data='$cdate'";
 
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die(mysql_error());
 
/* Закрываем соединение */
mysql_close();
 
 
?>
<?php
if (isset($_POST['test_name'])) {$name = $_POST['test_name'];}
if (isset($_POST['test_mail'])) {$email = $_POST['test_mail'];}
if (isset($_POST['test_phone'])) {$phone = $_POST['test_phone'];}

$to = "$email"; /*Укажите ваш адрес электоронной почты*/
$headers = "Content-type: text/plain; charset = windows-1251";
$subject = "Запрос";
$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nТелефон: $phone";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo "<b>Спасибо за отправку вашего сообщения!<p>";
echo "<a href=index.html>Нажмите,</a> чтобы вернуться на главную страницу";
}
else 
{
echo "<p><b>Ошибка. Сообщение не отправлено!";
}
?>
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы