Forum hosting 4un.eu
zmiany w rekordzie tabeli, uzupełnianie danych - Wersja do druku

+- Forum hosting 4un.eu (http://www.4un.eu/forum)
+-- Dział: Inne (/Forum-Inne)
+--- Dział: Tworzenie stron (/Forum-Tworzenie-stron)
+---- Dział: MySQL (/Forum-MySQL)
+---- Wątek: zmiany w rekordzie tabeli, uzupełnianie danych (/Thread-zmiany-w-rekordzie-tabeli-uzupe%C5%82nianie-danych)



zmiany w rekordzie tabeli, uzupełnianie danych - deros - 04-16-2012 06:49 PM

Czasami zachodzi potrzeba zmiany danych w rekordzie tabeli, np. zmieniliśmy cenę w naszym sklepiku internetowym lub
jakieś dane zostały źle wpisane. Co zrobić w takim przypadku?

Najlepiej uaktualnić rekord służy do tego polecenie SQL:
UPDATE x SET y=z WHERE a=b - polecenie to czyta się jako uaktualnij dane w tabeli x wstaw w pole y wartość z
tam gdzie pole a ma wartość b,
gdzie x to nazwa tabeli, gdzie znajduje się rekord do zmiany y to nazwa pola tabeli, do której ma zostać wpisana
nowa wartość, a po WHERE następuje warunek dla wykonania, czyli pole tego rekordu ma wartość b.
Jeśli nie zdefiniujemy warunku polecenie to uzupełni dane we wszystkich rekoradach tabeli.
Przy uaktualnianiu danych, należy pamiętać, aby użytkownik połączony z bazą danych miał uprawnienia,
do aktualizacji danych tabeli.
W poprzednim wątku opisującym wstawianie rekordów, założyliśmy, że operujemy na tabeli chemia.
Dla zobrazowania polecenia UPDATE posłużymy się tym założeniem.
Więc mamy trzech uczniów:
uczeń z nr 1 dostał ze sprawdzianu 4, z odpowiedzi 3, a z aktywności 5
uczeń nr 2 dostał ze sprawdzianu 5, z odpowiedzi 5 i z aktywności 5
oraz ucznia z nr 3, który ma tylko 5 ze sprawdzianu.
Teraz założmy, że uczeń nr 3 dostał 2 z odpowiedzi i musimy to wprowadzić do bazy.
Niestety polecenie INSERT nie pozwoli nam na wstawienie rekordu, który już utworzyliśmy.
Do edycji danych musimy więc posłużyć się poleceniem UPDATE, które w naszym przypadku będzie miało postać:
Cytat:UPDATE chemia SET odpowiedz=2 WHERE nr=3
Polecenie to uaktualni tabelę chemia wprowadzając wartość 2 do pola odpowiedz, ale tylko spełniającego warunek,
że pole nr ma wartość 3, ponieważ zdefiniowaliśmy warunek pozostali uczniowie mogą spać spokojnie ich oceny się nie obniżyłyOczko

Polecenie to w języku PHP będzie miało postać:
Cytat:$zmianawtabeli = mysql_query("UPDATE chemia SET odpowiedz=2 WHERE nr=3");

A co się stanie w momencie gdy uczeń z nr 1 poprawił sprawdzian na ocenę 5 oraz z odpowiedz ma 5?

Po prostu wydamy polecenie w języku PHP:

Cytat:$zmianawtabeli = mysql_query("UPDATE chemia SET odpowiedz=5, sprawdzian=5 WHERE nr=1");
Jak widać polecenie UPDATE pozwala na zmianę danych we wszystkich polach w rekordzie,
kolejne pola wymieniane są po przecinku. Oczywiście należy pamiętać, aby dane wstawiane do tabeli były odpowiedniego typu.

Oczywiście nic nie stoi na przeszkodzie, aby nazwa wartość pola była wprowadzona ze zmiennej zedfinowanej w jeżyku PHP dla naszego przykładu będzie
wyglądało to następująco:

Cytat:$nazwapola='sprawdzian';
$zmianawtabeli = mysql_query("UPDATE chemia SET odpowiedz=5, $nazwapola=5 WHERE nr=1");
Powyższe polecenie wykona tą samą akcję co poprzednie, czyli zmieni ocene ze sprawdzianu i odpowiedzi na 5.

Wartość pola też można pobierać ze zmiennej, co jest bardzo przydatne gdy tworzymy np. sklepik internetowy, panel administracyjny itp.
Dla naszego przykładu:
Cytat:$uczen=1;
$ocena=5;
$zmianawtabeli = mysql_query("UPDATE chemia SET odpowiedz='$ocena', sprawdzian='$ocena' WHERE nr='$uczen'");
Polecenie to wprowadzi zmiany w tabeli dla ucznia o nr 1 wprowadzi ocenę 5 z odpowiedzi i sprawdzianu.


A co zrobić jeżeli chcemy zmienić dane więcej niż jednego ucznia, np. nauczyciel od chemi się zdenerwował na uczniów
z nr 1 i 2 i postanowił im obniżyć ocenę z aktywności na 1?
W, takiej sytuacji wystarczy zmienić warunek i polecenie będzie wyglądało następująco:

Cytat:$zmianawtabeli = mysql_query("UPDATE chemia SET aktywnosc=1 WHERE nr>3");
Polecenie to wprowadzi zmiany oceny z aktywności na 1 tylko uczniom, których nr jest mniejszy od 3
(więcej o warunkach opiszę w osobnym wątku gdyż polecenie WHERE i jego parametry (zwane operatorami porównań),
są wspólne dla poleceń
SELECT, UPDATE, DELETE).

Należy pamiętać, że polecenie UPDATE, nie wstawia rekordów, a jedynie aktualizuje ich zawartość,
do wstawiania rekordów (wierszy tabeli) służy polecenie INSERT!