Как можно реализовать систему тегов?

В общем начну пожалуй издалека.
Есть сайт со списками произведений, изначально книги записывались просто в html на странице.
Сейчас идет перенос данных в бд с выводом списка на страницу в виде таблицы.
Сам я на уровне html/css и поверхностно js/php, благодаря гуглу смог реализовать хранение данных + вывод в таблицу.
Собственно вопрос - возможно ли реализовать систему тегов с их выводом в отдельный столб в таблице? Сам я представляю это примерно так: теги хранятся в одной таблице бд, книги в другой + есть таблица где указываются ид книги и ид тегов, но как реализовать подобное я не знаю.
( пример кода вывода данных из дб в таблицу:
<?php 
    // определяем начальные данные
    $db_host = 'localhost';
    $db_name = 'mydatabase';
    $db_username = 'admin';
    $db_password = 'admin09876';
    $db_table_to_show = 'Contacts';

    // соединяемся с сервером базы данных
    $connect_to_db = mysql_connect($db_host, $db_username, $db_password)
		or die("Could not connect: " . mysql_error());

    // подключаемся к базе данных
    mysql_select_db($db_name, $connect_to_db)
		or die("Could not select DB: " . mysql_error());

    // выбираем все значения из таблицы "Contacts"
    $qr_result = mysql_query("select * from " . $db_table_to_show)
		or die(mysql_error());

    // выводим на страницу сайта заголовки HTML-таблицы
    echo '<table border="1">';
	echo '<thead>';
	echo '<tr>';
	echo '<th>Имя</th>';
	echo '<th>Телефон</th>';
	echo '<th>E-Mail</th>';
	echo '</tr>';
	echo '</thead>';
	echo '<tbody>';
	
   // выводим в HTML-таблицу все данные клиентов из таблицы MySQL 
	while($data = mysql_fetch_array($qr_result)){ 
		echo '<tr>';
		echo '<td>' . $data['Name'] . '</td>';
		echo '<td>' . $data['Phone'] . '</td>';
		echo '<td>' . $data['eMail'] . '</td>';
		echo '</tr>';
	}
	
    echo '</tbody>';
	echo '</table>';

    // закрываем соединение с сервером  базы данных
    mysql_close($connect_to_db);
?>
  • Вопрос задан
  • 3902 просмотра
Пригласить эксперта
Ответы на вопрос 2
@allexp
web-developer
Все правильно. Создайте таблицу tag (id, name) и tag_to_book (tag_id, book_id)
Запрос на получение тегов книги будет примерно таким:
SELECT tag.* FROM tag_to_book AS tb
JOIN tag ON tag.id = tb.tag_id
WHERE tb.book_id = $book_id
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Сам я представляю это примерно так: теги хранятся в одной таблице бд, книги в другой + есть таблица где указываются ид книги и ид тегов, но как реализовать подобное я не знаю.
Вы представляете абсолютно правильно. Для старта хватит, дальше в зависимости от задач могут быть разные варианты реализации.

возможно ли реализовать систему тегов с их выводом в отдельный столб в таблице

можно. google "left join", "group by", "group_concat"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы