Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Forma (istovremeno Insert i Update u istom kveriju)!?

[es] :: MySQL :: Forma (istovremeno Insert i Update u istom kveriju)!?

[ Pregleda: 3110 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

farkZ
king-ict, predavač IT
zagreb

Član broj: 244327
Poruke: 18
*.dynamic.amis.hr.



+1 Profil

icon Forma (istovremeno Insert i Update u istom kveriju)!?05.04.2012. u 00:57 - pre 145 meseci
Imam formu sa padajućim menijima i boxom gdje korisnik upisuje količinu. Nakon potvrde ti podaci se zapišu u bazu. To radi!

$ds->InsertCommand = "insert into tret_gnoj (ID_tg, ID_preparat, korisnik_id, cestica, kultura, datum_tretiranja, naziv_prep, kolicina_prep)
values (@ID_tg, '@ID_preparat', '@korisnik_id', '@cestica', '@kultura', '@datum_tretiranja', '@naziv_prep', '@kolicina_prep')";

, istovremeno količina koju je korisnik unio u box (@kolicina_prep) bi se trebala oduzeti od trenutne količine na lageru u tablici preparat.

Ovo bi bila ideja...NE RADI!
$ds->UpdateCommand = "update preparat.kolicina = preparat.kolicina - @kolicina_prep
where
preparat.naziv_prep = tret_gnoj.naziv_prep";

Ne znam kako da dohvatim @kolicina_prep, kad pokušam uvesti neku varijablu u upit koju bi poslije mogao iskoristiti u update-u NE RADI!
Postoji li način da se i insert i update odvije u $ds->InsertCommand = "insert..................update................."



hvala
lp
Igor
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?05.04.2012. u 08:05 - pre 145 meseci
Riješi to sa triggerom

http://dev.mysql.com/doc/refman/5.6/en/create-trigger.html

Code:

CREATE TRIGGER update_stanje AFTER INSERT ON tret_gnoj
  FOR EACH ROW BEGIN
    UPDATE tabela_stanje SET stanje = stanje - NEW.kolicina_prep WHERE id = NEW.ID_preparat;
  END;


[Ovu poruku je menjao bantu dana 05.04.2012. u 09:17 GMT+1]
 
Odgovor na temu

farkZ
king-ict, predavač IT
zagreb

Član broj: 244327
Poruke: 18
*.dynamic.amis.hr.



+1 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?05.04.2012. u 19:53 - pre 145 meseci

Hvala na brzom odgovoru, nažalost ne radi, ovo sam iskopao kao komentar za jako sličan primjer:

that is still multiple queries/sql statements to php and that is not supported by mysql_query
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?05.04.2012. u 23:52 - pre 145 meseci
kakve veze ima ponudjeno resenje sa trigerom i to sto php ne podrzava vise sql statement-a odjednom?!
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?06.04.2012. u 07:37 - pre 145 meseci
Da, Bogdan potpuno je u pravu, ovo riješenje radi 1/1 i nema nikakve veze sa onim što si ti napisao. Jedino malo pogledaj da ga uskladiš sa svojim nazivima tabela i kolona, možda si tu imao problem.

Pored toga mislim da ne shvataš koncepciju triggera, zato sam ti i ostavio link.
Kad uspješno kreiraš trigger, u tvom slučaju, poslije svakog tvog inserta ažuriraće se stanje u tabela_stanje na način da će se od ternutnog stanja oduzimati kolicina_prep.
 
Odgovor na temu

farkZ
king-ict, predavač IT
zagreb

Član broj: 244327
Poruke: 18
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?09.04.2012. u 18:56 - pre 145 meseci
nakon mnogo pokušaja na kraju je problem ovaj:
#1142 - TRIGGER command denied to user 'farkz'@'dhost.info' for table 'tret_gnoj'.
Poslao sam adminu mail, ali kako imam free hosting mislim da privilegije imaju samo paid useri.
još jednom hvala na korisnim linkovima i savjetima.

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?09.04.2012. u 19:04 - pre 145 meseci
onda spremis nekoliko sql upita pa executnes jedan po jedan
 
Odgovor na temu

farkZ
king-ict, predavač IT
zagreb

Član broj: 244327
Poruke: 18
*.dynamic.amis.hr.



+1 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?21.04.2012. u 12:49 - pre 145 meseci
Citat:
bogdan.kecman: onda spremis nekoliko sql upita pa executnes jedan po jedan


bogdane pun pogodak!
to sam i napravio i radi, evo koda:
$sql_update1='UPDATE zaliha SET zaliha.kolicina = kolicina - "'.$_POST['kolicina_prep'].'" WHERE zaliha.naziv_prep = "'.$_POST['naziv_prep'].'"';

Taj kod sam inače imao u v1.0 moje male webaplikacije i naravno radio je kako i treba, odnedavno sam počeo sve raditi u Koolgridu jer mi izuzetno odgovara pa sam počeo imati probleme sa "custom kodom", izbacivao mi je hrpe errora. U bit sam sad samo iskopirao taj stari kod i proradilo je. Osječam se užasno glupo jer sam kod u biti imao cijelo vrijeme doslovno pred nosom, a istovremeno sretno jer je rješenje toliko jednostavno (tjednima sam isprobavao svakave kombinacije, zadnje je bio ovaj trigger...)

hvala još jednom na savjetima i komentarima
lp
Igor
 
Odgovor na temu

farkZ
king-ict, predavač IT
zagreb

Član broj: 244327
Poruke: 18
*.dynamic.amis.hr.



+1 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?12.05.2012. u 19:40 - pre 144 meseci
Radim upgrade prošlog triggera pa sam opet zapeo.
Situacija:Kad korisnik unese neku količinu gnojiva (tbl gnojidba) ta količina se zapiše i ujedno se skine sa lagera (tbl zalihaG). To radim sa triggerom koji radi :).
Htio bih da prilikom unosa količine u (tbl gnojidba) triger provjeri stanje (tbl zalihaG) i ako je količina koju je unio korisnik u (tbl gnojidba) veća od količine na stanju (tbl zalihaG) trebalo bi se pojaviti upozorenje da je količina na zalihi premala.
Pokušao sam sa raznim kombinacijama, zadnja u nizu je ova:
Code:

