Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem z prawidłowym wyświetlaniem z tabel
Forum PHP.pl > Forum > Przedszkole
sottu
Witam, mam problem z wyświetlaniem wyników wiem że mam gdzieś błąd ale nie potrafię sobie sam poradzić. Więc tak, zapytanie poniższe działa tak :
1. Wyświetla Poprawnie dane Filmu jak zdjęcie,reżysera daty itp.
2. Wyświetla pod filmem Aktorów i role jakie grają w filmie ale z błędem :/ ponieważ jak mam przykładowo 5 aktorów to wyświetli sie 5x film a pod każdym filmem 1 aktor.

wygląda to tak :

Shrek
aktor1

Shrek
aktor2

Shrek
aktor3

itd...

A powinno być :

Shrek
aktor1
aktor2
aktor3

Może ktoś mi pomóc albo jakoś naprowadzić ?
  1. if (isset($id))
  2. {
  3. $i=0;
  4. $wynik=mysql_query("select * FROM filmy INNER JOIN role ON filmy.Id_F = role.Id_F
  5. INNER JOIN aktorzy ON role.Id_A = aktorzy.Id_A
  6. where filmy.Id_F=$id", $idc)
  7. or die("Błąd podczas wykonywania zapytania");
  8.  
  9. echo"<center>";
  10. echo"<table border = 0 bordercolor = 'BFF1FA' cellpadding=0 cellspacing=0 width=450>";
  11. while($dane=mysql_fetch_row($wynik))
  12. {
  13. echo"<TR>";
  14. $foto=".\\fotki\\".$dane[8];
  15. $foto5=".\\fotki\\".$dane[11];
  16. $foto2=".\\fotki\\".$dane[12];
  17. $foto3=".\\fotki\\".$dane[13];
  18. $foto4=".\\fotki\\".$dane[14];
  19. $foto1=".\\aktorzy\\".$dane[22];
  20.  
  21. <TD rowspan=6><img src=$foto width=150 height=220 border=0></TD>
  22. <TD Width = 300><h2>&nbsp;&nbsp;&nbsp;$dane[1]<br><hr width=250 color=55819C></TD></tr><tr>
  23. <TD Width = 300><b>&nbsp;&nbsp;&nbsp;Reżyser:</b><i> $dane[2]</TD></tr><tr>
  24. <TD Width = 300><b>&nbsp;&nbsp;&nbsp;Data premiery:</b><i> $dane[4]</TD></tr><tr>
  25. <TD Width = 300><b>&nbsp;&nbsp;&nbsp;Czas trwania:</b><i> $dane[3] min</TD></tr><tr>
  26. <TD Width = 300><b>&nbsp;&nbsp;&nbsp;Dystrybucja:</b><i> $dane[6]</TD></tr><tr>
  27. <TD Width = 300><b>&nbsp;&nbsp;&nbsp;Gatunek:</b><i> $dane[5]</TD></tr>
  28. </table>
  29. <br>
  30. <table border = 0 bordercolor = 'BFF1FA' cellpadding=0 cellspacing=0 width=500><tr>
  31. <TD Width = 450><b>&nbsp;&nbsp;&nbsp;Opis:<br><hr color=55819C></b></td></tr>";
  32.  
  33. <td>$dane[7]</TD></tr><tr>
  34.  
  35. <td><br>
  36. <img src=$foto5 width=120 height=120 border=0>
  37. <img src=$foto2 width=120 height=120 border=0>
  38. <img src=$foto3 width=120 height=120 border=0>
  39. <img src=$foto4 width=120 height=120 border=0>
  40. </td></tr>
  41.  
  42. <tr>
  43. <TD Width = 450><b>&nbsp;&nbsp;&nbsp;Obsada:<br><hr color=55819C ></b></td></tr><tr><td>";
  44. if ($i%2)
  45. {
  46. $class='szary';
  47. }
  48. else
  49. {
  50. $class='bialy';
  51. }
  52. <table border=1> <tr class=$class><td width=35 height=40 >
  53. <A HREF=polecamy.php?id=$dane[19]>
  54. <img src=$foto1 width=35 height=40 vspace=0 hspace=0> </A></td>
  55. <td align='left' valign='middle' width=200 height=35>&nbsp;&nbsp;
  56. <A HREF=polecamy.php?id=$dane[19]>$dane[20]</A></td>
  57. <td align='left' valign='middle' width=200 height=35><b>:</b>&nbsp;<i>$dane[18]</i>
  58. </table></tr></table>
  59. </td>
  60. </tr>
  61. ";
  62.  
  63. $i++;
  64.  
  65. }
  66. echo"</Table>";
  67. }
  68.  
  69.  
thek
Popraw BBCode. To nie SQL tylko PHP :/ I w sumie dziwisz się, że tak Ci działa, skoro wszystkie dane z tabeli w jednej wielkiej pętli? Zrób sobie tak:
1) wyciągnij dane tylko tyczące filmu z bazy i wyświetl je, a potem dopiero w pętli aktorów w nim biorących udział. Myślę nawet, że to będzie ciut wydajniejsze jeśli baza i serwis są na tej samej maszynie bo pozbędziesz się joina i mniej danych baza musi przesłać do skryptu do obróbki.
2) jeśli nie chcesz już się tak bawić z dwoma zapytaniami osobnymi to w pętli pierwszej wyświetl dane o filmie z pierwszego rekordu i przesuń wskaźnik odczytanych rekordów o jeden w tył i teraz w nowej, wewnętrznej pętli while, odczytuj TYLKO dane aktorów, a nie wszystko.
sottu
Dziękuję bardzo wszystko zaczęło mieć ręce i nogi, wybrałem opcje 1.
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.