Mon script est supposé trouver tous les articles liés aux catégories actuelles de messages qui peuvent être une ou plusieurs catégories, mais je veux empêcher le script d'afficher le post actuel comme un article connexe. Comment puis-je faire ceci? Et où puis-je l'ajouter à mon script?Problème d'affichage de PHP et MySQL
Voici ma table 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)
);
Voici mon script pardonner le désordre.
$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>';
}
}
Existe-t-il un moyen de vérifier si le $ $ current_post_id était le seul résultat de la boucle? – slick
Un moyen simple serait de définir une variable juste après la sortie de la balise li. Une fois la boucle terminée, vous pouvez vérifier si cette variable est définie. Si ce n'est pas le cas, vous savez qu'il n'y a pas eu d'autres résultats. –