Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wypisanie ocen jak na kartce z wywiadówki... php z mysql
Forum PHP.pl > Forum > Bazy danych > MySQL
kuba_pilach
Witam.
Mam 3 tabele w bazie...
Jedną na oceny, jedną na przedmioty (wszystkie) i jedną na użytkownika tabeli...
I to moje pliki dodawania:
  1. <?php
  2. // podłączamy plik connection.php
  3. require "connection.php";
  4. // wywołujemy funkcję connection()
  5. connection();
  6.  
  7. ?>
  8. <form action="nowaocena.php" method="post">
  9. <div>
  10. <?php
  11. $zapytanie = mysql_query ("SELECT * FROM Przedmiot ORDER BY ID ASC")
  12. or die('Błąd zapytania: '.mysql_error());
  13.  
  14. echo '<select name="wybranyprzedmiot">';
  15.  
  16. echo '<option value="">Wybierz przedmiot</option>';
  17.  
  18. while($option = mysql_fetch_assoc($zapytanie)) {
  19.  
  20. echo '<option value="'.$option['NAZWA'].'">'.$option['NAZWA'].'</option>';
  21.  
  22. }
  23.  
  24. echo '</select>';
  25. ?>
  26. </div>
  27. <div>
  28. <?php
  29. $zapytaniedwa = mysql_query ("SELECT * FROM Oceny ORDER BY OCENA ASC")
  30. or die('Błąd zapytania: '.mysql_error());
  31.  
  32. echo '<select name="wybranaocena">';
  33.  
  34. echo '<option value="">Wybierz ocenę</option>';
  35.  
  36. while($option = mysql_fetch_assoc($zapytaniedwa)) {
  37.  
  38. echo '<option value="'.$option['OCENA'].'">'.$option['OCENA'].'</option>';
  39.  
  40. }


  1. <?php
  2. // odbieramy dane z formularza
  3. $wybranyprzedmiot = $_POST['wybranyprzedmiot'];
  4. $wybranaocena = $_POST['wybranaocena'];
  5. $data = $_POST['data'];
  6.  
  7. if ($wybranyprzedmiot and $wybranaocena and $data) {
  8.  
  9. // laczymy sie z baza danych
  10. $connection = mysql_connect('mysql.cba.pl', 'uzytkownik', 'haslo')
  11. or die('Brak polaczenia z serwerem MySQL');
  12. $db = mysql_select_db('baza', $connection)
  13. or die('Nie moge polaczyc sie z baza danych');
  14.  
  15. $ins = mysql_query("INSERT INTO d_kuba SET DATA='$data', PRZEDMIOT='$wybranyprzedmiot', OCENA='$wybranaocena'")
  16. or die('Błąd zapytania: '.mysql_error());
  17. if($ins) echo "Przedmiot zostal dodany poprawnie";
  18. else echo "Blad nie udalo sie dodac nowego rekordu";
  19.  
  20. mysql_close($connection);
  21.  
  22. ?>
  23.  
  24. <br />
  25. <from action="glowna.php" method="post">
  26. <input type="submit" value="Wróć" />;
  27. </form>;
  28. <?php
  29. }
  30. ?>


I chciałbym, by się to wyświetlało, jak na wywiadówce kartki rozdają... to znaczy na tym przykładzie:
Kod
PRZEDMIOT  :      OCENY
PRZEDMIOT  :      OCENY
PRZEDMIOT  :      OCENY
itd...


Bardzo proszę o pomoc i powiedzenie, czy tak się wogule da... Dziękuję z góry
thek
By mieć taką możliwość najlepiej podaj nam strukturę tych tabel. Teraz możemy zgadywać co z czym połączyć i jak. Dla tego co proponujesz układów możliwych jest wiele. Taki jest w miarę prosty do implementacji:

Użytkownik: id(primary) i dowolne inne
Przedmioty: id(primary), nazwa
Oceny: id_usera(index), id_przedmiotu(index), ocena

I w takim wypadku mógłbyś zrobić:
  1. SELECT p.nazwa, GROUP_CONCAT(o.ocena) AS lista_ocen FROM Oceny AS o LEFT JOIN Przedmioty AS p ON o.id_przedmiotu = p.id WHERE o.id_usera = ID_USERA_JAKIEGO_OCENY_CHCESZ GROUP BY o.id_przedmiotu
kuba_pilach
Dobra, podaję struktury:
-tabela Oceny:
OCENA

-tabela Przedmiot:
ID
NAZWA

No i miałem jeszcze tabelę jednego użytkownika:
DATA
OCENA
PRZEDMIOT

Tak ja mam, ale chciałbym jeszcze dla innych użytkowników zrobić, więc jak to zrobić?
A i by dodawanie, które podałem zrobić?
thek
A po co trzymać osobną tabelę ocena? Przecież tam będą tylko wpisy od 1 do 6, z ewentualnymi wariacjami w stylu 4+ czy 5- winksmiley.jpg W zasadzie to do tego co Ty masz, wystarczy jeszcze dodać ewentualnie do ostatniej tabeli brakujące id_usera i tabelę user a masz de facto to co ja podałem. Dopasować do tego już istniejący skrypt nie powinno być trudno.
kuba_pilach
Dzięki za pomoc... Ale jak to potem wywołać?
bo robię @zapytanie =mysql_query( i tu to co podałeś) or die('Błąd zapytania');

I co potem?
Dzięki z góry...

A i nie mogę zrobić by id w tabeli user był primary, ponieważ nazwa_użytkownika mam na primary...
Mam zostawić, czy zmienić?
thek
Id zrób primary. User nie jest unikatowy. Jan Kowalski wystąpi pewnie więcej niż raz winksmiley.jpg Ewentualnie możesz tu dać unique jeśli już tak bardzo Ci zależy.

Co do zapytania to w wyniku dostaniesz listę przedmiotów z przypisanymi do tego przedmiotu ocenami. Tak trudno sprawdzić?
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.