Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/mysql]Oceny w tabeli
aga323
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Witam. Robię dzienniczek ucznia. Logowanie, uprawnienia, zarządzanie itd. mam zrobione, tylko teraz meczę sie nad wyświetleniem ocen danego ucznia. Chcę aby wyglądało to mniej więcej tak:
Imię nazwisko
j.polski: 5,3,5,1,4,5
j.niemiecki: 5,4,6,2
matematyka: 3,6,5,6,6
historia: 4,1,1,2,3
itd.

Może przedstawię kawałek kodu, który napisałam.
  1. <?php
  2.  
  3. $sql_conn = mysql_connect("", "", "")
  4. or die (mysql_error());
  5.  
  6.  
  7. or die (mysql_error());
  8. ?>
  9.  
  10. <?php
  11. $oceny = mysql_query("SELECT * FROM przedmioty p right join oceny o on p.id_przedmiotu=o.id_przed
    miotu WHERE o.id_ucznia= 1"
    )
  12. while ($row = mysql_fetch_array($oceny)) {
  13. echo $row['nazwa_przedmiotu'];
  14.  
  15. echo $row['oceny']; 
  16. }
  17. ?>

I po wyświetleniu strony pokazuję mi się:
W - FW - FW - FHistoriaHistoria
Ewentualnie po małych zmianach może pokazywać się
W-F:4, W-F:5, Historia:4 itd.
Ale nie wiem co zrobić żeby mi się wyświetlało tak jak przedstawiłam na początku.
Proszę o pomoc, bo już nie wiem co mam zrobić... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
=kokos=
post
Post #2





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 6.08.2006

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


  1. <?php
  2.  
  3. $przedmioty = mysql_query("SELECT * FROM przedmioty;");
  4.  
  5. while($row = mysql_fetch_assoc($przedmioty)) {
  6.  
  7. echo '<br />'.$row['nazwa_przedmiotu'].': ';
  8. $id = $row['id_przedmiotu'];
  9.  
  10. $oceny = mysql_query("SELECT ocena FROM oceny WHERE oceny.id_ucznia=(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)  AND oceny.id_przedmiotu=$id;"); 
  11. // tam gdzie znaki zapytania wstaw jakaś zmienną sesyjną, którą przypisujesz podcz
    as logowania.
  12.  
  13. while($wiersz = mysql_fetch_assoc($oceny)) {
  14.  
  15. echo $wiersz['ocena'].', ';
  16.  
  17. }
  18. }
  19.  
  20. ?>
Go to the top of the page
+Quote Post
rojmarek
post
Post #3





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 10.09.2005

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


Cytat(=kokos= @ 29.04.2007, 23:57:18 ) *
  1. <?php
  2.  
  3. $przedmioty = mysql_query("SELECT * FROM przedmioty;");
  4.  
  5. while($row = mysql_fetch_assoc($przedmioty)) {
  6.  
  7. echo '<br />'.$row['nazwa_przedmiotu'].': ';
  8. $id = $row['id_przedmiotu'];
  9.  
  10. $oceny = mysql_query("SELECT ocena FROM oceny WHERE oceny.id_ucznia=(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)  AND oceny.id_przedmiotu=$id;"); 
  11. // tam gdzie znaki zapytania wstaw jakaś zmienną sesyjną, którą przypisujesz podcz
    as logowania.
  12.  
  13. while($wiersz = mysql_fetch_assoc($oceny)) {
  14.  
  15. echo $wiersz['ocena'].', ';
  16.  
  17. }
  18. }
  19.  
  20. ?>

takie rozwiązanie nie jest niestety optymalne... przy 40 przedmiotach wygeneruje to 41 zapytań.. zapytanie
  1. SELECT * FROM `oceny` LEFT JOIN `przedmioty`
  2. ON `przedmioty`.`id_przedmiotu`=`oceny`.`id_przedmiotu`
co wygeneruje niezłą tabelke
albo 2 zapytania
  1. SELECT * FROM przedmioty;

i
  1. SELECT * FROM `oceny` ORDER BY `przedmiot_id`

teraz wrzucasz `przedmioty` do jednej tabelki, po id, i lecisz przez `oceny`, i jeżeli aktualne id_przedmiotu jest inne niż poprzednie to wypisujesz nazwe przedmiotu
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 09:33