Облако тегов [php]

Discussion in 'PHP' started by restart05, 25 Feb 2012.

  1. restart05

    restart05 New Member

    Joined:
    20 Feb 2012
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Имеется таблица на 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)
    и т.д

    Заранее спасибо :)
     
  2. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    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);
     
    #2 Chaak, 26 Feb 2012
    Last edited: 26 Feb 2012
  3. restart05

    restart05 New Member

    Joined:
    20 Feb 2012
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Это как я понял для сортировки с 1 строки, а мне нужно со всей таблицы
     
    #3 restart05, 26 Feb 2012
    Last edited: 26 Feb 2012
  4. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Очевидно, что следует исключить
    Code:
     WHERE id=?
    из запроса и убрать
    PHP:
    $Stmt->bindParam('i'$id);
     
  5. restart05

    restart05 New Member

    Joined:
    20 Feb 2012
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    ок спс
     
  6. restart05

    restart05 New Member

    Joined:
    20 Feb 2012
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Данный кусок кода выводит все теги подряд, а мне нужно выводить их следующим образом

    tag3 (2), т.е. 2 раза встречался данный тег в таблице tags_table
    tag6 (2), т.е. 2 раза встречался данный тег в таблице tags_table
    tag9 (1), т.е. 1 раз встречался данный тег в таблице tags_table
     
  7. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Приведи базу данных хотя бы к первой нормальной форме, тогда будет проще манипулировать с количеством определенного элемента и т.д., не считая в выйгрыше производительности и нормальной логической структуре БД.

    А пока:
    PHP:
    count(array_keys($ArrayInput'tag1'));
    выведет количество определенного тага.
     
    #7 Chaak, 4 Mar 2012
    Last edited: 4 Mar 2012
  8. restart05

    restart05 New Member

    Joined:
    20 Feb 2012
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Проблему решил функцией array_count_values().