Tak vám povim, jestli mě něco nebaví, tak je to vypisování příkazu INSERT do MySQL, když tam potřebuju vložit třeba 10 hodnot.
Tož mě napadlo, jak to zjednodušit a nabízí se jednoduché řešení a to vytvořit funkci, která by do sloupců které by se jmenovali jako argumenty vkládala hodnoty proměnných, které by se jmenovali jako argumenty.
např.:
function sql2(tabulka, prvni, druha){
mysql_query("INSERT INTO ".$tabulka." (".$prvni.", ".$druha.") VALUES ('$$prvni', '$$druha')");
}
Jenže takhle bych musel pro každý určitý počet proměnných deklarovat jinou funkci.
Takže:
1) Nedaly by se ty fce integrovat do jedné?
2) Myslíte že ta fce je užitečná?
3) Existuje nějaký web, kde by se daly najít užitečný fce pro programátory?
P.S. Doufám že je to pochopitelný.
tak te funkci predej hodnoty v poli a foreach vse vyresi:)
Myslíš něco jako:
function sql_insert(tabulka, pole){
$i=0;
$query = "INSERT INTO ".$tabulka." (";
foreach ($pole as $v) {
if($i==0) $query.= $v;
else $query.= ", ".$v;
$i++;
}
$query.= ") VALUES (";
reset($pole);
$i=0;
foreach ($pole as $v) {
if($i==0) $query.= "'".$v."'";
else $query.= ", '".$v."'";
$i++;
}
$query.=")";
mysql_query($query);
}
Posléze při použití funkce:
$insert = array("nazev", "adresa", "PSC", "vyska", "delka");
sql_insert(jmenotabulky, $insert);
Jo?
Respektive:
function sql_insert($tabulka, $pole){
$i=0;
$query = "INSERT INTO ".$tabulka." (";
foreach ($pole as $v) {
if($i==0) $query.= $v;
else $query.= ", ".$v;
$i++;
}
$query.= ") VALUES (";
reset($pole);
$i=0;
foreach ($pole as $v) {
if($i==0) $query.= "'".$$v."'";
else $query.= ", '".$$v."'";
$i++;
}
$query.=")";
mysql_query($query);
}
Posléze při použití funkce:
sql_insert(jmenotabulky, array("nazev", "adresa", "PSC", "vyska", "delka"));
Fachá to bez problémů.
Díky za nápad.
Aha, tak jsem chválil dne před večerem, jde o to, že ta funkce nemůže pracovat s proměnnými, které jsou definovány vně.
Dá se to nějak obejít?
Tuším, že lze poměrně nenásilným způsobem zjistit počet argumentů zadaných funkci a nacucnout je do pole. Ale vyjde to nastejno..
<HTML>func_get_args();</HTML>
Díky Richarde, dílo dokonáno jest, tady je ta funkce, kdyby ji někdo chtěl použít:
function sql_insert(){
$numargs = func_num_args();
$arg_list = func_get_args();
$a=0;
$query = "INSERT INTO ".func_get_arg (0)." (";
for ($i = 1; $i < $numargs; $i++) {
if($a==0) $query.= $arg_list[$i];
else $query.= ", ".$arg_list[$i];
$a++;
}
$query.= ") VALUES (";
$a=0;
for ($i = 1; $i < $numargs; $i++) {
global $$arg_list[$i];
if($a==0) $query.= "'".$$arg_list[$i]."'";
else $query.= ", '".$$arg_list[$i]."'";
$a++;
}
$query.=")";
mysql_query($query);
}
Netestováno.
Refernce k funkci:
sql_insert(jmenotabulky, sloupec1, sloupec2, sloupec3, sloupec4, ..... n);
Do tabulky "jmenotabulky" a sloupce "sloupec1" se vloží proměnná $sloupec1 do sloupce 2 proměnná $sloupec2 atd...