В настоящее время я создаю блог на PHP, и в настоящее время блог может принимать только один ярлык или тег на сообщение.
Пожалуйста, дайте мне представление о том, как создать или добавить несколько ярлыков или тегов для каждого сообщения в PHP. Я хочу, чтобы в сообщении было несколько ярлыков или тегов.
Спасибо
Тип базы данных, которую вы используете, очень важен. Это было бы намного проще сделать, например, на 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 может быть немного излишним, но это общая идея. Дайте мне знать, если вам нужно объяснение
Других решений пока нет …