Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] poprawne wyświetlanie tabeli
Forum PHP.pl > Forum > Przedszkole
Nemesis
Witam

Mam mały problem z wyświetlaniem danych w tabelce na stronie.

W bazie mam takie tabele:
UZYTKOWNICY
Id_uzytkownika | Imie | Nazwisko

KLASA
Id_klasa | Jaka_klasa

PRZEDMIOTY
Id_przedmiot | Nazwa_przedmiotu

OCENY
Id_ocena | Oceny

I chcę wyświetlić taką tabelę na stronie:

Nazwisko 1 | Imie 1 | Ocena
----------------------------
Nazwisko 2 | Imie 2 | Ocena
----------------------------
Nazwisko 3 | Imie 3 | Ocena
----------------------------
Nazwisko 4 | Imie 4 | Ocena

ale mam pewien problem.

Zapytanie wyświetlające dane wygląda następująco:
  1. $zapytanie=mysql_query("SELECT uzytkownicy.Imie, uzytkownicy.Nazwisko, oceny.Oceny FROM klasa natural join przedmioty natural join uzytkownicy LEFT JOIN oceny ON uzytkownicy.Id_uzytkownik = oceny.Id_uzytkownik where Jaka_klasa='$klasa' and przedmioty.Nazwa_przedmiotu='$przedmiot' ORDER BY uzytkownicy.Nazwisko");


Jeśli każda osoba ma po jednej ocenie to jest Ok, lecz jeśli ktoś ma więcej ocen, to powtarzane jest Nazwisko, Imię i dopiero ocena:

Nazwisko 1 | Imie 1 | Ocena
----------------------------
Nazwisko 2 | Imie 2 | Ocena
----------------------------
Nazwisko 2 | Imie 2 | Ocena
----------------------------
Nazwisko 3 | Imie 3 | Ocena
----------------------------
Nazwisko 4 | Imie 4 | Ocena

Powinno być:

Nazwisko 1 | Imie 1 | Ocena
----------------------------
Nazwisko 2 | Imie 2 | Ocena | Ocena
----------------------------
Nazwisko 3 | Imie 3 | Ocena
----------------------------
Nazwisko 4 | Imie 4 | Ocena


Wyświetlanie tabeli wygląda następująco:

  1. if(mysql_num_rows($zapytanie) > 0) {
  2. echo "<table cellpadding=\"1\" border=1>";
  3. while($r = mysql_fetch_object($zapytanie)) {
  4. echo "<tr>";
  5. echo "<td>".$r->Nazwisko."</td>";
  6. echo "<td>".$r->Imie."</td>";
  7. echo "<td>".$r->Oceny."</td>";
  8. echo "</tr>";
  9. }
  10. echo "</table>";
  11. }


Niestety nie mogę sobie z tym problemem poradzić by nie powtarzało mi nazwisk i wyświetlało pojedynczo oceny, a wyświetlało jedno nazwisko, imię i kilka ocen obok.
Jeśli ktoś wie w czym tkwi problem to proszę o pomoc.
seth-kk
Cytat(Nemesis @ 2.11.2009, 19:55:24 ) *
...Jeśli ktoś wie w czym tkwi problem to proszę o pomoc.

problem tkwi miedzy klawiatura a siedzeniem winksmiley.jpg
sortuj wyniki po id_uzytkownika i nie domykaj tabeli na koncu while tylko na poczatku jesli kolejny przebieg podaje kolejnego uzytkownika
Nemesis
Wyniki sortuję po Id_uzytkownik, lecz z tym domykaniem tabeli coś nie idzie.
Gdziekolwiek bym tego nie wstawił, rozwala mi całą tabelę lub jej w ogóle nie wyświetla.
Niestety to nadal nie załatwia problemu powtarzających się nazwisk i imion.
InosU31
Nie wiem czy Ci pomoge ale sprobuje napisac jak ja bym probowal ;-)

Otoz:

W tabeli OCENY dodalbym jeszcze jedna kolumne i w niej trzymal id uzytkownikow. Natomiast w tabeli UZYTKOWNICY bym dodal id klasy - bo wydaje mi sie ze warto jakos polaczyc te tabele ze soba. Nastepnie bym zrobil ten warunek ktory dales tylko :

  1.  
  2.  
  3. if(mysql_num_rows($zapytanie) > 0) {
  4. echo "<table cellpadding=\"1\" border=1>";
  5. while($r = mysql_fetch_object($zapytanie)) {
  6. echo "<tr>";
  7. echo "<td>".$r->Nazwisko."</td>";
  8. echo "<td>".$r->Imie."</td>";
  9. $zapytanie2 = mysql_query ("SELECT * FROM oceny WHERE id_usera = \'".$r->Id_uzytkownika."\'");
  10. while ($r = mysql_fetch_object($zapytanie2))
  11. {
  12. echo "<td>".$r->Oceny."</td>";
  13. }
  14. echo "</tr>";
  15. }
  16. echo "</table>";
  17. }
  18.  
  19.  


ewentualnie zamiast drugiero while to moze foreach ? No nie wiem pokombinuj moze cos wymyslisz;-) Nie wiem jak to w praktyce by dzialalo ale teoretycznie bym tak kombinowal;-)

Pozdrawiam

Ps. Acha tylko pierwszy warunek tez musisz zmienic zeby Ci wybral tylko imie i nazwisko usera - zebys wypisal to tylko raz, a mi sie wydaje ze musi byc druga petla do wypisywania ocen (ta ktora dopisalem wyzej) zeby ci dodawalo te pola z ocenami - bo nie kazdy bedzie mial ich tyle samo - chyba ze to dotyczy tylko ocen koncowych to juz troche latwiej bo bys wiedzial ile ich jest.
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.