My script должен найти все связанные записи из текущих категорий сообщений, которые могут быть одной или многих категорий, но я хочу, чтобы script отображал текущую запись как связанную запись. Как я могу это сделать? И где я могу добавить его в свой script?
Вот моя таблица MySQL.
CREATE TABLE categories (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INT UNSIGNED NOT NULL DEFAULT 0,
category VARCHAR(255) NOT NULL,
url VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
INDEX parent (parent_id),
UNIQUE KEY(parent_id, url)
);
CREATE TABLE users_posts (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT UNSIGNED NOT NULL,
title TEXT NOT NULL,
summary TEXT DEFAULT NULL,
post_content LONGTEXT NOT NULL,
PRIMARY KEY (id)
);
Вот мой script простите беспорядок.
$posts_categories = array();
$ac_query = mysqli_query($mysqli, "SELECT category_id
FROM posts_categories
WHERE post_id = '" . $post_id . "'");
if (!$ac_query) {
print mysqli_error($mysqli);
} else {
while($row = mysqli_fetch_array($ac_query)){
$posts_categories[] = $row['category_id'];
}
}
$posts_categories_name = array();
$acn_query = mysqli_query($mysqli, "SELECT category
FROM categories
WHERE id IN(" . implode(',', $posts_categories) . ")");
if (!$acn_query) {
print mysqli_error($mysqli);
} else {
while($row = mysqli_fetch_array($acn_query)){
$posts_categories_name[] = $row['category'];
}
}
$x2 = '';
$c2 = '';
foreach($posts_categories_name as $acn) {
$x2++;
if($x2 == 1){
$c2 .= " users_posts.title LIKE '%$acn%' OR users_posts.summary LIKE '%$acn%' OR users_posts.post_content LIKE '%$acn%'";
} else {
$c2 .= " OR users_posts.title LIKE '%$acn%' OR users_posts.summary LIKE '%$acn%' OR users_posts.post_content LIKE '%$acn%'";
}
}
$rac_query = mysqli_query($mysqli, "SELECT *
FROM users_posts
WHERE $c2
ORDER BY RAND()
LIMIT 5");
if (!$rac_query) {
print mysqli_error($mysqli);
} else {
while($row = mysqli_fetch_array($rac_query)){
echo '<li>' . $purifier->purify(strip_tags($row['title'])) .'</li>';
}
}
Самый простой способ - сохранить текущий идентификатор сообщения в переменной (мы будем называть его $current_post_id), а затем просто:
if (!$rac_query) {
print mysqli_error($mysqli);
} else {
while($row = mysqli_fetch_array($rac_query)){
if($current_post_id == $row['id']){
continue;
}
echo '<li>' . $purifier->purify(strip_tags($row['title'])) .'</li>';
}
}
Это последний бит кода, который вы отправили, BTW. "Продолжить" означает переход к следующему прогону цикла while.
Конечно, вы могли бы также сделать это простым способом и сказать, что если $current_post_id!= $row ['id'], то выделите строку. Он будет делать то же самое.
$current_post_id
единственным результатом в цикле?