Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MySQL] Tagi - jakie adresy?
Forum PHP.pl > Forum > PHP
dkruczek
Witam!
Myślę własnie nad systemem tagów dla tworzonego serwisu i pewna kwestia jest dla mnie problematyczna, mianowicie - zastanawiam się w jaki sposób zrealizować przeglądanie tagów. Cho dzi mi sytuację, w której mam w bazie danych tabelę z plikami (w tym wypadku), drugą tabelę, w której do każdego pliku są przypisane odpowiednie tagi. Na podstawie tego generowana jest chmura tagów i po kliknięciu na każdy tag mozemy przeglądać pliki nim opisane. Pytanie powstaje w jaki sposób rozwiązać kwestię identyfikacji taga. Mogę dać w adres poprostu nazwę taga, ale wtedy powstaje problem polskich znaków. Mogę ten problem rozwiązać przechowując w bazie danych wersję taga bez nich, ale wtedy może nastąpić kolizja nazw w momencie gdy będę np. tagi "liść" i "lisc", gdyż zostaną potraktowane jako jeden i ten sam tag. Może ktoś podpowie jakieś dobre rozwiązanie? smile.gif
Blame
Do identyfikacji każdego rekordu w bazie danych powinno służyć pole id z auto_increment. Wtedy podczas wyświetlania tagów, do każdego przypisujesz jego id w adresie, czyli np. tagi.php?id=id_taga gdzie tagi.php odbiera za pomocą GET'a to id i wyświetla wszystkie pliki z nim związane. Chyba dobrze zrozumiałem twoje pytanie, jak nie to wyjaśnij dokładniej o co ci chodzi winksmiley.jpg
altruista2
Cytat
Mogę dać w adres poprostu nazwę taga, ale wtedy powstaje problem polskich znaków.


Jaki problem?!

Linki:
  1. echo '<a href="?tag='.urlencode('ąęćżłśń').'">';


Odczyt GET:
  1. $tag = urldecode($_GET['tag']);


Jeśli masz starą wersję PHP to możesz zrobić sobie funkcje:
  1.  
  2. function koduj($str) {
  3. return url_encode(str_replace(Array('ą','ę','ć','ł','ń','ś','ż','ź','ó'),Array('%B9','%EA','%E6','%B3','%F1','%9C','%BF','%9F','%F3'), strtolower($str)));
  4. }
  5.  
  6. function dekoduj($str) {
  7. return url_decode(str_replace(Array('%B9','%EA','%E6','%B3','%F1','%9C','%BF','%9F','%F3'), Array('ą','ę','ć','ł','ń','ś','ż','ź','ó'), strtolower($str)));
  8. }
  9.  
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.