SQL
CREATE TRIGGER update_zalihaG
AFTER INSERT
ON gnojidba
FOR EACH ROW BEGIN
DECLARE trenutno int(11);
SELECT kolicina
INTO trenutno
FROM zalihaG
WHERE naziv_gnoj = NEW.naziv_gnoj;
IF (trenutno >= NEW.kolicina_gnojiva)
THEN
UPDATE zalihaG
SET kolicina = (kolicina-NEW.kolicina_gnojiva)
WHERE naziv_gnoj = NEW.naziv_gnoj;
ELSE
RAISE_APPLICATION_ERROR('Nedovoljna količina na zalihi!');
END IF;
END;


phpMyAdmin javlja ovo:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE trenutno NUMBER; BEGIN SELECT kolicina INTO trenutno FROM zalihaG WHERE ' at line 6

lp
Igor

[Ovu poruku je menjao farkZ dana 13.05.2012. u 11:34 GMT+1]
 
Odgovor na temu

farkZ
king-ict, predavač IT
zagreb

Član broj: 244327
Poruke: 18
*.dynamic.amis.hr.



+1 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?13.05.2012. u 11:21 - pre 144 meseci
Ako umjesto '$$' delimitera stavim '//' , onda dobijam ovaj error:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('Nedovoljna koliÄ
 
Odgovor na temu

farkZ
king-ict, predavač IT
zagreb

Član broj: 244327
Poruke: 18
*.dynamic.amis.hr.



+1 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?13.05.2012. u 12:46 - pre 144 meseci
pronašao sam zanimljiv primjer:
Raise Exception / Error in MySQL 5.0

Pokušao sam odmah, nakon što sam executnuo one procedure gore;
Code:

.....
ELSE
CALL pRaiseError("Nedostatna kolicina na zalihi!");
END IF;
....


količina na zalihi se ne promijeni, novi redak se ne upiše (što je ok), ali ne izleti nikakvo upozorenje za korisnika
lp
Igor
 
Odgovor na temu

farkZ
king-ict, predavač IT
zagreb

Član broj: 244327
Poruke: 18
*.dynamic.amis.hr.



+1 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?21.05.2012. u 22:29 - pre 144 meseci
Eto:
There are some limitations on what can appear in statements that a trigger executes when activated:

The trigger cannot use the CALL statement to invoke stored procedures that return data to the client or that use dynamic SQL. (Stored procedures are permitted to return data to the trigger through OUT or INOUT parameters.)

The trigger cannot use statements that explicitly or implicitly begin or end a transaction such as START TRANSACTION, COMMIT, or ROLLBACK.

LINK



Code:

CREATE TRIGGER update_zalihaP
......code ......
WHERE naziv_prep = NEW.naziv_prep;
ELSE
UPDATE `Error` SET x=1;
END IF
END


gdje bi triger napravio update nepostojeće tablice (ukoliko je korisnik unio veću težinu nego je ima na lageru), tj. ne bi napravio ništa, pa se redak koji bi se inače unio ne unese (i zaliha se ne promijeni) jer je količina prevelika, što je u redu, ali bi bilo još bolje da mogu napraviti da iskoči neka obavijest...:), ovo ne radi, količina na zalihi recimo bude 0, ali se količine još uvijek mogu dodavati
hvala
f


[Ovu poruku je menjao farkZ dana 22.05.2012. u 00:08 GMT+1]
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?22.05.2012. u 01:12 - pre 144 meseci
koristi mysql 5.5 i SIGNAL / RESIGNAL
 
Odgovor na temu

farkZ
king-ict, predavač IT
zagreb

Član broj: 244327
Poruke: 18
*.dynamic.amis.hr.



+1 Profil

icon Re: Forma (istovremeno Insert i Update u istom kveriju)!?23.05.2012. u 12:40 - pre 144 meseci
Citat:
bogdan.kecman: koristi mysql 5.5 i SIGNAL / RESIGNAL


bogdane hvala
ovo će poslužiti za sada, dok host ne updejta na mysql 5.5
Code:

....
   WHERE nesto= NEW.nesto;
        ELSE
            CALL nepostojecaproc;
        END IF;
END;
 
Odgovor na temu

[es] :: MySQL :: Forma (istovremeno Insert i Update u istom kveriju)!?

[ Pregleda: 3110 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.