![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
Muszę stworzyć dynamicznie kilka tabel, których nazwa będzie zależna od ID dodawanego wiersza do innej tabeli.
W warunku if dodałem zmienną
Poza warunkiem if dodałem instrukcję:
Niestety nowa tabela nie jest utworzona (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif) . Co robię źle?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Pozdrawiam dgaleza |
|
|
|
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
$id to liczba? Nazwa tabeli nie moze byc liczbą.
Proponuje jednak zmiane struktury. Jedna tabela, ktora zawiera to co kazda tabela co chcesz stworzyc, ale dodac pole identyfikujace ucznia i juz. PO co dla kazdego walic inna tabele? |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
Z początku też myślałem, że nazwą tabeli nie może być liczba, ale się okazało przy ręcznym tworzeniu tabeli, że jest w stanie taką właśnie tabelę stworzyć.
Zmienię $id na $przedmiot. Wtedy nazwa tabeli będzie równoznaczna z nazwą przedmiotu który obsługuje. Nie tworzę osobnych tabel dla każdego ucznia, tylko dla kazdego przedmiotu. Przedmioty dodaje się na specjalnej liście wraz z nazwiskami nauczycieli. Chciałem, by podczas tworzenia przedmiotu tworzyła się tabela o nazwie=ID dodawanego wiersza Spróbuję zmienić tą nazwę tabeli i opisze swoje poczynania. Poprawiłem, ale i tak nie działa (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif) Wygląda to tak:
|
|
|
|
Post
#4
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Cytat Z początku też myślałem, że nazwą tabeli nie może być liczba, ale się okazało przy ręcznym tworzeniu tabeli, że jest w stanie taką właśnie tabelę stworzyć. hmmm, mi nie byl w stanie tego stworzyc.Cytat Nie tworzę osobnych tabel dla każdego ucznia, tylko dla kazdego przedmiotu. Chodzilo mi bardziej o idee, a nie oto czy to osobna tabela na ucznia czy na przedmiot.Po co tworzyc osobne tabele na cos, co mozna w jednej zapisac? Tak sie nie robi. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 3.05.2005 Ostrzeżenie: (10%)
|
A oplaczyles sie z baza danych i wybrales odpowiednia baze?
Ten post edytował qbatoja 29.09.2006, 13:24:16 |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
Łącze się z bazą danych, ponieważ dodaję rekordy do tabeli. I właśnie przy tym dodawaniu chciałem, by program tworzył dynamicznie tabele. Niestety tak się nie dzieje. Strona jest na serwerze altnet.pl
|
|
|
|
Post
#7
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%)
|
Jaki blad zwraca? Trudno stwierdzic co Ci nie dziala. Jak juz ktos wile razy powtarzal nie jestesmy wrozkami zeby takie rzeczy wiedziec.
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 25.09.2006 Ostrzeżenie: (0%)
|
1. Tak jak napisal nospor, liczba nie moze byc nazwa tabeli!
2. Powinno byc:
Naucz sie wyswietlac bledy (mysql_error() oraz error_reporting( E_ALL )), a nie bedziesz mial tylu problemow. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
PANOWIE!!! Działa. Musiałem dodać mysql_query w warunku if!!!
Powracając do zapisywania danych w jednej tabeli, to powiedz w jaki sposób dynamicznie tworzyć kolumny?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Jak narazie wszystko działa!!! Wznawiam prace (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) A wszystkim dziękuję za odpowiedzi. Bardzo profesjonalne forum Już znalazłem odpowiedź na swoje pytanie. Tylko czy tak rzeczywiście powinienem zrobić. Tzn. jedna tabela, a następnie dodawanie kolumn za pomocą polecenia. Czy będzie szybciej i prościej?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
|
|
|
|
Post
#10
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Cytat Powracając do zapisywania danych w jednej tabeli, to powiedz w jaki sposób dynamicznie tworzyć kolumny? A kto ci kazal tworzyc dynamicznie kolumny? Kazdy nowy przedmiot to nowy rekord a nie nowa kolumna. a rekordy to przy pomocy "insert" sie wklada (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
Ja myślałem o czymś takim:
+---------------+---------------+------------+ | przedmiot1| przedmiot2| uczen_ID| +---------------+---------------+------------+ | oceny1.......|oceny2.........|35.............| +---------------+---------------+------------+ Stąd właśnie dynamiczne tworzenie kolumn. W ten sposób będzie chyba łatwiej wyświetlić dane |
|
|
|
Post
#12
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
a ja myslalem o takiej:
Kod idUcznia | idPrzedmiotu | ocena I kazdy rekord w tej tabeli opisuje jedna ocene dla konkretnego ucznia z konkretnego przedmiotu |
|
|
|
Post
#13
|
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%)
|
dgaleza: poprzegladaj jakies proste przykladowe projekty poprawnych (4p (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) baz danych, poczytaj o normalizacji -- bo to co chciales stworzyc to jest porazka (dobra droge ci nospor wskazal -- tabele: uczen, przedmiot, oceny_z_przedmiotu, itd). Kolumny TEXT do wszystkich wartosci?? po co?
|
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
a ja myslalem o takiej: Kod idUcznia | idPrzedmiotu | ocena I kazdy rekord w tej tabeli opisuje jedna ocene dla konkretnego ucznia z konkretnego przedmiotu Ja również myślałem o tabeli tego typu, tylko czy to nie będzie marnotrawienie pamięci. Dajmy na to mamy 16 przedmiotów po 8 ocen z każdego i 35 uczniów. 16*8*35=4480!!! Wersja z kolumnami, gdzie oceny są wpisywane po przecinku: 16*35=560 Spora różnica. Prawda?? |
|
|
|
Post
#15
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
No, roznica spora, ale nie zawsze o roznice chodzi (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Od biedy mozesz zrobic tak: Kod idUcznia | idPrzedmiotu | oceny gdzie oceny bedzie zawieralo oceny odzielone srednikami dla danego ucznia z danego przedmiotu. Akurat oceny w tym wypadku wydaja sie nie byc kluczowym elementem, jesli chodzi o jakies analizy czy tez wyszukiwania. No chyba ze jednak bedziesz robil jakies statystyki na ocenach, to jednak polecam rozbice tego na oddzielne rekordy jak na poczatku zaproponowalem |
|
|
|
Post
#16
|
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%)
|
dgaleza: roznica jest prawie 10krotna, ale i tak taka baze zmiescilbys na DYSKIETCE! a miejsca masz zapewne duzo wiecej.
Gdy bedziesz mial znormalizowana baze to Cytat No chyba ze jednak bedziesz robil jakies statystyki na ocenach, to jednak polecam rozbice tego na oddzielne rekordy jak na poczatku zaproponowalem Bedzie duzo prostrze niz babranie sie z przecinkami/srednikami. |
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
To mały paradoks, ale jesteś bardziej doświadczony ode mnie i rzeczywiście ten pomysł jest bardzo dobry. Miałem zamiar dodać jeszcze jedną kolumnę o nazwie srednia, gdzie podczas dodawania oceny bylaby na biezaco obliczana srednia i nastepnie wyswietlana za pomoca txt i grafiki. Ale to juz mniejsza z tym.
Jeszcze raz dziękuję za odpowiedzi. |
|
|
|
Post
#18
|
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 3.05.2005 Ostrzeżenie: (10%)
|
oni maja racje ziomus, jakbys mial wykonywac operacje na srringu z liczbami odzielonymi przecinkami, to marnujesz zasoby. mniesjza o to. powo ;]
|
|
|
|
Post
#19
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%)
|
Cytat Miałem zamiar dodać jeszcze jedną kolumnę o nazwie srednia, gdzie podczas dodawania oceny bylaby na biezaco obliczana srednia i nastepnie wyswietlana za pomoca txt i grafiki. Ale to juz mniejsza z tym. Srednia zawsze mozesz w locie obliczac |
|
|
|
Post
#20
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
Więc podsumujmy temat:
Czy lepiej tworzyć tabelę każda ocena w jednym rekordzie, czy wiele ocen w rekordzie?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Którą z wyżej wymienionych opcji będzie łatwiej edytować i wyświetlać?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Średniej nie chciałbym obliczać w locie, bo jak program zinterpretuje "5+"?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Wiecie co Panowie. Robię tabele z jedną oceną w rekordzie, a oceny będę szyfrował. Tzn: przy wysyłaniu ocena nie jest zapisywana jako 5+ tylko 5.5. Następnie przy odczycie spradzenie czy jest ".", następnie czy po . jest 5 - jeśli tak +, elseif (czy po kropce jest 75) - |
|
|
|
Post
#21
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%)
|
Hm 5+ = 5.5 to skad bedziesz wiedzial ze jest -6 ?
|
|
|
|
Post
#22
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
"+" w średniej szkolnej oznacza +0.5 pkt
"-" zaś oznacza -0.25pkt |
|
|
|
Post
#23
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Cytat Robię tabele z jedną oceną w rekordzie, a oceny będę szyfrował "Szyfrowal" - jak to powaznie brzmi (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ok, wydaje sie to sensowne rozwiązanie. Cytat elseif (czy po kropce jest 75) - No i oczywiscie wowczas cyfre przed kropką trzeba zwiększyc o jeden. bo przecez 5.75 to jest 6- a nie 5- |
|
|
|
Post
#24
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
Teraz zastanawiam się tylko nad nie przygotowaniami. Wymyśliłem takie coś.
Po wejściu na stronę ocen danego ucznia warunek sprawdzałby czy z tego przedmiotu, dany uczeń ma nieprzygotowania (czyli czy jest wiersz dotyczący tego ucznia), jeżeli nie to tworzy wiersz z wartością 0 (0 zgłoszonych nie przygotowań). Następnie można edytować ten wiersz. Chyba dobre rozwiązanie?? Prawda?? |
|
|
|
Post
#25
|
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 28.09.2006 Ostrzeżenie: (0%)
|
ojejku
strukture bazy danych zawsze tworzy sie z mysla o optymalizacji, jak chodzi o miejsce i o dalsza prace z baza Struktura bazy powinna byc tak zorganizowana, aby kazda zmiane robic w jednym miejscu. Dodajesz 1 rekord w tabeli przedmiot i gotowe, wszystko dziala. Przy Twoim pomysle poczatkowym ile pracy nalezaloby dodac aby zmienic np. nazwe jakiegos przemiotu lub inaczej modyfikowac rekordy - duzo, a i po co. Po to wymyslono relacyjne bazy danych, aby ulatwic sobie zycie. W innym przypadku dalej mozemy je trzymac na np. pliku tekstowym. zrob sobie tak: tabela przedmioty ID_Przedmiot, nazwa, .... i inne dane zwiazane z 1 przemiotem tabela Uczniowie ID_Uczen, imie, nazwisko, srednia ocen, ...... tabela oceny ID_Uczen, ID_Przedmiot, ocena pomysl z zamiana oceny 5+ na 5.5 jest b.dobry, pomoze Ci to przy liczeniu sredniej. Aha, a i po co "parsowac" tekst, tzn. sprawdzac czy jest kropka czy jej nie ma, nie lepiej Ci porownywac liczby? ocena ==5.5, badz ocena > 5.5 itd aha, i pamietaj o kluczach na tabelach (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#26
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
Wydaje mi się, że prościej będzie wykorzystać funkcję z "rozszyfrowaniem" (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ocen. Tak trzeba byłoby skorzystać np. z case. A funkcja będzie bardziej plastyczna.
|
|
|
|
Post
#27
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%)
|
Cytat Wydaje mi się, że prościej będzie wykorzystać funkcję z "rozszyfrowaniem" (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ocen. Tak trzeba byłoby skorzystać np. z case. A funkcja będzie bardziej plastyczna. A przeliczanie jakich kolwiek statystyk bedzie trwalo godzinami (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
|
Post
#28
|
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 29.09.2006 Ostrzeżenie: (0%)
|
A przeliczanie jakich kolwiek statystyk bedzie trwalo godzinami (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Nie sądze,by przy użyciu "szyfrowania" trwalo to zbyt długo. A poza tym niby jakie to miałby być statyski?? Jedyną statyską to średnia. |
|
|
|
Post
#29
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%)
|
Jesli zakladasz ze to kilka rekordow to nie ma znaczenia a jesli w gre wchodza rekordu rzedu kilku milionow to kazda operacja przeliczania narzuca pewien czas.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 21.12.2025 - 19:05 |