Имеется таблица на MySqli. В ней имеется столбец tags, в который записывабтся теги через запятяю Пример: #id# #tags# 100 | tag0,tag1,tag2,tag3 101 | tag3,tag4,tag5,tag6 102 | tag6,tag7,tag8,tag9 и т.д Как средствами php можно вывести эти теги в порядке убывания ? Пример: tag3 (2) tag6 (2) tag9 (1) и т.д Заранее спасибо
PHP: <?php $id = 101; $Result = ''; $ResultStr = ''; $Sql = new mysqli($Host, $User, $Password, $Db); $Stmt = $Sql->prepare("SELECT tags FROM tags_table WHERE id=?"); $Stmt->bindParam('i', $id); $Stmt->execute(); $Stmt->bind_result($Result); while($Stmt->fetch()) $ResultStr .= $Result.','; $Stmt->close(); $Sql->close(); $TagsArr = explode(',', $ResultStr); asort($TagsArr); print_r($TagsArr);
Очевидно, что следует исключить Code: WHERE id=? из запроса и убрать PHP: $Stmt->bindParam('i', $id);
Данный кусок кода выводит все теги подряд, а мне нужно выводить их следующим образом tag3 (2), т.е. 2 раза встречался данный тег в таблице tags_table tag6 (2), т.е. 2 раза встречался данный тег в таблице tags_table tag9 (1), т.е. 1 раз встречался данный тег в таблице tags_table
Приведи базу данных хотя бы к первой нормальной форме, тогда будет проще манипулировать с количеством определенного элемента и т.д., не считая в выйгрыше производительности и нормальной логической структуре БД. А пока: PHP: count(array_keys($ArrayInput, 'tag1')); выведет количество определенного тага.