ChatGPT на что?
Необходимо изменить запрос на добавление данных в базу, чтобы он не вызывал ошибку при дубликате, а вместо этого возвращал информацию о том, что пользователь с таким емейлом уже существует. Для этого можно использовать конструкцию INSERT IGNORE или INSERT ... ON DUPLICATE KEY UPDATE.
Пример с использованием INSERT IGNORE:
if (isset($_POST['email'])) {
$email = $_POST["email"];
$query_result = db::i()->query("INSERT IGNORE INTO s_mailer_list (added, email, cats) VALUES (NOW(), '$email', ',С сайта,')");
if ($query_result) {
// Пользователь успешно добавлен
echo "success";
} else {
// Пользователь с таким емейлом уже существует
echo "duplicate";
}
}
или просто try...catch:
if (isset($_POST['email'])) {
$email = $_POST["email"];
try {
$query_result = db::i()->query("INSERT INTO s_mailer_list (added, email, cats) VALUES (NOW(), '$email', ',С сайта,')");
// The query was successful, so the user is subscribed.
echo "success";
} catch (Exception $e) {
// Check if the exception is related to a duplicate entry for the 'email' column.
if ($e->getCode() === 23000) {
// This code represents a MySQL duplicate key error (Integrity constraint violation).
// Handle the case when the email is already in the database.
echo "duplicate";
} else {
// Handle other exceptions if needed.
echo "error";
}
}
}
Дальше JS сам, думаю, допишешь.