Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Tutorial PHP/MySQL

Aktualizacja i usuwanie danych

Do tej pory nauczyliśmy się jak wprowadzać dane do bazy danych, przeglądać zawarte w niej informacje oraz jak je pobierać. W tej części dowiemy się jak aktualizować i usuwać dane w obrębie bazy danych.

Skrypt aktualizacyjny

Ostatnio pokazałem w jaki sposób stworzyć link do wyszukiwania danych celem zawarcia ich na stronie. Używając wartości zapisanej w $id generujemy zapis przyjmujący odpowiednie ID do skryptu celem możliwości zaktualizowania niesionych przez niego informacji. Korzystając z niego możemy utworzyć skrypt zajmujący się aktualizacją tych danych.

Wyświetlanie strony aktualizacyjnej

Pierwszą częścią skryptu aktualizacyjnego korzysta z pojedynczego rekordu wykorzystanego w poprzednim rozdziale dodając do niego wstawki HTML aby uatrakcyjnić jego wygląd. Na początku musimy połączyć się z bazą danych i wybrać interesujący nas rekord.

$id=$_GET['id'];
$username="nazwa użytkownika";
$password="hasło";
$database="nazwa bazy danych";
mysql_connect(localhost,$username,$password);

$query=" SELECT * FROM contacts WHERE id='$id'";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();

$i=0;
while ($i < $num) {
$first=mysql_result($result,$i,"first");
$last=mysql_result($result,$i,"last");
$phone=mysql_result($result,$i,"phone");
$mobile=mysql_result($result,$i,"mobile");
$fax=mysql_result($result,$i,"fax");
$email=mysql_result($result,$i,"email");
$web=mysql_result($result,$i,"web");

Dalsza część kodu

++$i;
}

Gdzie dalsza część kodu jest kodem dla strony aktualizacyjnej. Zawiera tylko formatowanie HTML dla wyniku:

<form action="updated.php" method="post">
<input type="hidden" name="ud_id" value="<? echo $id; ?>">
Pierwsze imię: <input type="text" name="ud_first" value="<? echo $first; ?>"><br>
Ostatnie imię: <input type="text" name="ud_last" value="<? echo $last; ?>"><br>
Telefon stacjonarny: <input type="text" name="ud_phone" value="<? echo $phone; ?>"><br>
Telefon komórkowy: <input type="text" name="ud_mobile" value="<? echo $mobile; ?>"><br>
Fax: <input type="text" name="ud_fax" value="<? echo $fax; ?>"><br>
Adres E-mail: <input type="text" name="ud_email" value="<? echo $email; ?>"><br>
Adres WWW: <input type="text" name="ud_web" value="<? echo $web; ?>"><br>
<input type="Submit" value="Aktualizuj">
</form>

Jak widać ten kod zwróci standardowy formularz , lecz zamiast pustych pól jak to miało miejsce przy wprowadzaniu danych, ten będzie zawierał aktualne informacje i pozwalał na ich edycję i zatwierdzenie wprowadzonych zmian.

Aktualizacja bazy danych

Następnym krokiem jest aktualizacja zawartych w bazie danych. Jest to prosta operacja i wystarczy takie zapytanie:

$query = "UPDATE contacts SET first = '$ud_first', last = '$ud_last', phone = '$ud_phone', mobile = '$ud_mobile', fax = '$ud_fax', email = '$ud_email', web = '$ud_web' WHERE id = '$ud_id'";

To zapytanie powie bazie danych iż należy dokonać aktualizacji danych kontaktowych dla id przekazanego w skrypcie poprzez wartość $ud_id i ustawienie ich na przekazane nowe wartości.

To zapytanie może zostać zawarte w skrypcie w takiej formie:

$ud_id=$_POST['ud_id'];
$ud_first=$_POST['ud_first'];
$ud_last=$_POST['ud_last'];
$ud_phone=$_POST['ud_phone'];
$ud_mobile=$_POST['ud_mobile'];
$ud_fax=$_POST['ud_fax'];
$ud_email=$_POST['ud_email'];
$ud_web=$_POST['ud_web'];

$username="nazwa użytkownika";
$password="hasło";
$database="nazwa bazy danych";
mysql_connect(localhost,$username,$password);

$query="UPDATE contacts SET first='$ud_first', last='$ud_last', phone='$ud_phone', mobile='$ud_mobile', fax='$ud_fax', email='$ud_email', web='$ud_web' WHERE id='$ud_id'";
mysql_query($query);
echo "Rekord zaktualizowany";
mysql_close();

Ten kod spowoduje aktualizacje danych w bazie i wyświetli informacje o zakończeniu tego procesu.

Usuwanie rekordów

Końcową częścią skryptu jest stworzenie opcji do usunięcia już wprowadzonych rekordów. Dokonamy tego w podobny sposób jak skrypt aktualizacji danych za pomocą url np.:

delete.php?id=9

Kod realizujący to wymaganie jest identyczny jak w wypadku aktualizacji za wyjątkiem zastosowanego zapytania MySQL które powinno wyglądać w tym wypadku:

DELETE FROM contacts WHERE id='$id'
Pętle

