phpRS help fórum : phpRS Fórum
Hlavní diskuzní phpRS fórum. Najdete zde odpovědi na otázky týkající se provozu a instalace phpRS systému.
phpRS - redakční a informační systém
Přičítání a zároveň odečítání položek v sql jiných SQL tabulkách
Zaslán uživatelem/kou: ZdenekPNJ (IP adresa zaznamenána)
Datum: 2013-05-28, 17:23

Zdravím,
řeším další poměrně zapeklitý případ.

Mám tabulku rs_clanky, která obsahuje položku např. item (hodnotu ciselneho iditem z tabulky itemtable).

Tabulka rs_itemtable
-iditem
-itemcredit (položka, která určuje, kolikrát může být položka item přiřazena k článku v tabulce rs_clanky)

A teď to důležité!!!

Potřeboval bych po každém přiřazení položky item k článku (nový článek či úprava článku) upravit číslo itemcredit v tabulce itemtable.

Jak to řeším?
Zatím blbě. Po úpravě článku se kromě uložení článku provede tohle (aepuvodniitem je položka, která se načte do editačního formuláře, [b]aeitem[úb] je nová položka, může být jiná, ale může být stejná,jako původní)

if ($GLOBALS["aepuvodniitem"]!=$GLOBALS["aeitem"]):
phprs_sql_query("update rs_itemtable set itemcredit=(itemcredit-1) where iditem='".$GLOBALS["aeitem"]."'",$GLOBALS["dbspojeni"]);
phprs_sql_query("update rs_itemtable set itemcredit=(itemcredit+1) where iditem='".$GLOBALS["aepuvodniitem"]."'",$GLOBALS["dbspojeni"]);
else:
phprs_sql_query("update rs_itemtable set itemcredit=itemcredit where iditem='".$GLOBALS["aeitem"]."'",$GLOBALS["dbspojeni"]);
endif;


PROBLÉM:
Ono to funguje. Když je aepuvodniitem=1(původní item) a aeitem=cokoli jiného než 1 (nový item).
Ale nesmí dojít k tomu, že se třeba provede refresh stránky, protože to odečte a přičte čísla, aniž by opravdu došlo ke změně.

Nevíte někdo, jak to ošetřit jinak?

LinkedIn - Zdeněk Pikulík

Regiony ČR.cz - 1. responzivní zpravodajství z regionů ČR
Medializujeme ČESKO.cz - Revoluční program podpory a modernizace obcí ČR
Obce2020.cz - Moderní řešení profesionálního webu pro obce

Re: Přičítání a zároveň odečítání položek v sql jiných SQL tabulkách
Zaslán uživatelem/kou: ZdenekPNJ (IP adresa zaznamenána)
Datum: 2013-05-28, 19:06

Původně jsem to chtěl řešit jinak.
Pouze pomocí dotazu SELECT cound(idc) v databázi (viz níže). Jenže problém nastává u toho, že count při velkém množství položek je pomalý a já potřebuji tato čísla mít k dispozici u pole <option>Název položky item (číslo-počet volných)</option>, tzn, že všechny položky option budou přepočítávat to count, což by bylo podle mého hodně náročné a pomalé. Proto jsem si říkal, že kdyby to přímo načetlo položku z databáze, bylo by to rychlé. Jen se musí ošetřit, aby nedocházelo k opakovaným opakovaným vykonáním update po refresh apod.

function Dotazkredit($id = 0)
{// dotaz
$dotazpaclp=phprs_sql_query("select count(idc) as pocet from rs_clanky where item='".$id."'",$GLOBALS["dbspojeni"]);
$pocetpaclp=phprs_sql_num_rows($dotazpaclp);

// vypis novinek
if ($pocetpaclp==0):
// CHYBA: Databaze neobsahuje zadny odpovidajici zaznam!
$partner="0";
else:
$pole_data=phprs_sql_fetch_assoc($dotazpaclp);
// celk. pocet novinek
$partner="".$pole_data["pocet"]."";
endif;

return $partner;
}



LinkedIn - Zdeněk Pikulík

Regiony ČR.cz - 1. responzivní zpravodajství z regionů ČR
Medializujeme ČESKO.cz - Revoluční program podpory a modernizace obcí ČR
Obce2020.cz - Moderní řešení profesionálního webu pro obce



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.