Як вивести імена з бази MySQL
Як вивести з бази у колонці xfields тільки слово після label не у всіх осередках вони є.
Повинно вийде приблизно так:
Vision – 50 треків
Spinnin - 35 треків
Sony - 20 треків
Робимо по порядку, цей код виводить усі поля xfields
і т.д. Як вивести з цього рядка лише слово Vision? І Підрахувати у скількох осередках воно є?
Зробив, щоб виводилися тільки ці слова, які після label . Потрібно тепер щоб слова, що повторюються, підраховувалися, і не виводилася порожнеча, якщо немає в комірці слова label .
У вас на корені не правильний підхід до вирішення звичайних завдань. Ось один із варіантів розв'язання задачі:
Вам потрібно реалізувати зв'язок між таблицями. У таблиці, колонки xfields не повинні бути в принципі. Замість цієї колонки потрібно завести окрему таблицю в базі даних xfields .
Ви не привели назву поточної вашої таблиці, тому дамо їй назву popka Структура таблиці xfields буде приблизно така: id - айдішник xfield - ваш кейворд
Таким чином, для того щоб отримати кількість "xfield'ів" наприклад для елемента popka з id 123 достатньо виконати наступний запит
для того щоб підрахувати згруповану кількість "хфілдів" для "попки" 123 запит не мудрий:
Та й природно, при створенні нового xfield'а потрібно вказувати господаря, якому цей xfield належить.
Ну ось ви перебираєте результати свого запиту за рядками while ($row = $db->get_row($sql)) < >. Ось і все. Перед цим циклом заводьте лічильник або масив. Кожне одержуване в циклі значення ріжете по дільнику функцією explode (delimiter, string) . В результаті отримуєте масиввсіх значень у вашому рядку. Ну а далі вже робите з цим масивом що завгодно, Перебираєте, порівнюєте, отримуєте за індексом. Лічильник збільшуєте свій, якщо знайшли потрібне. І т.д.
Для роботи з такими рядками вивчіть рядкові функції MySQL. Хоча краще було б доопрацювати структуру БД. Навіть якщо дані в цю таблицю пише якийсь двигун можна доробити БД не змінюючи його коду. Для цього вам треба завести окрему таблицю з полями post_id, key, val у якій ключі та їх значення лежали б окремими рядками. Заповнювати цю таблицю можна автоматично тригером зміну таблиці post. Тригер буде брати xfields, розбивати його на частини і вставляти в окрему таблицю окремими рядками. За деякого бажання це можна зробити навіть одним запитом.
А ваш php рядок отримував неправильно. Так як це якийсь двигун, то ви не можете гарантувати, що поле label буде останнім. І якщо воно буде не останнім, ваш explode дасть невірний результат.