Autor Zpráva
Honzaaa
Profil *
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
Pokud upravujete obrázek, tak uděláte příkaz update s podmínkou na primární klíč v tabulce images.
Honzaaa
Profil *
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
Řádek s obrázkem 2 nechte být, nic nemazejte, jen udělejte update jediného řádku, kde byl obrázek 1.
Honzaaa
Profil *
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
Proč budete nahrávat znovu 30 obrázků, když je tam už máte? To mi efektivní nepřipadá.
Honzaaa
Profil *
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
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 *
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
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
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 *
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í

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0