![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 26.01.2007 Skąd: Oborniki Ostrzeżenie: (0%) ![]() ![]() |
Witam. Otóż mam prosty skrypcik do edytowania kont użytkowników. Wiadomo - jeden plik z formularzem a drugi wysyłający to wszystko do bazy. No i mam mały problemik z wysłaniem do bazy bo nie wiem za bardzo jak rozwiązać kwestię edytowania. Podaję mój kod:
kawałek z formularzem z pliku 1:
pliczek 2:
Nie wiem czy to przez te wakacje czy co, ale jakoś nie mogę ostatnio za bardzo wymyślić żadnego sensownego rozwiązania... proszę o pomoc Ten post edytował aga323 2.08.2007, 12:03:00 -------------------- ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 175 Pomógł: 12 Dołączył: 28.06.2007 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
rzucilo mi sie w oczy usuwanie uzytkownika po id jesli $id jest puste - masz empty($id) to delete where id='$id'.
No i ja bym w ogole nie ruszal pola id w update. Ten post edytował plurr 2.08.2007, 12:14:27 -------------------- Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe. Albert Einstein |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 11 Dołączył: 1.08.2007 Skąd: Poland,Warsaw Ostrzeżenie: (0%) ![]() ![]() |
Chciałem tylko zauważyć Pani Agnieszko,że zapytanie dla mySQL nie ma żadnych warunków. Otóż akcja update bez warunków ( np. WHERE id=... ) spowoduje zmianę wszystkich wartości w tabeli na te podane w formularzu, chyba,że występują klucze wtedy powinno wyrzucić błąd o próbie duplikowania kluczy w tabeli.
powinno wyglądać tak :
Ponieważ rozumiem,że id jest unikalne Co do usuwania to o ile dobrze pamiętam składnia była
-------------------- Odpowiedź na wszystko : manual,appendix. Ulubiona książka : PHP 5 for Dummies.
Studia uh ? ;-). |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 26.01.2007 Skąd: Oborniki Ostrzeżenie: (0%) ![]() ![]() |
Posłuchałam waszych rad i trochę to pomogło, lecz nie do końca. W tej chwili mogę pięknie edytować ale tylko użytkownika, który znajduje się na końcu listy użytkowników, resztę jak pozmieniam to nie aktualizuje sie w bazie. A usuwanie w tej chwili mi w ogóle nie działa.
-------------------- ![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 11 Dołączył: 1.08.2007 Skąd: Poland,Warsaw Ostrzeżenie: (0%) ![]() ![]() |
Teraz zauważyłem,że tobie się wyświetla cała lista i chciałabyś,żeby zmieniało Ci wszystko naraz ? To chyba niemożliwe.
-------------------- Odpowiedź na wszystko : manual,appendix. Ulubiona książka : PHP 5 for Dummies.
Studia uh ? ;-). |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli pole id to standardowy autoinkrementowany znacznik, to:
Natomiast kasowanie:
Albo samo id, skoro wcześniej przepisujesz do zmiennych Tyle, że u Ciebie id jest podawane z formularza, jeżeli nie jest określone to skąd system ma wiedzieć, który rekord skasować? A jeśli pole id to u Ciebie jakieś inne pole, niezwiązane a autoinkrementem, to musisz (powinnaś) dodać jakieś tego właśnie typu pole... Ten post edytował drPayton 2.08.2007, 14:15:47 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 26.01.2007 Skąd: Oborniki Ostrzeżenie: (0%) ![]() ![]() |
Tylko w sumie za bardzo nie wiem jak dodać, w jakiej formie zrobić to pole, może ktoś miałby jakiś pomysł jak to zrobić?
-------------------- ![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
mozesz teraz zmodyfikowac tabele
Kod ALTER TABLE `nazwa_tabeli` MODIFY id int not null auto_increment i najlepiej zeby to id bylo kluczem glownym w twojej tabeli -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Dodasz jako nowe pole:
Zmienisz istniejące:
Ten post edytował drPayton 2.08.2007, 15:50:40 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 26.01.2007 Skąd: Oborniki Ostrzeżenie: (0%) ![]() ![]() |
e.. bo już się trochę gubię... Mam tak tabela users i w niej pole id tym integer (10) Usigned, not null, auto_increment. Później mam jeszcze jakieś tam dane to są varchary (imię, nazwisko itd.). I mam indeks na id typ unique.
I teraz nie wiem czy mam to dobrze czy coś zmienić...? -------------------- ![]() |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Prawie dobrze, tylko, że nie UNIQUE tylko PRIMARY KEY (chociaż u Ciebie to nie będzie różnicy, to tylko przy relacjach), więc SQL'a zostaw jak jest.
Ale skoro masz autoinkrementowane pole id w tabeli, to ono samo będzie się uzupełniać, wywal to pole z formularza! I wtedy:
A id w formularzu daj najlepiej w polu typu hidden. Czyli:
Tylko, że: 1. Jeśli chcesz edytować tylko jednego użytkownika, to formularz musisz umieścić w pętli razem z tymi polami 2. Jeśli chcesz wszystkich, to napisz, bo wtedy będzie nieco inaczej Ten post edytował drPayton 2.08.2007, 18:29:03 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 26.01.2007 Skąd: Oborniki Ostrzeżenie: (0%) ![]() ![]() |
No interesuje mnie raczej żeby edytować wszystkich. Bo to by było najwygodniejsze, chyba, że byłoby to zbyt trudne do wykonania, bo doświadczenia zbyt dużego to w pisaniu skryptów jeszcze nie mam. Wtedy trzeba by wymyślić inne rozwiązanie
-------------------- ![]() |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Wtedy nazwy pól (name="nazwa") muszą być tabelaryczne, czyli np <input type="text" name="nazwa[]" (...) />
a w skrypcie php po tych polach "jedziesz" pętlą for, czyli np.:
Ten post edytował drPayton 2.08.2007, 20:56:00 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 26.01.2007 Skąd: Oborniki Ostrzeżenie: (0%) ![]() ![]() |
Kurcze, zrobiłam tak jak mówiłeś, ale w tej chwili to już nic mi nie edytuje ani nie usuwa, nawet tego ostatniego...
![]() -------------------- ![]() |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
To co napisałem to idea, nie sprawdzałem jej. Teraz nie mam czasu, jak będę miał a w międzyczasie nie napisze tego nikt inny to wtedy się tym zajmę, sorry.
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Dam ci przykład:
Tutaj jest, jak używam. Masz tutaj edycje (dwa pola, login i hasło) oraz usuwanie. -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 26.01.2007 Skąd: Oborniki Ostrzeżenie: (0%) ![]() ![]() |
A może lepiej byłoby to rozwiązać w inny sposób, bo ten na razie nie działa
![]() -------------------- ![]() |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Cytat Skoro edytowanie wszystkich naraz jest raczej mało możliwe Jest możliwe ;]
A później w drugim pliku zrób sobie:
Wyświetlone wyniki powinny wskazać ci kierunek myślenia. -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 26.01.2007 Skąd: Oborniki Ostrzeżenie: (0%) ![]() ![]() |
Aha, teraz to rzeczywiście trochę jaśniej
![]() -------------------- ![]() |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Cytat czy to edytowanie i usuwani musi być w pętli czy inaczej to rozwiązać? Trzeba trochę przebudować ten plik, tak żeby w pętli aktualizował dane. Rozwiązanie pierwsze: Aktualizuj wszystkie. Wszystkie dane zostaną zaktualizowane, nawet te, które się nie zmieniły. Rozwiązanie drugie: JS. Do każdego wiersza dodać jeszcze jedno pole hidden:
W każdym z pozostałych pól tego wiersza dodać zdarzenie onKeyPress, które zmieni wartość tego pola na "1" Po wysłaniu formularza będzie wiadomo które pola zostały zmodyfikowane (i należy je uaktualnić w bazie), a które nie. Wady: wymaga włączonego JS. -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 04:48 |