Tutorijal - PHP - Ažuriranje praznih kolona u bazi podataka
Uvod
U članku o povezivanju PHP skripti sa MySql bazama podataka kreirali smo strukturu baze podataka, popunili smo tabele sadržajem i na kraju smo dodali novu praznu kolonu u koju je potrebno uneti e-mail adrese korisnika (za koje smo prethodno uneli sve ostale podatke).
Ovoga puta, pozabavićemo se upravo unosom e-mail adresa koje nedostaju.
Na prvi pogled deluje da se posao ažuriranja praznih kolona mora obaviti ručno, * međutim, uz malo snalaženja i uz korišćenje do sada stečenog znanja * i (naravno) - pod uslovom da su podaci zapisani u elektronskom obliku (i u prigodnom formatu), zadatak se može rešiti na znatno elegantniji način (s tim da način rešavanja zavisi od toga odakle tačno se preuzimaju podaci) .....
Ažuriranje tabele preko MySql upita
Da se podsetimo: tabela koju smo kreirali u poslednjem članku ....
.... posle izvršavanja sledeće skripte ....
.... poprima novu strukturu:
.... i potrebno je uneti odgovarajuće podatke u kolonu email
.
U praksi, podaci koje treba uneti u polja tabele (u MySql bazi podataka), mogu se nalaziti u drugoj tabeli (u istoj ili različitoj bazi podataka), mogu biti u pomoćnoj tabeli u nekom programu za rad sa (običnim) tabelama, ili u tekstualnoj datoteci, a ako baš "nemamo sreće", moramo (ipak) podatke upisati ručno.
Kao što smo nagovestili, smatraćemo da podaci postoje ('negde'), a u prvom slučaju smatraćemo da su e-mail adrese zapisane u drugoj tabeli, u istoj bazi (pri čemu druga tabela nosi naziv email_pomocna
i ima sledeći sadržaj:
Kolona email
u tabeli ucenici
, sada se može ažurirati preko sledećeg ugnežđenog upita:
Da pojasnimo: budući da spoljni upit (UPDATE
), ne koristi klauzu WHERE
, biće obrađeni svi slogovi tabele ucenici
, i stoga će za svaki slog (odnosno, za svaki id
) tabele ucenici
, biti pokrenut unutrašnji upitu (SELECT
) - preko koga se email adrese iz pomoćne tabele pronalaze i upisuju u tabelu ucenici
(pri čemu se id iz tabele ucenici
mora poklopiti sa id-om iz pomoćne tabele).
Ažuriranje podataka preko PHP skripte
Prethodno prikazani metod, prikladan je za upotrebu ukoliko tabela sa traženim podacima već postoji, dok je u suprotnom praktičnije:
- uneti osnovne podatke u pomoćnu PHP skriptu
- formatirati podatke kao niz (i potom, takođe preko PHP skripte ....)
- ažurirati podatke u bazi
Ovoga puta, smatraćemo da postoje podaci koji su kopirani iz tabele (ili iz tekstualne datoteke i sl), smestićemo podatke u pomoćnu PHP datoteku, nazvaćemo datoteku email_adrese.php
, unećemo sledeći sadržaj ....
.... posle čega preostaje samo da se podaci formatiraju.
O tome kako se odjednom može uređivati više redova (u većini editora), pisali smo u članku o efikasnoj obradi teksta, i stoga verujemo da čitaoci mogu (brzo i lako) formatirati datoteku email_adrese.php
na sledeći način:
.... posle čega se može kreirati i skripta za ažuriranje.
Ažuriranje tabele sa uređenim id-ovima
U prvom slučaju, pretpostavićemo da id-ovi u tabeli ucenici
počinju od 1 i da se ređaju "bez preskakanja", iz čega sledi i pretpostavka da id poslednjeg sloga odgovara broju slogova u tabeli (ili, prostije - pretpostavićemo da nije dolazilo do uklanjanja slogova).
U navedenim okolnostima, niz stringova $email_adrese
, može se koristiti na veoma jednostavan način: budući da je prvi string u nizu prazna niska, indeks prve "prave" niske odgovara id-u prvog sloga u tabeli.
Ako pozovemo sledeću skriptu ....
.... podaci će biti ažurirani.
Ažuriranje tabele sa proizvoljnim id-ovima
Ukoliko nije zadovoljen uslov da su id-ovi u tabeli poređani od 1 do n (n = broj slogova), ili, prostije - ako jeste dolazilo do uklanjanja slogova, potrebno je primeniti drugačiji pristup.
Spisak email adresa koji čuvamo u datoteci email_adrese.php
, potrebno je prepraviti, tako da e-mail adrese budu uparene sa id-ovima:
Ovoga puta (mnogo 'zvaničnije' nego u prethodnoj situaciji), definisan je niz nizova, tako da svaki pojedinačni element osnovnog "niza nizova" sam po sebi predstavlja niz koji se sastoji iz dva elementa:
- element sa indeksom 0 sadrži id sloga
- element sa indeksom 1 sadrži podatak koji treba ažurirati (e-mail adresu)
Sada je moguće obraćati se elementima multidimenzionalnog niza na način koji je pomalo komplikovaniji - ali i funkcionalniji - u tom smislu što se više ne mora voditi računa o tome da li se indeksi niza poklapaju sa id-ovima slogova (jer svaki od "unutrašnjih" nizova u multidimenzionalnom nizu sadrži i id).
Nova skripta za ažuriranje, ima sledeći oblik:
Navedeni pristup takođe omogućava i to da se u svakom koraku for
petlje ažurira i više od jedne kolone (naravno, pod uslovom da se prethodno dopuni i pomoćna tabela).
Za kraj ....
Kao i u članku o povezivanju regularnih izraza sa programskim jezicima, i ovoga puta smo videli šta se može postići kada se na praktičan način iskorite prednosti dva sistema:
- baze podataka nemaju kontrolne strukture kao što su grananja i petlje, ali - omogućavaju skladištenje podataka
- programski jezici sami po sebi ne omogućavaju skladištenje podataka u relacione baze, ali - omogućavaju korišćenje petlji i drugih kontrolnih struktura, i mogu se povezati sa bazama
Automatizacija "dosadnih" zadataka (uz primenu osnovne snalažljivosti i osnovnih tehnika), u velikoj meri "olakšava život" (i programerima, i drugim korisnicima računara) - i upravo je to jedna od glavnih blagodeti programiranja.