Tym razem użyjemy innych pętli. Tak samo jak wykorzystywaliśmy pętli do pobierania danych, możemy je wykorzystać do ich wykonywania. Np. jeśli chcemy zmienić wszystkie rekordy w bazie danych dla których pole last name ma wartość Smith posiada WWW www.smith.com:

Standardowy kod wykorzystywany do uzyskania połączenia z bazą danych

$query=" SELECT * FROM contacts WHERE last='Smith'";
$result=mysql_query($query);
$num=mysql_numrows($result);

$i=0;
while ($i < $num) {
$id=mysql_result($result,$i,"id");
$query1="UPDATE contacts SET web='http://www.smith.com' WHERE id='$id'";
mysql_query($query);
++$i;
}

mysql_close();

Oczywiście można zastosować:

$query1="UPDATE contacts SET web='http://www.smith.com' WHERE last='Smith'";
Część 8
Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (7)
gdzie link?
Piątek 15 Lipiec 2011 12:45:10 pm - beneglih

Fajny tutorial, tylko dlaczego na jego końcu jest informacja, że skrypt można pobrać, dwukropek i puste miejsce, brak linka...

ort
Sobota 13 Marzec 2010 10:02:17 pm - katwer <katwer_at_op.pl>

Co jak co, ale artykuł do druku na poważnym portalu, to już powinien przejść przez standardowe sprawdzanie pisowni choćby zautomatyzowane, jeśli autor nie wie, jak się pisze HASŁO.

Sorry, ale takie lekceważenie języka polskiego - musiałam.

pytanie
Niedziela 01 Lipiec 2007 8:56:38 pm - bercik156 <fifunia07_at_wp.pl>

mam pytanie jak zmienić w bazie danych język żeby na stronie były polskie znaki??

złeeee
Poniedziałek 07 Maj 2007 9:01:03 am - wbeatn <wbeatn_at_gmail.com>

dlaczego w tym artykule jest podany bledny kod ? strona z dodawaniem do bazy mi dziala, to samo jest ze strona ktora wyswietla rekordy, ale strona ktora ma wyswietlic formularz edytujacy wywala blad 'Warning: mysql_numrows(): supplied argument is not a valid MySQL ...' .. robie wszystko wedlug instrukcji i takie cos :/

Dłąd :D
Sobota 25 Listopad 2006 11:38:44 pm - sabistik <wiktorski_at_poczta.php.pl>

haha, Czemu nikt wcześniej tego nie zraportował:
http://irc.php.pl/blog/?id=392
?? ;D

Wyjaśnienie małe
Piątek 27 Październik 2006 9:26:17 pm - slump <slump_Ilawa_at_wp.pl>

Twoje sugestje są jak najbardziej trafne, jednak pamiętaj, że jest to tylko translacja arta z języka Angielskiego.
Pozdrawiam

Kilka luźnych uwag
Czwartek 26 Październik 2006 12:12:12 pm - Diabl0

Rozumiem że jest to art dla totalnie początkujących i przeglądałem go bardzo pobieżnie, ale mimo wszystko mam kilka zastrzeżeń:

1 - instalowanie phpmyadmin na serwerze bez odpowiedniego zabezpieczenia go - kto się opiekuje serwerami niech spojrzy sobie w logi jak często trafiają się roboty szukające phpmyadmin - nie sądzę aby szukały one sobie tylko z czystej ciekawości. Trzeba było przynajmniej napisać jak go zabezpieczyć przez .htaccess

2 - SQL incjection - wstawianie danych pochodzących od usera prosto do bazy bez sprawdzenia i zabezpieczenia. Temat ten wszędzie jest tak często wałkowany że tutorial dla początkujących z takim błędem to duży imho duża porażka. Aż tak ciężko było poświęcić dwa akapity na wyjaśnienie zagrożenia i zaproponowanie chociażby mysql_escape_string?

3 - nie wiem skąd takie parcie na while ($i < $num) i każdorazowe przepisywanie danych? IMHO dużo wygodniejsze (zwłaszcza dla początkujących, a nie wiem też czy nie szybsze) jest while ($row = mysql_fetch_assoc($ret).

4 - drobiazg, ale: <? :) <?php jest bardziej prawidłowe zwłaszcza że już słyszałem jakieś pogłoski że <? ma zostać z czasem usunięte :)

5 - formatowanie kodu - ja rozumiem że system znaczników na php.pl może utrudniać zachowanie wcięć itp, ale skoro to jest tutorial dla początkujących to przydało by się też zadbać o uczenie ich dbałości o wygląd kodu i jego staranniejsze formatowanie - to naprawdę ułatwia w przyszłości życie a dzięki odrobiny praktyki stosuje się praktycznie odruchowo.

To takie moje drobne uwagi po pobieżnym przejrzeniu arta (głównie fragmentów kodu) . Nie jest to żadna miażdżąca krytyka - po prostu wychodzę z założenia że o ile w arcie dla doświadczonych programistów nawet nie było by sensu zwracać na to uwagi (w końcu każdy i tak ma już wyrobione własne nawyki i przyzwyczajenia), to jednak w arcie dla początkujących warto położyć większy nacisk na tego typu drobiazgi aby od początku wtłaczać i wyrabiać w nich dobre nawyki.

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2021 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System