Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Wyświetlanie rekordów z dwóch tabel
Tomekop
post 18.01.2016, 20:38:56
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 17.01.2016

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


Witam, mam problem :/ Czy ktoś mi może wytłumaczyć / nakierować na rozwiązanie mojego problemu?

Mianowicie - mam dwie tabele:

EVENTS
ID | EVENT | ZAINTERESOWANI (czyli ID użytkowników którzy się zainteresowali)
0 | Coś | 2,3,6,8,22

i drugą tabelę
USERS
ID | USERNAME
2 | Tomek
3 | AGATA
6 | Mietek
8 | Antek
22 | Spejson

i tu pojawia się moje pytanie. Jaki jest sposób na wyświetlenie wszystkich rekordów z tabeli EVENTS ale tak aby nie wyświetlały się ID użytkowników tylko ich imiona? Ktoś coś poradzi?

Mam kod na wyświetlenie wszystkich rekordów ale jak pobrać ZAINTERESOWANI i wyświetlić ich?

Proszę o pomoc / wytłumaczenie na jakiej zasadzie to ma działać - będę szczęśliwy jak ktoś podpowie pomocniczym kodem.

Pozdrawiam
Go to the top of the page
+Quote Post
dawid73
post 18.01.2016, 21:54:28
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.01.2016

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


Musisz stworzyć 3 tabelę, gdzie "połączysz" tabele EVENTS i USERS (tzn. wiele-do-wielu)

Temat: sqlrelacja wiele do wielu tworzenie tabeli posredniej jak

W twoim przypadku tabela powinna wyglądać tak:

id_events | id_users
0 | 2
0 | 3
0 | 6
0 | 8
0 | 22


Nie możesz wartości(id_users) przechowywać po przecinku.

Ten post edytował dawid73 18.01.2016, 21:55:27
Go to the top of the page
+Quote Post
Tomekop
post 18.01.2016, 22:53:03
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 17.01.2016

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


Poczytam o twojej podpowiedzi i zobaczę czy dobrze zrozumiałem. Na razie mam taki kod:
  1. $zapytanie1 = mysql_query("SELECT * FROM users");
  2. if(mysql_num_rows($zapytanie1) > 0) {
  3. while($r = mysql_fetch_array($zapytanie1)) {
  4. echo "<tr>";
  5. echo "<td>przed tablica".$r[9]."</td>";
  6. echo "w tablicy ";
  7. $tablica = explode(",", $r[9]);
  8. $ile = count($tablica);
  9. for ($i=0; $i <$ile; $i++)
  10. {
  11. echo mysql_query("SELECT `name` FROM activities WHERE `id`='".$tablica[$i]."'");
  12. }
  13. echo "</tr>";
  14. echo "</br>";
  15. }
  16. }


ale wywala mi tylko coś takieg:
  1. przed tablica1,2w tablicy Resource id #10Resource id #11
  2. przed tablica1w tablicy Resource id #12


Ok, poradziłem sobie z problemem - dla zainteresowanych wklejam działający kod:

  1. $zapytanie1 = mysql_query("SELECT * FROM users");
  2. if(mysql_num_rows($zapytanie1) > 0) {
  3. while($r = mysql_fetch_array($zapytanie1)) {
  4. echo "<tr>";
  5. echo "<td>przed tablica".$r[9]."</td>";
  6. echo "w tablicy ";
  7. $tablica = explode(",", $r[9]);
  8. $ile = count($tablica);
  9. for ($i=0; $i <$ile; $i++)
  10. {
  11. $nazact = mysql_fetch_array(mysql_query("SELECT `name` FROM `activities` WHERE `id` = '".$tablica[$i]."'"));
  12. echo "<td>".$nazact[0]."</br></td>";
  13. }
  14. echo "</tr>";
  15. echo "</br>";
  16. }
  17. }
Go to the top of the page
+Quote Post
nospor
post 19.01.2016, 13:06:09
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To juz kolejny temat, gdzie trzymasz ID w jednym polu po przecinku. Widze lubisz to rozwiazanie ale to jest bledne rozwiazanie. Im predzej sie go pozbedziesz tym lepiej dla ciebie.
dawid73 podal poprawna strukture jak to powinno wygladac.

Nadal tez uzywasz mysql_ zamiast mysqli_ lub PDO. Widze lubisz brnac w przestarzale rzeczy... No nic, Twoja wola.


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

"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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 06:12