![]() |
![]() |
-Stypula- |
![]()
Post
#1
|
Goście ![]() |
Więc mam w bazie danych kolumnę "tagi" w której mam dane w formacie "tag1, tag2, tag3, (...)" i chcę żeby mi się wyświetlało 5 słów które się najczęściej powtarzają (ze wszystkich rekordów pobranych z pola "tagi").
Jeśli mnie nadal nie rozumiecie to podam przykład: Mam pewną tabelę w której mam pola id i tagi. Rekordy wyglądają tak:
Pobieram tagi za pomocą: następnie robię z tego tablicę za pomocą explode (usuwam przecinki): . I teraz z powstałej tablicy "$tagi" chcę wyciągnąć wszystkie rekordy i policzyć ile razy się który powtarza a następnie wyświetlić pięć które użyte zostały najczęściej i wyświetlić je. Kolejność nie ma znaczenia (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) . Proszę o pomoc |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Napsiałem sobie to i nawet nei jest trudne ;p Ale napsize Tobie jak to powinno wyglądać a napewno sobie poradzisz ;]
1. Pobierając z bazy tagi zapisujesz je do 1 stringu (każda nazwa zespołu po przecinku) 2. Tworzysz tablice poprzez explode na ten string 3. robisz na niej array_unique 4. następnie funkcją foreach lecisz po tej tablicy i szukasz ilości wystąpień wartości w stringu i zapisujesz do tablicy nazwa zespołu jako klucz ilość wystąpień jako wartość przyda ci się tutaj : substr_count 5. na koniec arsort na tablicy i pierwsze 5 wierszy to jest to czego szukasz ;p Mam nadzieje że nei masz za złe że nei dałem gotowego kodu ;p Ale dzieki temu się czegoś nauczysz ... może i jest jakieś łatwiejsze rozwiązanie - to z chęcią się dowiem jakby wygladało (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) Ten post edytował melkorm 16.11.2008, 15:20:40 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat 4. następnie funkcją foreach lecisz po tej tablicy i szukasz ilości wystąpień wartości w stringu i zapisujesz do tablicy nazwa zespołu jako klucz ilość wystąpień jako wartość przyda ci się tutaj : substr_count Trochę strzelasz do muchy z armaty, bo jest taka fajna funkcja array_count_values" title="Zobacz w manualu PHP" target="_manual. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Cytat Trochę strzelasz do muchy z armaty, bo jest taka fajna funkcja array_count_values. przejrzałem z 3 razy liste funkcji do tablic ... masakra D: (IMG:http://forum.php.pl/style_emoticons/default/brzydal.gif) aż mnie dziwiło że takeigo czegoś nie ma D: //zapomniałem jeszcze o jednym - pamietaj by oczyścić ze spacji każdą wartość bo inaczej rozpozna "rock" i np. "(spacja)rock" (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ten post edytował melkorm 16.11.2008, 17:03:48 |
|
|
-Stypula- |
![]()
Post
#5
|
Goście ![]() |
Ok. Mam coś takiego:
Ale jak wypisać tylko pierwszych pięć wierszów z tego $ile? Bo foreach wypisuje wszystkie ;\ A moje wywala błąd ; D |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
foreach" title="Zobacz w manualu PHP" target="_manual (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Podpowiedź: zrób przed pętlą zmienną licznika i sprawdzaj go przy każdym skoku pętli. Jeśli ma wartość, o którą Ci chodzi, przerwij pętlę. No prościej się już nie da, teraz manual w łapki. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
-Stypula- |
![]()
Post
#7
|
Goście ![]() |
Ok. Rozwiązałem to za pomocą:
Chwała Wam za to że nie podajecie kodu tylko zmuszacie do samodzielnego myślenia ; D. Btw. chyba sobie zrobię użytkownika ^^ |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 19:58 |