Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Jak zbudować bazę na mini-forum
sadistic_son
post 18.03.2024, 11:03:51
Post #1





Grupa: Zarejestrowani
Postów: 1 480
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Część, poproszę o radę. Mam stronkę z postami, takie jednowątkowe mini-forum. Postów jest kilka tysięcy w tabeli messages oraz kilkunastu uzytkowników w tabeli users. Chcę dodać możliwość ozsnaczania postów jako ulubione. Jak to najlepiej, najwydajniej rozwiązać? Zamierzam zrobić tak...

Utworzę dodatkową tabelę favorites. Do niej będę zapisywał ID_MESSAGE oraz ID_USER w przypadku kiedy użytkownik oznaczy posta jakko ulubiony, oraz będę usuwać dany rekord kiedy uer posta odznaczy, wyrzuci z ulubionych. Przy wczytywaniu forum w pętli while wczytującej rekordy z messages będzie dodatkowe sprawdzenie typu jeżeli w favorites istnieje rekord zawierający ID zalogowanego usera oraz id danego posta (przy każdej iteracji while) to oznacz jako ulubiony.
Czy tak będzie dobrze? Czy jakoś inaczej, lepiej można to rozwiązać?


Dodatkowo dwa kolejne pytania niekoniecznie związane z tym tematem:
1) Uzywam sobie od czasu do czasu ChatGPT do generowania kodu. Co o tym sądzicie? Czy on tworzy poprawny kod po bożemu, czy jednak robi złą robotę?
2) O co chodzi z tą kradzieżą danych na forum? Od pewnego czasu Chrome wali mi komunikatami, że moje dane zostały wykradzione z forum i zaleca zmianę hasła. Był jakiś atak hakerski na forum.php.pl ?

Dzięki.

Ten post edytował sadistic_son 18.03.2024, 11:05:00


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 18.03.2024, 11:07:22
Post #2





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




tabela co podales jest ok.
nie jestem pewien czy dobrze zrozumialem jak chcesz sprawdzac czy jest ULUBIONY czy nie. jesli miales na mysli dodatkowe zapytanie to zle. Jesli miales na mysli LEFT JOIN w glownym zapytaniu to dobrze.

ChatGPT nalezy uzywac z wiedza i swiadomie. ok, on wygeneruje kod, ale nie zawsze pierwszych lotow
Forum jest dziurawe jak ser szwajcarski wiec pozostaje miec nadzieje ze ni uzywasz hasla forum w banku


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 18.03.2024, 11:22:47
Post #3





Grupa: Zarejestrowani
Postów: 1 480
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Miałem na mysli osobne zapytanie. Ok, poczytam więc o LEFT JOIN. Na szybko ChatGPT wypluł mi coś w tym stylu:
  1. // Zapytanie SQL z wykorzystaniem LEFT JOIN
  2. $sql = "SELECT messages.ID, messages.MESSAGE,
  3. CASE WHEN favorites.ID_USER IS NULL THEN 0 ELSE 1 END AS is_favorite
  4. FROM messages
  5. LEFT JOIN favorites ON messages.ID = favorites.ID_MESSAGE AND favorites.ID_USER = $logged_in_user_id";
  6.  
  7. $result = $conn->query($sql);
  8.  
  9. if ($result->num_rows > 0) {
  10. // Wyświetlenie danych
  11. while($row = $result->fetch_assoc()) {
  12. echo "ID: " . $row["ID"]. " - MESSAGE: " . $row["MESSAGE"]. " - Is Favorite: " . $row["is_favorite"]. "<br>";
  13. }
  14. } else {
  15. echo "0 results";
  16. }


Dobry kiedunek czy błądzę?



Co do forum, to widzę, że chyba już się nie rozwija. Nie ma https, kradzież danych, admini i zarząd nielogujący się od lat... Czyżby położono już
krzyżyk na tym portalu?

Ten post edytował sadistic_son 18.03.2024, 11:23:31


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 18.03.2024, 11:25:32
Post #4





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




Tak, to jest dobre zapytanie. Przydaloby sie jednak bindowanie zamiast wkladac id usera bezposrednio do zapytania

