Thursday, October 25, 2007

Izmena i brisanje podataka


Editovanje (izmena) podataka (tj. njihovih vrednosti) u bazi!

Da biste promenili podatke u vašoj bazi podataka možete jednostavno da dodate JavaScript dogadjaj na dvoklik za DBGrid. Da biste dodali JavaScript dogadjaj kliknite na jezičak Javascript u object inspector-u i pošto ćemo da omogućimo menjanje podataka na kad učinimo dvoklik u neku od ćelija DBGrida , izabraćemo OnDblClick dogadjaj u object inspectoru i u code view-u u telu funkcije dodaćemo ovaj kod:


function ddsometable1JSDblClick($sender, $params)

{

?>

//Add your javascript code here

var temp = DBGrid1.getTableModel().getValue(0, DBGrid1.getFocusedRow());

location = "unit2.php?id=" + temp;

return(false);

<?php

}


Naravno, dodavanje i izmena unetih podataka često nije dovoljno i javi se i potreba da se neki podaci izbrišu iz baze. Kako to radimo? Pa ovako, opet cemo da koristimo kombinaciju PHP-a i MySQL-a.


Na primer, ako želimo da izbrišemo neki od podataka koji smo uneli ranije mi treba da saopštimo našem programu odakle da obriše i na osnovu kog kriterijuma treba da obriše neki podatak


Primera radi, mi ćemo obrisati iz naše baze podatke (ID, FirstName, LastName, PhoneNumber, Adress) gde je naš ID recimo 1.


To radimo sledecim kodom:


mysql_query("DELETE FROM sometable WHERE ID=1");


Ovaj kod će ,dakle,da iz tabele pod nazivom sometable da izbriše sve podatke koji imaju veze sa poljem ID gde je ID jednak 1.


U nasem slucaju kao sto možete da vidite sa slike, u mojoj bazi ja sam korisnik koji ima ID jednak 1 i izbrisaće mene L J


Naravno, ovako definisana komanda nama nije od prevelike koristi, mi ćemo da omogućimo da korisnik bira koga će da brise iz baze podataka tako sto cemo da koristimo iste edit box-ove koje smo koristili za unos novih podataka u bazu (tj. posto radimo brisanje prema samo jednom kriterijumu,koristićemo samo prvi edit box (onaj u koji unosimo ID)).


Dakle, postavite još jedan taster na vasu formu u Deplhi for PHP-u i promenite mu Caption (caption je tekst koji će da se prikazuje na datom dugmetu ako sam zaboravio da to napomenem ranije) u nešto tipa Delete button ili slično, nešto što će korisnicima saopštavati da će klikom da taj novi taster da brisu neke podatke. J


Ponovićemo postupak za programiranje ovog tastera kao i kod onog koji smo programirali za unos novih podataka. Razlika je,naravno, u telu funkcije koje će da obavlja program klikom na ovo dugme. Telo funkcije je ono što se nalazi izmedju glavnih vidičastih zagrada. U našem slučaju telo ove funcije koja ce da briše podatke je:


mysql_query("DELETE FROM sometable WHERE ID='".$this->IDEdit->Text."'");


A ceo kod izgleda ovako:


function ButtonIzbrisiClick($sender, $params)

{

mysql_query("DELETE FROM sometable WHERE ID='".$this->IDEdit->Text."'");

}


Dakle ovde je sve isto kao i u prethodnom primeru za brisanje, samo sto je jedina i glavna razlika ta sto ovde nije “fiksna” vrednost za ID koji ćemo da brišemo, vec je unosi korisnik ( u edit box-u koji je namenjen za ID vrednost ) i tako program “zna” šta treba da obriše iz baze.


Koristimo WHERE za naponenu da nakon njega slede uslovi pomoću kojih odredjujemo (ograničavamo) skup podataka nad kojima će se obaviti neka operacija.


Napomena!


Na po;etku tutorijala sam naveo primer kako kreirati bazu podataka koristeci phpMyAdmin, naravno, vi mo\ete da kreirate i direktno kroz va[u aplikaciju va[u bazu podataka koristeci MySQL.


Evo primera kako (ovo je cela funkcija za OnButton1Click dogadjaj) J


function KreirajBazuButtonClick($sender, $params)

{

mysql_query("CREATE DATABASE MyDatabase");

mysql_connect("localhost", "", "");

mysql_select_db("MyDatabase");

mysql_query("CREATE TABLE SomeTable(

id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY(id),

name VARCHAR(30),

age INT)")

or die(mysql_error());

echo "Table Created!";

}


Takodje, ja sam koristio MySQL komande za rad sa bazom, i za unos podataka i sl. Vi možete da koristite u suštini dve metode:


1 – Klasican unos npr :


$this->Table1->open();

$this->Table1->append();

$this->Table1->ID = 1;

$this->Table1->FirstName = "Vladica";

.... i tako dalje

$this->Table1->post();

$this->Table1->close();


2) Direktan unos u bazu (kao sto je korišćen u primeru):


$this->dbMyDatabase1->execute("INSERT INTO sometable (ID,FirstName,LastName,Adress,PhoneNumber) VALUES ('".$this->IDEdit->Text."','".$this->FNameEdit->Text."',

'".$this->LNameEdit->Text."','".$this->AdressEdit->Text."',

'".$this->PhoneNumEdit->Text."')");



TO BE CONTINUED


(Nastavi će se…)