Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] System Ulubionych - Idea (1)
Forum PHP.pl > Forum > Przedszkole
FlashSplash
Witam!

Dla osób zaawansowanych jest to zapewne proste, więc będę ogromnie wdzięczny za udzieloną pomoc (dla osoby, która pomoże najwięcej razy z przyjemnością ufunduję 2 tygodnie darmowej reklamy na (póki co) nieaktywnym portalu CartoonCenter.pl który nawet niereklamowany osiągał dziennie 2000 UU z 9-10min średnią przebywania na stronie).

To co chcę zrobić to system Ulubionych na CartoonCenter. Aby było łatwiej:
CartoonCenter = CC
System Ulubionych = fav

Strona jest połączona z SMF poprzez plik SSI.php. Osoby zaznajomione z forum powinny chwytać o co chodzi, ale wiedza o tym nie jest niezbędna.

Idea Systemu:
Użytkownik CC wchodzi na daną stronę (np. artykuł, odcinek) i ma opcję kliknięcia w ikonkę "Dodaj do Ulubionych". Jest to tak naprawdę przycisk submit, który wysyła dane na stronę add_fav.php z bardzo prostymi danymi - curPageURL(); oraz curPageName(); które uzyskuję poprzez dodanie na początku strony paru linijek:
  1. function curPageURL() {
  2. $pageURL = 'http';
  3. if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
  4. $pageURL .= "://";
  5. if ($_SERVER["SERVER_PORT"] != "80") {
  6. $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
  7. } else {
  8. $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
  9. }
  10. return $pageURL;
  11. }
  12.  
  13. function curPageName() {
  14. return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);
  15. }


Następnie plik add_fav.php sprawdza czy tabela o nazwie user$user_id istnieje (gdzie $user_id = context['user']['id'] - to pobiera nazwę użytkownika z forum) - w moim przypadku wynik to user1 - jeśli tak, to przechodzi do następnego kroku, jeśli nie to takową tworzy (z kolumnami URL varchar(255) i PageTitle varchar(255)) i przechodzi dalej.
Po sprawdzeniu/stworzeniu tabeli plik add_fav.php sprawdza czy link, który został wysłany poprzez submit form z hidden polem w którym znajduje się adres URL, już znajduje się w kolumnie URL i jeśli tak to zwraca użytkownikowi komunikat "Ta strona już jest w Twoich Ulubionych", jeśli nie to url dodaje.

I tu mam pytanie. Czy dobrze myślę? Czy tworzenie osobnej tabeli w bazie danych dla każdego użytkownika który cokolwiek doda do ulubionych to dobry pomysł?

Jestem gotów zasponsorować reklamę na 2-4 tygodnie na CartoonCenter.pl i we vlogach na YouTube.

Pozdrawiam,
Zdesperowany Wizjoner FlashSplash
Crozin
10 000 użytkowników, 10 000 tabel? To zły pomysł. Dodaj po prostu kolejną kolumnę z identyfikatorem użytkownika.
FlashSplash
Czyli, że jeśli mam tabelę smfforum_members a w niej z 30 kolumn to dodać jeszcze jedną o nazwie np. 'ulubione' ?

ale jak wtedy dodawać, usuwać i wyświetlać poszczególne URL, które dany użytkownik dodał? Zakładając że po roku jeden użytkownik będzie mógł dodać co najmniej 150-200 adresów URL. I to w jednej komórce w jednej kolumnie?
Narus
tak, dodaj ową kolumnę "ulubione" dla tabeli dot. użytkowników

ulubione linki, ID artykułów, czy co tam chcesz dodawaj do kolumny ulubione w następujący sposób:
  1. http://jakiślink.pl;23232;232;http://www.kolejnylink.pl

(gdzie ";" jakiś mądry separator).

Nowe linki/id artykułów sprawdzasz i dodajesz za pomocą operacji na tablicach.
Crozin
@Narus: co to ma być?

Co do tematu: masz utworzyć osobną tabelę, która tworzy z tabelą użytkowników relację wiele-do-jednego, tj. wiele ulubionych jest przypisanych do jednego użytkownika (czy też na odwrót: jeden użytkownik ma przypisanych wiele ulubionych).

Kod
Użytkownik:
  id PK
  nazwa

Ulubione:
  id PK
  użytkownik_id FK (Użytkownik.id) ON DELETE CASCADE
  url


FlashSplash
Cytat(Crozin @ 17.08.2010, 00:18:13 ) *
Co do tematu: masz utworzyć osobną tabelę, która tworzy z tabelą użytkowników relację wiele-do-jednego, tj. wiele ulubionych jest przypisanych do jednego użytkownika (czy też na odwrót: jeden użytkownik ma przypisanych wiele ulubionych).

Kod
Użytkownik:
  id PK
  nazwa

Ulubione:
  id PK
  użytkownik_id FK (Użytkownik.id) ON DELETE CASCADE
  url


Ok, jako że jestem totalnie zielony nie będziesz poirytowany jak powiem, że kumam, ale nie wszystko? tongue.gif

Czyli, że byłbym w stanie usuwać pojedyncze url u danego użytkownika i wyświetlać je przy pomocy php?
I tutaj muszę spytać:

id PK = unikalne id czego?

I poprosiłbym o wytłumaczenie tego: użytkownik_id FK (Użytkownik.id) ON DELETE CASCADE

Poza tym to działa na tej zasadzie, że ja mam dane w postaci $context['user']['id'] co zwraca mi id użytkownika (np. ja = 1, ktośtam = 234) i będzie to z tym współpracowało? Jeśli tak, to lubię php.

Pozdrawiam i dzięki za pomoc! smile.gif
Crozin
1) PK - Primary Key - http://dev.mysql.com/doc/refman/5.1/en/create-table.html
2) FK - Foreign Key - http://dev.mysql.com/doc/refman/5.1/en/inn...onstraints.html
3) O relacjach: http://www.google.com/search?hl=en&cli...q=&gs_rfai=
4) Tak, zadziała to z PHP - bo nie ma ono to wiele do rzeczy
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.