![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 16.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Pierwsza część tematu: Temat: PHPMySQL System Ulubionych Idea 1
Witam! W poprzednim temacie podpowiedziano mi, jak stworzyć mini system ulubionych połączony z bazą danych użytkowników mojego forum SMF oparty o PHP oraz MySQL. Użytkownik Crozin podpowiedział mi by stworzyć osobną tabelę, która utworzy z tabelą użytkowników relację wiele-do-jednego (klik). Osoba, która byłaby tak miła by napisać dla mnie takowy kod zostałaby nagrodzona kwotą co najmniej 10zł oraz dostałaby reklamę w wybranym okresie na stronie CartoonCenter.pl (która - przypomnę - nawet w okresie BETA miała miejscami 2000 UU wyświetleń). Opis systemu Moim poprzednim pomysłem było stworzenie osobnej tabeli dla każdego użytkownika który będzie chciał używać systemu ulubionych, ale podobno 10'000 tabel dla 10'000 użytkowników to kiepski pomysł (IMG:style_emoticons/default/haha.gif) Niestety tak jak osobne tabele byłem w stanie stworzyć i rozumiałem to, tak utworzenie osobnej tabeli która utworzy z tabelą użytkowników relację wiele-do-jednego jest po prostu czarną magią. Rozumiem, że mają bazę danych (nazwijmy ją cc_db) i mając tam 50 różnych tabel forum (SimpleMachinesForum) jedną z nich jest forum_members, w której są wszyscy użytkownicy, oczywiście z unikalnym ID, które w php mogę otrzymać dzięki komendzie $user_id = $context['user']['id'] . Następnie mam utworzyć nową tabelę, np. ulubione i co dalej? Chcę, aby użytkownik wchodząc na podstronę CartoonCenter na której jest możliwość dodania tego URL do ulubionych klikał ikonkę, która byłaby tak naprawdę ukrytym submit i wysyłał do bazy danych URL i PageTitle.
Wysyłając dane do pliku add_fav.php chciałbym by php sprawdzało, czy w tabeli 'ulubione' nie ma już przypadkiem takiego URL i jeśli jest to wysyłać komunikat o tym, że podany adres już jest w ulubionych, a jeśli nie ma takowego to go dodać (lub możemy to uprościć - by jeśli pozycja znajduje się już w bazie danych to ikonka dodawania do ulubionych jest nieaktywna, a jeśli nie ma to aktywna - z tym że to już oczywiście nie w plik add_fav.php tylko bezpośrednio na stronie którą użytkownik zamierza dodać). Potem niezbędna jest opcja przeglądania wszystkich ulubionych z możliwością usunięcia pojedynczych adresów z tabeli (zakładam że to z DELETE FROM ulubione WHERE PageURL = $PageURL czy coś tego typu). Czy ktokolwiek byłby w stanie mi pomóc? Z góry dzięki za pomoc. Pozdrawiam, Newbie FlashSplash Ten post edytował FlashSplash 17.08.2010, 09:35:04 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Podam skrócony opis słowny
1. Przefiltruj url 2. Pobierz id_usera z sesji 3. Wstawienie rekordu: a) sprawdź czy w połączonych tabelach user_page i pageUrl jest wpis dla usera z tym user_id i tym pageUrl (IMG:style_emoticons/default/cool.gif) jeśli nie - sprawdź czy jest wpis w tabeli pageUrl o tym pageUrl - jeśli nie: dodaj adres do pageUrl i pobierz jego id. Dodaj to id oraz id usera do user_page - jeśli tak: pobierz id tego url i dodaj to id oraz id_usera do user_page c) jeśli tak - walnij komunikat, że wpis już jest. 4. Edycja rekordu: a) sprawdź czy w połączonych tabelach user_page i pageUrl jest wpis dla usera z tym user_id i tym pageUrl (IMG:style_emoticons/default/cool.gif) jeśli nie, usuń ten wpis z user_page i sprawdź czy jest wpis w tabeli pageUrl o tym pageUrl - jeśli nie: dodaj adres do pageUrl i pobierz jego id. Dodaj to id oraz id usera do user_page - jeśli tak: pobierz id tego url i dodaj to id oraz id_usera do user_page c) jeśli tak - walnij komunikat, że wpis już jest. 5. Usunięcie rekordu: a) usuń wpis o danym url z user_page Zaznaczam, że każdy "dodaj" i "usuń" muszą być sprawdzone, jak róznież istnieje konieczność sprawdzenia czy wyniki są prawidłowe przy pobieraniu informacji do sprawdzenia. Nie można od razu walić mysql_result ( mysql_query( zapytanie ) ) bo nie obsłuży się błędów inaczej. Na wstępie minimum to oraz Zauważ, że operacje update'u nic nie update'ują! To konieczność usunięcia starych powiązań i utworzenia nowych, czasem ze stworzeniem nowego rekordu w pageUrl... Zobacz jak niewiele rzeczy różni edycję i dodanie! To niemal lustrzane kopie. Update jedynie dodatkowo usuwa stare dowiązanie z tabeli user_page(!). Poza tym są identyczne. Wystarczy więc na pewnym etapie sprawdzić z czym mamy do czynienia, ale poza tym kod dla obu rzeczy nie musi być nawet kopiowany, może być nim po prostu na zasadzie:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 21:43 |