PDA

Pogčedajte punu verziju : Izmjena podataka u bazi putem dinamicke forme - uz koristenje Ajax-a


bokacbl
03. 02. 2006., 23:45
Posto sam radio par aplikacija koje su administratorskom dijelu zahtijevale izmjenu pojedinih zapisa u tabeli, obicno sam to rjesavao:
- Procitam podatke iz tabele, unesem u <select> i postavim dugme izmjeni i ucitam sljedecu stranu na kojoj su u formu vec uneseni podaci iz tabele pa se upisu izmjene...(mozda i ovo nije dobar nacin ali ja nisam znao drugi).

E sad posto sam citao neki mali tutorial o Ajax-u i XMLHttpRequest
Guide to Using AJAX and XMLHttpRequest from WebPasties (http://www.webpasties.com/xmlHttpRequest/)

rijesio sam da napravim neku vrstu dinamicke forme.. znaci ja u prvom polju u kojem su procitane vrijednosti iz tabele izaberem neki zapis, i automatski mi se u formi ispod ispisu vrijednosti tog zapisa..

<script language="javascript" type="text/javascript">
var url = "getProgramData.php?param="; // The server-side script\

function handleHttpResponse() {
if (http.readyState == 4) {
// Split the comma delimited response into an array
results = http.responseText.split("#");
document.getElementById('name').value = results[0];
document.getElementById('url').value = results[1];
document.getElementById('description').value = results[2];
document.getElementById('investment').value = results[3];
document.getElementById('min').value = results[4];
document.getElementById('max').value = results[5];
document.getElementById('ratio').value = results[6];
document.getElementById('referall').value = results[7];
document.getElementById('support').value = results[8];
document.getElementById('date_added').value = results[9];
}
}
function updateProgramData() {
var idValue = document.getElementById("id").value;
http.open("POST", url + escape(idValue), true);
http.onreadystatechange = handleHttpResponse;
http.send(null);
}

function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}
var http = getHTTPObject(); // We create the HTTP Object
</script>

to sam rijesio na gore pomenuti nacin uz koristenje function getHTTPObject() , function handleHttpResponse() , function updateProgramData()
iz gore navedenog tutoriala..
Konkretno uz pomoc var url = "getProgramData.php?param=" se poziva stranica koja sadrzi skript koji ispisuje podatke iz reda iz tabele razdvojene separatorom..

Da a samu promjenu u formi se radi u okviru select <select name="id" id="id" onChange="updateProgramData();">
E sad interesuje me da li postoje jos neki nacin za rjesavanje ovih takozvanih dinamickih formi koje se koriste za mijenjanje podataka u bazi?
I takodje interesuje me postoji li neki drugi nacin da se rijesi citanje podataka iz baze, mislim da se ne poziva ovaj fajl "getProgramData.php" jer onda malo bolji programer moze da provali kako da procita podatke iz baze...

bluesman
03. 02. 2006., 23:50
Samo kratko (ne razumem najbolje problem): Pa šta ako pročita podatke iz baze? Zar nije to ono što i ti radiš? Ti prikazuješ te podatke, odnosno čitaš i prenosiš na stranu i prikazuješ svima :)

Problem je ako može da piše nešto što ti nisi planirao :)

bokacbl
03. 02. 2006., 23:55
Samo kratko (ne razumem najbolje problem): Pa šta ako pročita podatke iz baze? Zar nije to ono što i ti radiš? Ti prikazuješ te podatke, odnosno čitaš i prenosiš na stranu i prikazuješ svima :)

Problem je ako može da piše nešto što ti nisi planirao :)

Pa u principu nije problem, ionako je ovaj dio skripte predvidjen za administratorski pristup.. ali recimo ako ocu da na ovaj nacin iskoristim izmjenu podataka o korisnicima...

I uopsteno da li je ovo kvalitetno rjesenje za ove zahtjeve??

Pedja
04. 02. 2006., 00:18
Ok je pristup, samo u getProgramData.php proveris odakle je pozvan i ako nije pozvan iz tvog dokumenta, odbijes zahtev.

ivanhoe
04. 02. 2006., 03:25
pretpostavljam da imas neku autentifikaciju sa sessionima, znaci samo iskoristi session_id da proveris da li je to ulogovan korisnik ili neko brlja nesto...