co do forum to ja juz sie nie bede wypowiadal... ale jak jest kazdy widzi


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 18.03.2024, 11:29:47
Post #5





Grupa: Zarejestrowani
Postów: 1 480
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


1) tak tak, to kod na szybko tylko żeby pokazać kierunek. Będzie bindowanie itd.



2) czyli nie zaprzeczasz... Szkoda sad.gif


Dzięki.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
trueblue
post 18.03.2024, 11:36:11
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A posty nie mają przypisanych autorów?


--------------------
Go to the top of the page
+Quote Post
nospor
post 18.03.2024, 11:45:39
Post #7





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




trueblue a co ma autor do ulubionych postow? Uzytkownik przeciez moze polubic nie swoj post


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 18.03.2024, 11:54:57
Post #8





Grupa: Zarejestrowani
Postów: 1 480
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 18.03.2024, 11:36:11 ) *
A posty nie mają przypisanych autorów?

Oczywiście, że mają. Ale tak jak pisze nospor - można polubić różne posty, nie tylko swoje smile.gif


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
trueblue
post 18.03.2024, 13:33:37
Post #9





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 18.03.2024, 11:45:39 ) *
trueblue a co ma autor do ulubionych postow? Uzytkownik przeciez moze polubic nie swoj post

Czy gdzieś to zanegowałem?

Jeśli wykonamy zapytanie wybierające posty wraz z autorami tychże, i połączymy to poprzez LEFT JOIN z ulubionymi, to uzyskamy iloczyn kartezjański. Nie można więc tego łączyć w jednym zapytaniu.
Oczywiście uprzedzę Cię nospor i doprecyzuję, że nie wiemy czy autor postu będzie wraz z postami wybierał ich autorów, bo póki co nic na to nie wskazuje, ale jeśli tak, to problem się pojawi.


--------------------
Go to the top of the page
+Quote Post
nospor
post 18.03.2024, 14:21:29
Post #10





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




Dzis poniedzialek wiec moge nie kleic wiec spytam, gdzie w tym zapytaniu jest iloczyn kartezjanski?

$sql = "SELECT messages.ID, messages.MESSAGE, CASE WHEN favorites.ID_USER IS NULL THEN 0 ELSE 1 END AS is_favorite
FROM messages
left JOIN users on message.user_id = users.id
LEFT JOIN favorites ON messages.ID = favorites.ID_MESSAGE AND favorites.ID_USER = $logged_in_user_id";


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Salvation
post 18.03.2024, 16:57:38
Post #11





Grupa: Zarejestrowani
Postów: 343
Pomógł: 70
Dołączył: 15.07.2014

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 18.03.2024, 13:33:37 ) *
Jeśli wykonamy zapytanie wybierające posty wraz z autorami tychże, i połączymy to poprzez LEFT JOIN z ulubionymi, to uzyskamy iloczyn kartezjański. Nie można więc tego łączyć w jednym zapytaniu.

A jaki sens jest pobierać Posty, ich Autorów i jeszcze Ulubione na jeden widok? Pytam z biznesowego punktu widzenia, bo szczerze, to jeszcze nie spotkałem się z taką kombinacją nawet przy forach.

Ale zgadzam się, że to będzie zabójcze zapytanie. Co nie zmienia faktu, że zawsze można wygenerować z tego Widok w bazie, zcache'ować czy nawet spróbować jakoś inaczej dane ułożyć w późniejszej fazie.
Go to the top of the page
+Quote Post
nospor
post 18.03.2024, 17:07:19
Post #12





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




Cytat
Ale zgadzam się, że to będzie zabójcze zapytanie.

podalem wyzej zapytanie. Co jest w nim zabojczego?
Dla jednego posta, pobeirze jedna informacje czy jest ulubiona i autora posta. ZWykly, banalny left join bez zadnego iloczynu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 18.03.2024, 17:07:44
Post #13





