Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Łączenie duplikatów (tagów)
Forum PHP.pl > Forum > Przedszkole
maly_pirat
Cześć.

Utworzyłem dość nietypowy system tagów (dla newsów) - otóż dodałem nową kolumnę w tabeli: newsy;
Kod
news_tag` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',


I tam umieszczam wpisy, a przy wyświetlaniu ich rozbijam je (oddzielam je za pomocą explode).
Utworzyłem nowe zapytanie, generujące 5 losowych tagów:
  1. <?php
  2. $sql    = "SELECT news_tag FROM newsy ORDER BY rand() LIMIT 0,5";
  3. // mysql_query
  4. // pętla while
  5.  
  6. // w pętli while oddzielamy tagi
  7.        $tags = explode(",", $row['news_tag']);        
  8.        for($i=0;$i<count($tags);$i++)
  9.        {
  10.            $news_tags = (($news_tags) ? $news_tags . ' , ' : '') . '<a href="'.("tags/".rawurlencode(strtolower(trim(($tags[$i]))))).'"">' . strtolower($tags[$i]) . '</a>';
  11.        }
  12. ?>


Niby wszystko działa, wyświetla losowe tagi - tylko powstają duplikaty np. forum, php, mysql, forum, kodowanie stron, php

Chciałbym aby duble "łączyły się" i jeśli np. wpis X został zdublowany np. 5 razy to ma go wyświetlić w postaci:
<b>X</b>

Tylko w jaki sposób zabrać się za to?
Foxx
Użyj array_unique, coś w stylu:

  1. <?php
  2. $tags = explode(",", $row['news_tag']);    
  3. $tags = array_unique($tags);
  4. ?>
maly_pirat
Zamiast tagów, wyświetla
Kod
Array Array Array
maly_pirat
No dobra, skleiłem to w całość:
  1. <?php
  2. $tags     = explode(",", $row['news_tag']);
  3.        $tags    = array_unique($tags);
  4.        for($i=0;$i<count($tags);$i++)
  5.        {
  6.            $news_tags = (($news_tags) ? $news_tags . ' , ' : '') . '<a href="'.("tags/".rawurlencode(strtolower(trim(($tags[$i]))))).'" title="ProXion ' . $tags[$i] .'">' . strtolower($tags[$i]) . '</a>';
  7.            $news_tags    = var_dump($news_tags);
  8.        }
  9. ?>


Jednak wyświetla mi wszystko w postaci:
Kod
string(82) "forum"
string(55) "baza danych"
itd


Da się w jakiś sposób usunąć te string(X) wraz z " ?
erix
Spokojnie, var_dump" title="Zobacz w manualu PHP" target="_manual jest do wyświetlenia zawartości. tongue.gif

Po prostu przypisz zmienną, skoro już wszystko ok.
maly_pirat
Usunąłem var_dump(), więc jest tylko array_unique + reszta kodu z pętli for.
Wyświetla następująco: Array , forum Array , baza danych - gdzie pogrubione to są tagi
erix
No to użyj var_dump " title="Zobacz w manualu PHP" target="_manual i zobacz, co jest w tej tablicy... dry.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.