Ty jo, jaky slozity popis. Opet nerozumim vubec nicemu :) Michas nekolik nesouvisejicich veci, mi prijde.
Jestli to spravne chapu, tak chces pro mazani z nekolika tabulek pouzit jeden soubor. Nechapu, proc to musi byt soubor a ne funkce? smaz($tabulka,$id); Kdyz to je soubor, ktery spousti sql prikazy, tak bych ho nazval treba sql.php, parametry bych mu dal sql=1&id=5 (id sql prikazu, dalsi parametry, u delete je to id radku).
No, ale kazdopadne v tom souboru nemas zadne zabezpeceni (viz Ericsko).
- musi tam byt prikaz, ktery kontroluje, kdo je prave prihlasen (vuci session, treba), aby, kdokoliv si prostuduje tvuj JS kod, ktery nejde skryt pred zvedavci, nemohl prikazu pouzit ke smazani postupne vsech id mezi 1 az 1.000.000
- vystup toho souboru by nemel byt ani chybova hlaska (or die), ani uspesne provedeno (echo), aby takovy hacker nezjistil uspesnost. Jen mne nenapada, jak predavat vysledek, mozna session, mozna db.
- nemas tam zadnou kontrolu parametru, treba u id je dobre provest prevod na cislo a porovnat, zda je cislo vetsi nez 0 (autoincrement dava prvni id 1) a zda je to cele cislo (integer). Kdyz ti tam ted zadam nesmysl nebo pismeno, tak ti to zkape na or die a vypis chyby isto toho, aby to preskocilo jeste pred odeslanim chyby do databaze.
Jinak si myslim, ze to (ten treti kod v prvnim prispevku) klidne muzes pouzit. Ze tam jen pridat jmeno tabulky a melo by to fungovat. Si na jednoduche sql prikazy udelej tridu, class. ja tam pouzivam takoveto podobne konstrukce. Data predavam v poli a ty funkce si to pak prevedou do sql prikazu, pouziji mysql_real_escape_string a tak
...
$keys = "`".implode("`,`",array_keys($_data))."`";
$values = array();
foreach ($_data as $key=>$value)
{
$values[] = $this->escape($value);
}
$query = "INSERT INTO `".$_table."` (".$keys.") VALUES (".implode(", ",$values).")";
...
foreach ($_iduser as $key=>$value)
{
$key = mysql_real_escape_string($key);
$where[] = "`$key`=" . $this->escape($value);
break;
}
foreach ($_data as $key=>$value)
{
$key = mysql_real_escape_string($key);
$values[] = "`$key`=" . $this->escape($value);
}
$where = implode(' AND ',$where);
$query = "UPDATE `".$_table."` SET ".implode(", ",$values)." WHERE ".$where;
...
foreach ($_iduser as $key=>$value)
{
$key = mysql_real_escape_string($key);
$where[] = "`$key`=" . $this->escape($value);
break;
}
$where = implode(' AND ',$where);
$query = "DELETE FROM `".$_table."` WHERE ".$where;
Pak jen zavolam treba
$SQL->delete('uzivatele',array('id'=>5));
$SQL->insert('uzivatele',array('name'=>'Lojza'));
$SQL->update('uzivatele',array('name'=>'Pepa'),array('id'=>5));
Navic tam predavam usera a datum, abych ulozil posledni zmenu zaznamu a kdo to menil.