SN@JPER^
9.06.2015, 19:36:23
Witam.
Dodaje artykuł z tagami, jest to pole tags w bazie. Zapisuje w nim tagi w następujący sposób: tag1,tag2,tag3
Podczas dodawania nowych artykułów chce, aby wyszukiwało i podpowiadało względem szukanej frazy, bez duplikatów.
Jak to osiągnąć?
Próbowałem zwykłym LIKE "%ta%", ale wartości są po przecinku i pokazuje całość w danym polu.
trueblue
9.06.2015, 19:37:54
SN@JPER^
9.06.2015, 20:49:19
Hmmm... przeczytałem wątek i nie rozumiem...
niby chce rozdzielić, a concat mi łączy.
Takie coś wymodziłem:
SELECT tags FROM articles WHERE tags LIKE '%mus%' GROUP BY tags
Z tym, że zamiast wyświetlić mi tagi:
music
muss
mus... etc.
wyświetla wszystkie rekordy gdzie jest tag music, np. movie,music,cinema
patwoj98
10.06.2015, 06:18:54
Bo jak masz w jednym rekordzie kilka tagow to on te kilka wyciagnie. To ma byc dynamiczne?
Crozin
10.06.2015, 07:03:02
Dlaczego nie masz zwykłej relacji wiele-do-wielu pomiędzy artykułami i tagami tylko jakieś nic nie znaczące (z punktu widzenia bazy danych) teksty?
SN@JPER^
10.06.2015, 21:56:35
No właśnie nie chciałem oddzielnej tabeli do tagów i widzę to był błąd (?)
Crozin
10.06.2015, 22:50:31
Tak, to był błąd. Powinieneś mieć tabelę artykułów (id, tytuł, ...), tagów (id, nazwa, ...) oraz łączącą (id_artykułu, id_tagu). Wtedy nie będziesz miał takich problemów z trywialnymi zadaniami.
SN@JPER^
10.06.2015, 23:07:42
Mam dodanych już 1500 artykułów, da się to zrobić tak jak mowilem? Rozdzielajac w sql?
Crozin
10.06.2015, 23:14:17
To napisz sobie prosty skrypt, który przerobi obecne, kulawe rozwiązanie na normalne. Zajmie Ci to zapewne 2 razy mniej czasu niż kombinowanie przy obecnej strukturze.
SN@JPER^
11.06.2015, 00:55:45
Tak to mam napisane...
in_array wykorzystuje
$sql = 'SELECT tags FROM '._PREFIX_.'article';
if($rows>0){
$tags_explode = explode(',', $tags);
foreach($tags_explode as $tag){
$tags_a[] = $tag;
}
}
//echo $tags;
}
}
echo json_encode
($tags_a);
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.