Grupa: Zarejestrowani
Postów: 1 480
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Cytat(Salvation @ 18.03.2024, 16:57:38 ) *
A jaki sens jest pobierać Posty, ich Autorów i jeszcze Ulubione na jeden widok?
No jak? Mamy listę postów, albo newsów, jak wolisz. ładuje się 10 na stronę, jest stronnicowanie. I przy każdym masz przycisk 'dodaj do ulubionych'. Jeśli w takowy klikniesz to on zostaje oznaczony a przycisk 'dodaj do ulubionych' zmienia się w 'usuń z ulubionych'. Czy to jest jakieś niespotykane rozwiązanie?



Cytat(trueblue @ 18.03.2024, 13:33:37 ) *
(...)autor postu będzie wraz z postami wybierał ich autorów(...)

Sorry, ale nie rozumiem co tu masz na myśli.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 18.03.2024, 17:08:36
Post #14





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




Cytat
A jaki sens jest pobierać Posty, ich Autorów i jeszcze Ulubione na jeden widok? Pytam z biznesowego punktu widzenia, bo szczerze, to jeszcze nie spotkałem się z taką kombinacją nawet przy forach.

I znowu nie kumam. Przeciez dobrze jest widziec autora postu, oraz informacje czy jest to moj ulubiony post czy nie. standardowa funkcjonalnosc


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 18.03.2024, 17:10:17
Post #15





Grupa: Zarejestrowani
Postów: 1 480
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 18.03.2024, 17:08:36 ) *
I znowu nie kumam. Przeciez dobrze jest widziec autora postu, oraz informacje czy jest to moj ulubiony post czy nie. standardowa funkcjonalnosc

Uff, czyli nie wymyśliłem sobie śliwek na wierzbie wink.gif


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 18.03.2024, 17:32:42
Post #16





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




Cytat
(...)autor postu będzie wraz z postami wybierał ich autorów(...)

Sorry, ale nie rozumiem co tu masz na myśli.

autor postu, czyli ty - sadistic_son, czy zamierzasz pobierac jeszcze autorow postow na swoim mini forum. To juz wiemy, ze zamierzasz i to jest jak najbardziej ok. Czego nie wiemy to to, czemu oni mysla ze to zabije baze, bo jak dla mnie jest to banalne i szybkie zapytanie. bez iloczynu kartezjanskiego jak im sie wydaje

edit: trueblue i salvation:
polubione posty beda pobierane tylko dla aktualnie przegladajacego uzytkownika a nie dla wszystkich na raz


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 18.03.2024, 17:47:59
Post #17





Grupa: Zarejestrowani
Postów: 1 480
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Dokładnie. Ja (zalogowany) chcę widzieć posty które sam polubiłem, nie interesuje mnie które posty polubili inni. Tzn chcę widzieć wszystkie posty z bazy, ale w żółtej ramce mają być tylko te które sam polubiłem wink.gif I podobnie będzie z postami przeczytanymi i nie przeczytanymi. Chcę mieć oznaczone te posty których sam jeszcze nie czytałem, a co mnie obchodzi, że postu nr 550 kolega Zenek69 jeszcze nie przczytał. I chcę widzieć że post nr 567 został napisany przez kolegę Zbychu999. Nic w tym wszystkim chyba nie ma zaskakującego, co? smile.gif


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
Salvation
post 20.03.2024, 14:26:51
Post #18





Grupa: Zarejestrowani
Postów: 343
Pomógł: 70
Dołączył: 15.07.2014

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 18.03.2024, 17:07:19 ) *
podalem wyzej zapytanie. Co jest w nim zabojczego?

W Twoim nic. Ja pytałem trueblue o to, po co na jednym widoku lista przez kogo post został polubiony. Łączna suma polubień jeszcze nie będzie wąskim gardłem.

A jeżeli faktycznie chcemy wyświetlić listę osób, które post polubiły, to lepiej do dociągnąć przez np. AJAXa.
Go to the top of the page
+Quote Post
nospor
post 20.03.2024, 14:51:17
Post #19





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




No i tu wynika niezrozumienie
Nigdzie z pytan sadistica nie wychodzila, ze chce pobierac osoby ktore polubily post. Od samego poczaktu bylo jasne, co pokazal w zapytaniu, ze go interesuje tylko osoba, dla ktorej sie wyswietla forum, czy ona polubila post. Dlatego tez wasze stwierdzenia, ze to bedzie zabojcze, nie mialy sensu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 06:50