Wątek zablokowany 2014-10-17 08:33 przez dzek69.

Wyświetlanie ocen każdego przedmiotu

0

Hej! :)

Mam problem z wyświetlaniem ocen dla każdego przedmiotu w dzienniku elektronicznym, który piszę.

Mam bazę danych "oceny" w których są dwie tabele: "id_przedm" i "ocena".
Admin może dodawać oceny do bazy. Po kilku dodanych ocenach wygląda to tak:

id_przedm ocena
1 3
2 5
1 2
2 4
3 5

Umiem wyświetlić na stronie to co jest powyżej, ale ja chciałbym, żeby oceny wyświetliły się jedna obok drugiej dla każdego z id_przedm, czyli wynik na stronie ma być taki:

id_przedm ocena
1 3 2
2 5 4
3 5

Nie bardzo wiem jak to zrobić. Pomoże ktoś?

Z góry dziękuję.

0

Sry za pseudokod ale nie pisze z kompa

Rekordy = mysql_query.... - tak jak pewnie masz

Pogrupowane = array();
While rekord = mysqlfetchassoc(Rekordy)
Pogrupowane[rekord[id]] += rekord[ocena]

Foreach(Pogrupowane as klucz=>wiersz)
Echo klucz;
Foreach(wiersz as ocena)
Echo ocena;

0

Na mój gust to tak by wyglądało

 $tablica = mysql_query("select id,ocena from tabela order by id");
    while ($tablica2 = mysql_fetch_array($tablica) ) {
      $id = $tablica2[0];
      print $id;
      $rekord = mysql_query("select id,ocena from tabela where id = '$id' ");
      while ($rekord2 = mysql_fetch_array($rekord) ) {
          print $rekord2[1] . " ";

      }
      print "<br>";

    }

Nie wykonywałem skryptu więc jesli będzie jakiś błąd to proszę poprawić.

0

Hej,

Dzięki za odpowiedź. Teraz jest taki problem, że bez względu na to z jakiego ucznia się zaloguje, to wyświetlają mi się wszystkie oceny, a nie oceny danego ucznia.
Dodałem do bazy z ocenami "id_ucz", czyli id_ucznia.

W tabeli "uczen" również mam id_ucz, czyli właściwie to id_ucz to już po zalogowaniu powinienem sobie chyba jakoś odczytać i później w zapytaniu bazy dodać zwyczajnie

$wynik1 = mysql_query("select * from oceny WHERE id_przedm='$id' and id_ucz='$id_ucz' ");

ale jakoś nie wiem jak to zrobić :p

0

Ok. Z powyższym problemem sobie poradziłem. Dzięki za pomoc.

Mam kolejny problem.
Jestem na poziomie nauczyciela, czyli dodawanie ocen. Skrypt ma działać w taki sposób że:

  1. Wpisujemy klasę
    1a. Wyświetla nam się lista klasy: Imię Nawisko PoleTekstowe na ocenę Button:"Dodaj"
    1b. Wpisujemy ocenę, naciskamy dodaj i do tabeli: "oceny" dodana zostaje ocena, imię i nazwisko ucznia, któremu daliśmy ocenę.

Mam problem z dodaniem do tabeli imienia i nazwiska. Kod wygląda tak:

echo '<form action="" method="post">
Wpisz klasę: <input type="text" name="klasa" />
<input type="submit" value="OK" name="submit"/>  
</form>';
$ok = $_POST['submit'];
$klasa = $_POST['klasa'];
if ($ok) { 
 echo "<h3>Lista klasy: ".$klasa."</h3>";
	$wynik1 = mysql_query("select * from uczen WHERE klasa='$klasa' ");
	echo '<form action="" method="post">';
				while($r1 = mysql_fetch_array($wynik1)) {
					echo "<td>".$r1['imie']."&emsp;</td>";
					echo "<td>".$r1['nazwisko']."&emsp;</td>";
					echo 'Ocena: <input type="text" name="ocena" maxlength="2" size="2" /> 
								<input type="submit" value="Dodaj" name="dodaj" />';
					}
					

} else { // jeśli nie...
    echo "Wypisz klasę (Małe litery) np. 1a"; 
}
	$dodaj = $_POST['dodaj'];
	if($dodaj)
        {
						//echo "dodano ocenę!";
						//$zapytanie = "insert into oceny (imie, nazwisko, ocena) values ('$imie', '$nazwisko', '$ocena')"; 
						//$dod = mysql_query($zapytanie);
	}					 

Nie za bardzo wiem jak mam to rozwiązać.

Z góry dzięki za poświęcony czas i odpowiedź :)

0
                         //echo "dodano ocenę!";
                        //$zapytanie = "insert into oceny (imie, nazwisko, ocena) values ('$imie', '$nazwisko', '$ocena')"; 
                        //$dod = mysql_query($zapytanie);

Jeżeli ten zakomentowany kod odpowiada za dodawanie ocen i imion to powinien moim zdaniem wyglądać tak

              
$imie = $r1['imie'];
$nazwisko = $r1['nazwisko'];
$ocena = $_POST['ocena'];
           echo "dodano ocenę!";
                        $zapytanie = "insert into oceny (imie, nazwisko, ocena) values ('$imie', '$nazwisko', '$ocena')"; 
                        $dod = mysql_query($zapytanie);
0

Hej :)

Właśnie też tak kombinowałem, ale do bazy danych dodaje się wtedy tylko ocena.
Nie dziwi mnie to, bo zmienna "r1" jest zmienną wewnętrzną w pętli while i poza nią raczej nie zadziała (przynajmniej w C++ tak by było :p)
Może jakiś inny pomysł ? :)

1

Może w tym kawałku kodu

                 while($r1 = mysql_fetch_array($wynik1)) {
                    echo "<td>".$r1['imie']."&emsp;</td>";
                    echo "<td>".$r1['nazwisko']."&emsp;</td>";
                    echo 'Ocena: <input type="text" name="ocena" maxlength="2" size="2" /> 
                                <input type="submit" value="Dodaj" name="dodaj" />';
                    }

byś wprowadził takie coś

                 while($r1 = mysql_fetch_array($wynik1)) {
                    echo "<td>".$r1['imie']."&emsp;</td>";
                    echo "<td>".$r1['nazwisko']."&emsp;</td>";
                    echo 'Ocena: <input type="text" name="ocena" maxlength="2" size="2" /> 
                                 <input type=hidden name=imie value=$r1[\'imie\']>
                                 <input type=hidden name=nazwisko value=$r1[\'nazwisko\']>
                                <input type="submit" value="Dodaj" name="dodaj" />';
                    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1