Forum » Izdelava spletišč » POMOČ-kako narediti execute proceduralne funkcije kreirane v phpmyadminu v PHP-ju?
POMOČ-kako narediti execute proceduralne funkcije kreirane v phpmyadminu v PHP-ju?

gas987123 ::
Pozdravljeni! Rad bi naredil formo te funkcije spodaj v PHPju. Težavo mi povzroča, ker nevem kako bi v phpju naredil setterje (SET) za sifro_delavca, zacetni_datum in koncni_datum, ki jih nujno potrebujem za izračun norme. V phpmyadminu mi execute naredi brez problema. 
 
 
 
CREATE DEFINER=`root`@`localhost` FUNCTION `izracun_norme`(`sifra_delavca` INT, `zacetni_datum` DATE, `koncni_datum` DATE) RETURNS float
READS SQL DATA
DETERMINISTIC
BEGIN
 
declare vdatum_realizacije date;
declare voperacija integer;
declare vstevilo_operacij integer;
declare vminut_dela integer;
declare vmin_kos decimal(5,3);
declare vnorma float;
declare vskupno_minut float;
declare vkonec integer default 0;
declare a float;
declare cur_vrstica cursor for
select datum_realizacije, id_operacija, stevilo_operacij, minut_dela
from vrstica_obracuna where id_delavec=sifra_delavca and datum_realizacije between zacetni_datum and koncni_datum;
declare continue handler for not found set vkonec = 1;
select sum(minut_dela) INTO vskupno_minut from vrstica_obracuna where id_delavec=sifra_delavca and datum_realizacije between zacetni_datum and koncni_datum;
if vskupno_minut = NULL then
set vnorma = 0.0;
else
set vnorma = 0;
open cur_vrstica;
dobi_podatke : LOOP
FETCH cur_vrstica INTO vdatum_realizacije, voperacija, vstevilo_operacij, vminut_dela;
SELECT minut_za_kos INTO vmin_kos FROM operacija WHERE id_operacija=voperacija;
-- set a = (vminut_dela/vskupno_minut);
set vnorma=vnorma + (vminut_dela/vskupno_minut)*(100.0*vstevilo_operacij/(vminut_dela/vmin_kos));
-- set vnorma = vmin_kos;--
IF vkonec = 1 then
leave dobi_podatke;
end if;
end loop dobi_podatke;
end if;
close cur_vrstica;
return vnorma;
end
CREATE DEFINER=`root`@`localhost` FUNCTION `izracun_norme`(`sifra_delavca` INT, `zacetni_datum` DATE, `koncni_datum` DATE) RETURNS float
READS SQL DATA
DETERMINISTIC
BEGIN
declare vdatum_realizacije date;
declare voperacija integer;
declare vstevilo_operacij integer;
declare vminut_dela integer;
declare vmin_kos decimal(5,3);
declare vnorma float;
declare vskupno_minut float;
declare vkonec integer default 0;
declare a float;
declare cur_vrstica cursor for
select datum_realizacije, id_operacija, stevilo_operacij, minut_dela
from vrstica_obracuna where id_delavec=sifra_delavca and datum_realizacije between zacetni_datum and koncni_datum;
declare continue handler for not found set vkonec = 1;
select sum(minut_dela) INTO vskupno_minut from vrstica_obracuna where id_delavec=sifra_delavca and datum_realizacije between zacetni_datum and koncni_datum;
if vskupno_minut = NULL then
set vnorma = 0.0;
else
set vnorma = 0;
open cur_vrstica;
dobi_podatke : LOOP
FETCH cur_vrstica INTO vdatum_realizacije, voperacija, vstevilo_operacij, vminut_dela;
SELECT minut_za_kos INTO vmin_kos FROM operacija WHERE id_operacija=voperacija;
-- set a = (vminut_dela/vskupno_minut);
set vnorma=vnorma + (vminut_dela/vskupno_minut)*(100.0*vstevilo_operacij/(vminut_dela/vmin_kos));
-- set vnorma = vmin_kos;--
IF vkonec = 1 then
leave dobi_podatke;
end if;
end loop dobi_podatke;
end if;
close cur_vrstica;
return vnorma;
end

carota ::
Use the PDO, Luke. ;) (Googlaj "PDO", prvi zadetek)
 
Mimogrede, zdi se mi, da s kurzorjem rešuješ nekaj, kar bi se dalo po vsej verjetnosti brez.
Mimogrede, zdi se mi, da s kurzorjem rešuješ nekaj, kar bi se dalo po vsej verjetnosti brez.
Zgodovina sprememb…
- spremenil: carota ()
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | float vs decimalOddelek: Programiranje | 6872 (5005) | Looooooka | 
| » | SQL trigger OracleOddelek: Programiranje | 1278 (1186) | PunXXX | 
| » | sql-t stored procedureOddelek: Programiranje | 1160 (1027) | detroit | 
| » | [sql]-stevilka vrsticOddelek: Programiranje | 1283 (1146) | bmandl | 
| » | SQL vprašanjeOddelek: Izdelava spletišč | 2830 (2393) | jerneju |