У меня есть блог. Каждый раз, когда пользователь комментирует сообщение, у них есть опция «Уведомить меня о новых комментариях по электронной почте». Но у меня есть небольшая проблема с отправкой писем пользователям, которые установили флажок для уведомления.Объединить 2 mysql-запросов в один
Пользователи должны получать уведомление каждый раз, когда сообщение отправлено, и установите флажок «Уведомить меня ...» получить новые комментарии.
insert_comments форма отправки данных в add_comment.php и я поставил код, чтобы отправить по электронной почте в add_comment.php
После комментария запроса MySQL вставки. У меня есть эти два вопроса:
SELECT MAX(id) AS last_id FROM `comments` WHERE post_id = $post_id
SELECT id AS user_who_wants_to_get_notified, email FROM `comments` WHERE notify = 'yes' AND post_id = $post_id
Но я не знаю, как их объединить в один запрос.
add_comment.php выглядит следующим образом:
<?php
include_once "blog_functions/config.php";
include_once "blog_functions/func/blog.php";
$name = $_POST['name'];
$comment = $_POST['comment'];
$email = $_POST['email'];
$post_id = $_POST['post_id'];
if(isset($_POST['notify_me'])){
$notify_me = $_POST['notify_me'];
} else {
$notify_me = "No";
}
$time = time();
$actual_time = date('d-m-Y H:i:s', $time);
if(!empty($name && $comment && $post_id)){
if(isset($_POST['email']) && filter_var($email, FILTER_VALIDATE_EMAIL)){
mysql_query("INSERT INTO comments(post_id, name, email, comment, notify, date) VALUES('$post_id', '$name', '$email', '$comment', '$notify_me', '$actual_time')");
$query = mysql_query("(SELECT MAX(id) AS last_id FROM `comments` WHERE post_id = $post_id) UNION (SELECT id AS user_who_wants_to_get_notified, email FROM `comments` WHERE notify = 'yes' AND post_id = $post_id)");
$row = mysql_fetch_assoc($query);
if(row['last_id'] > row['user_who_wants_to_get_notified']){
mail($row['email'], "New comments on a post you have commented", "There has recently been commented on a post which you want to receive notifications on. \n\n The News Blog", "From: [email protected]");
}
header('location: blog.php?id=' . $post_id);
} else {
echo "There was a problem sending the email, please try again later";
}
} else {
header('location: blog.php');
}
У меня есть эти 3 таблицы в моей базе данных:
категории: идентификатор, имя, дата
сообщений: И.Д., cat_id , title, contents, image, date_posted
комментарии: id, post_id, name, email, commen t, notify, date
mysqli поддерживает несколько запросов http://php.net/manual/en/mysqli.multi-query.php –
несколько вещей. 1) комментарии, вероятно, не должны содержать в себе электронную почту (она должна поступать из таблицы пользователей в соединении. 2) max() может быть невелик. некоторый тип таблицы регистрации или еще много чего. поэтому в случае, если там есть 3 или 4, которые нуждаются в обработке, вы не пропускаете их и не уходите после max() – Drew
. Как связаны два запроса? Он не смотрит, что вы используете результат одного в другой. –