Несколько меток или тегов в переполнении стека

В настоящее время я создаю блог на PHP, и в настоящее время блог может принимать только один ярлык или тег на сообщение.

Пожалуйста, дайте мне представление о том, как создать или добавить несколько ярлыков или тегов для каждого сообщения в PHP. Я хочу, чтобы в сообщении было несколько ярлыков или тегов.

Спасибо

-1

Решение

Тип базы данных, которую вы используете, очень важен. Это было бы намного проще сделать, например, на MongoDB, но ради кросс-совместимости, вот простой и простой способ сделать это.

Опция 1:
Вот быстрый взлом, который все понизят, но я в порядке.

<?php
$tags = "tag1,tag2,tag3";

$exploded_tags = explode(",", $tags);

foreach( $exploded_tags as $elem ) {
echo $elem;
}

Сохраняйте их как разделенные запятыми теги, и когда вы запрашиваете теги в своей базе данных, анализируйте их.

Вариант 2:

Ваш «пост в блоге» должен быть как-то идентифицирован в базе данных, скажем, под названием «my-blog-post». Таким образом, у вас будет одна таблица с именем blog_posts, а другая — с тегами. В «тегах» у вас будет столбец с именем «post_title». Допустим, вы передаете заголовок поста в своем URL, вы можете использовать get, чтобы получить этот заголовок:

<?php
$post_title = $_GET['post']; // my-blog-post
$post_tags = array("tag1","tag2","tag3");

function insert_tags($title, $tags) {
$query = $database->prepare("INSERT INTO `tags` (`post_title`, `tags`) VALUES(?,?)" ); // this Query inserts the post title for each tag to identify

$query->bindValue(1, $title); // injects the title to the column post_title
$query->bindValue(2,  $tags); // injects the tag to the column tags

try {
$query->execute(); // executes the above query
} catch (PDOException $e) {
echo $e->getMessage();
}

return 0; // please don't do parenthesis
}

foreach( $post_tags as $elems ) {
// since the tags are in an array, we need to loop through them
insert_tags($post_title, $elems);
// this function will now insert each individual tag with the title "my-blog-post"}

В коде есть PDO, поэтому, если вы не используете PDO, его все равно можно адаптировать к mysqli или чему-то еще. Теперь, когда вы ввели в свои теги, вы можете вспомнить это примерно так:

<?php
function find_tags($post_title) {
$query = $database->prepare("SELECT * FROM `tags` WHERE `post_title` = ?' ");

$query->bindValue(1, $post_title);

$query->execute(); // getting rid of exceptions for ease. This will execute the query

return $query->fetchAll(); // Because we are fetching 2 if not more rows, we need to tell PDO to fetch everything it found and return it to the function that called it

}

$tags = find_tags($_GET['post_title']); //my-post-title

foreach( $tags as $elems ) {
echo $elems;
}

Это, по большей части, должно работать. Foreach может быть немного излишним, но это общая идея. Дайте мне знать, если вам нужно объяснение

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]