Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyświetlanie rekordów z dwóch tabel
Forum PHP.pl > Forum > Przedszkole
Tomekop
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
dawid73
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.
Tomekop
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. }
nospor
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.
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.