Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównywanie zawartości tabel w bazach danych
Forum PHP.pl > Forum > PHP
Rutkof
Witam jestem nowy na forum ale liczę na waszą pomoc
Zrobiłem stronkę która ma wyświetlać wyniki z tabeli z bazy danych. W dwóch wierszach jednej tabeli ( tbl_powiazanie ) wstawione są dane liczbowe odpowiadające wpisom w dwóch innych tabelach w bazie danych ( tbl_nauczyciele i tbl_przedmioty ). Problem polega na tym że mimo iż zadaje polecenie powtarzania to wyświetla się porównanie tylko pierwszego wpisu, pozostałe powtórzenia są puste. Może ktoś z was wie co robię źle. Dzięki :-(


  1. <?php
  2. mysql_select_db($database_connection, $connection);
  3. $query_rs_nauczycielista = "SELECT * FROM tbl_nauczyciele";
  4. $rs_nauczycielista = mysql_query($query_rs_nauczycielista, $connection) or die(mysql_error());
  5. $row_rs_nauczycielista = mysql_fetch_assoc($rs_nauczycielista);
  6. $totalRows_rs_nauczycielista = mysql_num_rows($rs_nauczycielista);
  7.  
  8. mysql_select_db($database_connection, $connection);
  9. $query_rs_powiazania = "SELECT * FROM tbl_powiazanie";
  10. $rs_powiazania = mysql_query($query_rs_powiazania, $connection) or die(mysql_error());
  11. $row_rs_powiazania = mysql_fetch_assoc($rs_powiazania);
  12. $totalRows_rs_powiazania = mysql_num_rows($rs_powiazania);
  13.  
  14. mysql_select_db($database_connection, $connection);
  15. $query_rs_przedmiot = "SELECT * FROM tbl_przedmioty";
  16. $rs_przedmiot = mysql_query($query_rs_przedmiot, $connection) or die(mysql_error());
  17. $row_rs_przedmiot = mysql_fetch_assoc($rs_przedmiot);
  18. $totalRows_rs_przedmiot = mysql_num_rows($rs_przedmiot);
  19. ?>
  20. <?php do { ?>
  21.  <?php if (($row_rs_nauczycielista['nauczycielId']) ==($row_rs_powiazania['nauczycielId'])) echo ($row_rs_nauczycielista['nauczycielNazwisko']); ?>
  22.          -
  23.        <?php if (($row_rs_powiazania['przedmiotId']) ==($row_rs_przedmiot['przedmiotID'])) echo ($row_rs_przedmiot['nazwaprzedmiotu']); ?>  <br />
  24.  <br />
  25.  <?php } while ($row_rs_powiazania = mysql_fetch_assoc($rs_powiazania)); ?><?php
  26. mysql_free_result($rs_nauczycielista);
  27.  
  28. mysql_free_result($rs_powiazania);
  29.  
  30. mysql_free_result($rs_przedmiot);
  31. ?>
skowron-line
No trochę źle robisz ale tylko odrobinkę. smile.gif
Jeżeli masz takie same rekordy czyli nauczycielID to zrób to w jednym zapytaniu.
  1. <?php
  2. $zapytanie = '
  3. select tbl_nauczyciele.*, tbl_powiazanie.*, tbl_przedmioty.* FROM tbl_nauczyciele, tbl_powiazania, tbl_przedmioty
  4. WHERE
  5. tbl_nauczyciele.nauczycielID = tbl_powiazanie.nauczycielID
  6. AND
  7. tbl_powiazanie.przedmiotID = tbl_przedmioty.przedmiotID';
  8. $query = mysql_query( $zapytanie );
  9. while( $row = mysql_fetch_array( $query )){
  10. echo $row[ 'nazwaprzedmiotu' ];
  11. }
  12. ?>
Rutkof
Witam
Niestety nie działa to co napisałeś. Pętla while umieszczona w innej pętli gubi się zupełnie. Tu chodzi o wymienienie numerów uzyskanych z pierwszej tabeli (powiazania ) na nazwiska w drugiej (nauczyciele). Tylko że to nie nastąpić wjednym zapytaniu lecz ma to być pętla która wyświetli wszystkie wpisy. po wprowadzeniu tego co napisałeś otrzumuje
  1. <?php
  2. mysql_fetch_array(): supplied argument is not a valid MySQL result resource
  3. ?>

Ale może się mylę
Pozdrawiam
skowron-line
  1. <?php
  2. ?>

i bedziesz wiedział co jest nie tak.
Rutkof
Dzięki poradziłem już Sobie.
Wykorzystałem "strcmp" i dzięki porównaniu zawartości w dwóch tabelach uzyskałem właściwe wyswietlanie.
Wątek zamknięty
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.