Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL]Dzienniczek ucznia, czy nie dało by się lepiej?
cycofiasz
post
Post #1





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


Witam, zrobiłem sobie skrypt dzienniczka ucznia. Zasady działania nie muszę za pewne tłumaczyć smile.gif.

Mam 2 tabele w mysql:




Skliciłem taki oto skrypt:
  1. <?php
  2. echo '<table style="border-collapse: collapse;" border="1">'."\n";
  3. echo ' <caption style="caption-side: top;padding: 2px;"><b>Oceny ucznia nr. 20</b></caption>'."\n";
  4. echo ' <tr align="center"><td width="30"><strong>Lp.</strong></td><td width="200"><strong>PRZEDMIOT</strong></td><td width="200"><strong>OCENY</strong></td>'."\n";
  5.  
  6. // pobieramy listę przedmiotów
  7. $sql_przdmioty = mysql_query ("SELECT `przedm_id`,    `przedm_nazwa` FROM `dzienniczek_przedmioty`");
  8.  
  9. while ($row = mysql_fetch_array($sql_przdmioty))
  10. {    
  11.    $oceny=''; $o=''; //resetowanie zmiennych
  12.    $sql_oceny = mysql_query ("SELECT `ocena_stopien` ,`ocena_waznosc` FROM `dzienniczek_oceny` WHERE `ocena_przedm_id` = '$row[przedm_id]'");
  13.    while ($row2 = mysql_fetch_array($sql_oceny))
  14.    {
  15.        if($row2[ocena_waznosc] == '1') $o = '<span style="color:red">'.$row2[ocena_stopien].'</span>'; // kolorowanie sprawdzienów
  16.        elseif($row2[ocena_waznosc] == '2') $o = '<span style="color:blue">'.$row2[ocena_stopien].'</span>'; //kolorowanie innych ocen
  17.        $oceny .= $o.', ';
  18.    }
  19.    
  20.    echo " <tr><td>$row[przedm_id]</td><td>$row[przedm_nazwa]</td><td>$oceny</td></tr>\n";
  21. }
  22.  
  23. echo '</table>'."\n";
  24. ?>


co dało taki rezultat (taki jak ma być)




Jak zauważyliście skrypt ten pobiera najpierw listę przedmiotów i podczas każdego przebiegu pętli jest wykonywane zapytanie o oceny do tego przedmiotu... Nie wydaje się wam się też że to jest nieoptymalne? Jak pobrać to wszystko bez zawierania w pętlach zapytań do sql?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 19.08.2025 - 15:35