![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
W ramach nauki programowania zacząłem pisać formularz który może pomóc mi wykonywać codzienne obliczenia, znudził mi sie excel a jak to ogarnę to spróbuję jeszcze dopisać zapis i odczyt z bazy danych.
Mam to: https://jsfiddle.net/mq3da7kb/3/
Wiersz Line ma sie powielać gdy przyciśniemy na + natomiast Weight ma występować tylko raz ponieważ będzie identyczny dla każdego Line, a Total percent ma zliczać z każdego Line wartości. Potrzebuje nakierowania jak dodać możliwość powielania wierszy? Za pewne będę musiał przerobić skrypt i dodać jakąś inkrementacje dla każdego id żeby dobrze zliczało każdą linię oddzielnie? Macie może jakieś przykłady takiego formularza albo coś na czym mógłbym się uczyć? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Ustawiasz pierwszą linię w jakimś divie, wrzucasz go do zmiennej np linesdiv, przycisk z plusikiem też niech ma jakiś id np addline, robisz z niego link i dodajesz coś typu: ( i to licznik linii )
Oczywiście potem musisz jeszcze zliczać ze wszystkich linii. Ten post edytował pmir13 15.02.2017, 00:03:20 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
@pmir13: Halo, halo. Jest 2017 rok, live już dawno nie istnieje.
Możesz też klonować element - clone(); A przede wszystkim to powinieneś uporządkować html. id nie mogą być dla linii bo będą się powtarzać, zamień na klasu. weight może pozostać. plusa opakuj w jakiś dodatkowy element (może button) żeby podpiąć zdarzenie. https://jsfiddle.net/mq3da7kb/4/ Ten post edytował viking 15.02.2017, 08:24:32 -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc, @viking trochę przerobiłem to co napisałeś. Wsadziłem wszystko w form dodałem ukrytego inputa który ma sie powielać zamiast ostatniego i teraz próbuję dopisać obsługę zliczania ale nie wiem czemu zlicza mi tylko z pierwszego inputa: https://jsfiddle.net/mq3da7kb/6/
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Inputy są dodawane dynamicznie a ty wybierasz jeden przed dodaniem dynamicznie kolejnych. Dlaczego delegate skoro jest to przestarzała metoda?
Poza tym już to wszystko masz. Po co ponownie przypinać kolejne identyczne prawie zdarzenia (change jest na utratę focusa)? https://jsfiddle.net/mq3da7kb/7/ Ten post edytował viking 15.02.2017, 20:53:24 -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc mam pytanie odnośnie struktury pliku czy da się to łatwo zapisać do bazy danych? Generalnie chce zrobić opcje dodawania formularzy i ich zapisu do bazy, każdy formularz może posiadać nieokreśloną liczbę linii i trzeba je jakoś jeszcze rozróżnić żeby się to później dało odczytać.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) ![]() ![]() |
Dzięki za pomoc mam pytanie odnośnie struktury pliku czy da się to łatwo zapisać do bazy danych? Generalnie chce zrobić opcje dodawania formularzy i ich zapisu do bazy, każdy formularz może posiadać nieokreśloną liczbę linii i trzeba je jakoś jeszcze rozróżnić żeby się to później dało odczytać. Jezeli chodzi ci o to zeby ustawienia formularzy (jakie maja pole itd) miec w bazie to możesz zrobic tabele w ktorej masz fomularz
tabela_pol
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi mi o to że klikając na znak + tworzy się kolejne inputy które są identyczn a różnią się tylko wartością, oraz tym że nigdy nie wiadomo z góry ile ich będzie więc raczej nie będzie to prosty zapis do bazy gdzie z góry mogę sobie zdefiniować jakie to pola.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma żadnej rożnicy czy pole jest jedno czy 20. Będziesz miał te dane w POST. Może najpierw "na sucho" przećwicz podstawowe operacje na bazie.
-------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Próba zapisu do bazy nie powiodła się sukcesem z dwóch powodów, pierwszy jest taki że total nie jest inputem więc w bazie jest zapisywany NULL, a drugi powód jest taki że przy kilku liniach jest zapisywana tylko jedna czyli ta z ostatniego li.
Kod który wykorzystuje do zapisania w bazie wygląda następująco:
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) ![]() ![]() |
A możesz pokazać co masz w momencie zapisu w POST?
Jesteś pewien, że każde pole jakie przekazujesz ma innego name? |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Po co wywołujesz create dla każdego odwołania? Nie ma też sensu przypisywanie zmiennych post do zmiennych skoro nigdzie tego nie używasz później. Oczywistym jest też że skoro wszystkie mają takie samo name to będą nadpisane. Myślałem że trochę pomyślisz sam i wstawisz tam np tablicę wartości [].
-------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Ok, teraz są przekazywane w tablicy tylko jak to zapisać do bazy? Gdy próbuję tak:
To zapisuje sie do bazy tylko wartości z additional natomiast te z percent już nie. W powyższym kodzie zamieniłem to
na to
I teraz zapisuje do bazy natomiast nie w sposób chciany gdy np. uzupełnię 2 linie + trzecia linia ukryta to w bazie powinno być 3 wpisy natomiast jest ich 9. Powinno być np.: |0|0|- ukryty input |1|3|- wartości z inputa 1 |2|4|- wartości z inputa 2 a robi mi kombinacje wszystkich: |0|0| |0|3| |0|4| |1|0| |1|3| |1|4| |2|0| |2|3| |2|4| |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
No i słusznie. Nauczyłeś się jak działa podwójny foreach. Naprawdę, pomyśl trochę. Nikt nie będzie za ciebie ciągle kodu pisał. Ja bym tam wstawił 1 for i wykorzystał licznik.
-------------------- |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
EDIT.
Ogarnąłem swój błąd i idę dalej, zapis zrobiłem tak:
Pytanie jeszcze odnośnie zamiany w inpucie znaku przecinka na kropkę gdy dodam w inpucie onChange="this.value=this.value.replace(/,/g, '.');" wtedy wynik jest NaN. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Podstawowy błąd początkującego. Przy każdym przebiegu pętli liczysz od nowa elementy tablicy: ... onChange="... Po co pchasz w html zdarzenia skoro masz je ładnie wydzielone? Żeby później szukać w szablonach kodu js? https://jsfiddle.net/mq3da7kb/8/ -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 03:14 |