Autor | Zpráva | ||
---|---|---|---|
Honzaaa Profil * |
#1 · Zasláno: 15. 11. 2012, 14:20:46
Ahoj, můj problém popíšu na příkladu, aby to bylo jasné.
Mějme tabulku article - id, title, .... 1, článek, ... images- id_article, name,... 1, obrázek1, ... 1, obrázek2, ... teď bych chtěl provést update ( uživatel odstraní obrázek1 a zároveň nahraje obrázek3) výsledek by měl být: images- id_article, name,... 1, obrázek2, ... 1, obrázek3, ... jak to efektivně řešit? Předem moc díky |
||
Kajman Profil |
#2 · Zasláno: 15. 11. 2012, 15:47:39
Pokud upravujete obrázek, tak uděláte příkaz update s podmínkou na primární klíč v tabulce images.
|
||
Honzaaa Profil * |
#3 · Zasláno: 15. 11. 2012, 18:55:49
Dobrý den,
děkuji za odpověď, nicméně to moc dobře nechápu. Jde mi o to, že v podstatě se nebude provádět úprava řádku s obrázek2, ale provede se delete obrázku1 a insert obrázku3 Do teď jsem to řešil tak, že jsem jednoduše smazal obrazek1 a obrazek2 a nahrál obrázek2 a obrázek3 |
||
Kajman Profil |
#4 · Zasláno: 15. 11. 2012, 21:02:28
Řádek s obrázkem 2 nechte být, nic nemazejte, jen udělejte update jediného řádku, kde byl obrázek 1.
|
||
Honzaaa Profil * |
#5 · Zasláno: 15. 11. 2012, 22:08:19
Asi mne stále nechápete. Ono to možná ani nebude možné, když nad tím přemýšlím.
Já si to představoval tak, že mohu mít třeba těch obrázků 50. A nahraji třeba 40 jiných a 30 původních. Takže 30 se updatuje 20 se smaže a 40 přidá. |
||
Kajman Profil |
#6 · Zasláno: 15. 11. 2012, 22:26:12
Proč budete nahrávat znovu 30 obrázků, když je tam už máte? To mi efektivní nepřipadá.
|
||
Honzaaa Profil * |
#7 · Zasláno: 16. 11. 2012, 09:00:44
nemusí to být zrovna obrázky, mohou to být například nějaké položky. Jen sem přemýšlel, zda to nejde vytvořit nějak jednoduše. A jestli to nebude fungovat stejně jako klasický update, který dělá změny, jen ve sloupcích, které se změnily.
|
||
mimochodec Profil |
#8 · Zasláno: 16. 11. 2012, 10:00:16
Honzaaa:
Já tomu nerozumím. Pokud nejde o obrázky a konzistentnost záznamů v tabulce a souborů, tak kde je problém? |
||
Honzaaa Profil * |
#9 · Zasláno: 16. 11. 2012, 10:23:02
no asi celá otázka byla prostě nesmysl.
zkusím ještě jednou a líp popsat, co jsem si představoval. Dejme tomu, že máme nějaké parametry u produktu může jich být <0,∞) v administraci už je např. vyplněno: červená, růžová takže v db je id_produktu, parametr 1, červená 1, růžová uživatel se rozhodne smazat červenou a přidat modrou a bílou takže z administrace se odešlou hodnoty array('růžová', 'modrá', 'bílá') a teď sem si představoval, zda neexistuje příkaz, který to uloží do databáze, tak aby výsledek byl: id_produktu, parametr 1, růžová 1, modrá 1, bílá doufám, že se mi to teď povedlo vysvětlit lépe, každopádně moc díky, za váš čas a trpělivost :-) |
||
mimochodec Profil |
#10 · Zasláno: 16. 11. 2012, 11:06:27
Honzaaa:
Myslím, že tu administraci stavíš špatně. Odhadoval bych to na nějakou textareu. Udělej to prostě jako výpis existujících položek, kde každá bude mít checkbox a pod tím bude tlačítko Smazat - pak to zpracuješ jako pole zatržítek a dotaz bude DELETE FROM table WHERE ID IN (1,2,5,10) .
Přidávání položek bych od toho oddělil. Nejde jen o ty komplikace, které teď tady popisuješ. Další věcí jsou třeba duplicitní názvy. Prostě je lepší udělat to jako jiný formulář. |
||
Kajman Profil |
#11 · Zasláno: 16. 11. 2012, 11:11:23
Honzaaa:
Posílejte si z administrace i původní hodnotu primárního klíče u editovaných řádků. Pak můžete udělat update podle této hodnoty. Smazat jen ty, které nebyly poslány znovu. Udělat insert těch, které nemají původní hodnoty vyplněné. |
||
Honzaaa Profil * |
#12 · Zasláno: 16. 11. 2012, 11:25:11
díky, už je mi to jasnější
dřív jsem to dělal právě, jak píše mimochodec, ale přemýšlel jsem, zda není nějaké jednodužší řešení |
||
Časová prodleva: 11 let
|
0