![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 5.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam problem ze zmianą pól w bazie, dla wielu rekordów. Wyświetlam w formularzu rekordy z bazy i dla każdego z nich chce zmieniać jedno pole. Nie wiem jak powiązać to pole z rekordem, skoro w formularzu nie wpisuje danych i do zmiennej wrzucam pustą wartość.
Wyświetlam imie i nazwisko i chce zmienic nieobecnosci. Proszę o pomoc ![]()
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 29.05.2006 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Nie bardzo Cię rozumiem. Ty chcesz żeby na jedej stronie zmieniać pole nieobecności dla wielu uczniów?
Jeżeli tak to ja to zrobiłbym tak, że przy polu "nieobecności" dopisałbym nazwisko ucznia czyli Kod <input type=tekst name=nieobecnosci_$row["nazwisko"]> Potem sprawdziłbym czy pola te są wypełnione (czyli funkcją empty). Jeżeli tak to wysłać należy do bazy, jeżeli nie to kolejny rekord (wszystko w pętli. PS. Jeżeli robisz echo w cudzysłowach (") to nie musisz stosować kropek dla zmiennych. Robi się tak dla apostrofów (') co jest szybszą metodą. -------------------- [gg:8166107][jid:mmatheww@jabberpl.org][mail:mat.wojcik[at]gmail.com][www: http://mwojcik.pl]
|
|
|
-Gość- |
![]()
Post
#3
|
Goście ![]() |
Mozna jeszcze zrobic za pomoca przekazywania tablicy wszystkich nieobecnosci przez POST i potem przy uzyciu foreach iterowac po tej tablicy. Tylko do tego trzeba jeszcze dodac jakis atrybut hidden okreslajacy danego ucznia (np. id), zeby podczas update wiedziec do jakiego ucznia dana nieobecnosc sie odnosi (bo u ciebie nie przekazujesz POSTem nazwiska ani imienia, a w UPDATE masz WHERE nazwisko='$nazwisko').
Jak ci sie uda to napisac to zapostuj tutaj, bo z checia zobacze jak to rozwiazalas. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 5.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
nie chodzi mi o odhaczenie nieobecności tylko wprowadzenie ilości dni nieobecności dla poszczególnych dzieci...... Lista dzieci i kolumna z polem "ilość nieobecności" przy każdym nazwisku. Pomóżcie.......
![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 30.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze masz źle zaprojektowaną bazę, jeśli miałabyś pole (będące nota bene kluczem głównym) `id` dla każdego ucznia, to ułatwiłoby Ci to choćby zmianę rekordów (no i byłoby lepsze ponieważ porównywanie wartości liczbowych jest szybsze niż ciągów znaków).
Po drugie pole:
proponuję zamienić na (po prowadzeniu pola id
dodanie pola VALUE spowoduje, że do pola tekstowego wpisywana będzie na starcie wartość tego pola z bazy co jest chyba lepszym rozwiązaniem niż podawanie obok poprzedniej wartości. Po trzecie jeśli już chcesz mieć osobny przycisk submit dla każdego pola to powinien on wyglądać mniej więcej tak:
Co spowoduje że każdemu przyciskowi i polu przypisanie zostanie id ucznia którego dane chcemy zmienić. Przykładowy kod obsługujący formularz mógłby wyglądać następująco:
Jak jeszcze coś jest niejasne to pytaj. |
|
|
-Gość- |
![]()
Post
#6
|
Goście ![]() |
@KG - nie mozna przeciez kliknac 2 przyciskow submit na jednej stronie za jednym razem, wiec wedlug mnie iterowanie po tablicy $_POST['submit'] jest zbedne.
Ja to bym zrobil mniej wiecej tak (na podstawie Twojego kodu):
i pozniej :
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 30.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tak i nie.
Twój przykład zakłada istnieje jednego przycisku submit który następnie iteruje po wszystkich polach nieobecności i wpisuje je do bazy. Z treści i kodu z pierwszego postu wywnioskowałem, że formularz składa się z wielu przycisków submit umieszczonych przy każdym polu tekstowym i wciśnięcie danego przycisku aktualizuje tylko dane pole, a konkretnie to które stało obok wciśniętego przycisku. Zgadzam się że tylko jeden przycisk może zostać wciśnięty, ale cała tablica $_POST['submit'] o której piszesz składa się tak naprawdę tylko z jednego pola (lub nie składa się z żadnego w przypadku gdy akcja jest inna niż wyslanie formularza przez POST), właśnie tego, które określa jaki przycisk był wciśnięty. Robimy więc foreach z dwóch powodów: 1) jeśli formularz nie został wysłany tylko odczytany to tablica będzie pusta i kod dodawania do bazy nie wykona się 2) robiąc foreach mamy pewność że używamy właściwego klucza do wstawienia odpowiedniego pola do bazy pod odpowiednim id. Można oba powyższe cele osiągnąć jeszcze na inne sposoby ale to było najprostsze i najbardziej intuicyjne co przyszło mi do głowy. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 5.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Idealnieby by było, gdyby był jeden przycisk "zmień" tak zakładałam na początku, ale nie poradziłam sobie i zaczęłam kombinować :/ (jestem początkująca)
Zabieram się do przerabiania kodu wg Waszych rad. Dzięki |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 30.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Z Twojego wcześniejszego kodu (fragment):
Cytat while ($row=mysql_fetch_array($result)) { echo "<div align='center'><input type=submit value='zmien'></div>"; } Można jednoznacznie wywnioskować że dla każdego rekordu pobranego z tablicy będzie osobny przycisk. W przypadku jednego przycisku submit musisz umieścić go za pętlą while i w takim przypadku kod sprawdzający z postu #6 (po poprawieniu jednej literówki) powinien przynieść oczekiwane rezultaty. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 5.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Z Waszą pomocą zrobiłam tak jak zakładałam na samym początku, jeden "zmień" i zapisuje wszystkie rekordy.
Bardzo dziękuję za pomoc ![]() |
|
|
-Gość- |
![]()
Post
#11
|
Goście ![]() |
A moglabys caly kod Twoj tutaj wkleic ? Dla potomnych
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.07.2025 - 18:48 |