Salut … se poate face update in baza de date in continuare ?
Mai exact am tabelul produs cu coloana id,titlu,poza,idprodus
verific produsele vad ca produsul ce exista in baza de date are poze noi… as vrea sa pastrez prima poza si sa le adaug si pe cele noi prin UPDATE SET poza
ma puteti ajuta ?
link-urile la poza sa vina de forma link1,link2,link3
Teoretic pentru poze ar trebuii să ai un tabel separat, produs_poza cu coloanele Id, Idprodus,nume_poza , iar la update , faci delete din produs_poza după Idprodus și le inserezi din nou
Trebuie sa ai un separator (virgulă,&, orice) ceva ce sa nu fie în denumirea pozei între link1, link2…etc, când parcurgi coloana poza, spargi stringul după separator și devine array, de acolo compari fiecare element cu noile link-uri, daca nu le găsești în array le ștergi și le adaugi pe cele noi, pe urmă din array faci string tot cu separator între linkuri și le salvezi
Nu sunt sigur dacă am înțeles. Există un tabel separat pentru poze sau nu ? Dacă da, atunci asta ai nevoie:
DELETE FROM
images_table
WHERE
product_id = 1234
AND
image_id != (
SELECT
MIN(image_id)
FROM
images_table
WHERE
product_id = 1234
)
Query-ul de mai sus va șterge toate imaginile pentru produsul cu id-ul 1234, cu excepția MIN(image_id), care va conține prima imagine inserată vreodată pentru produsul 1234.
Asta pare că ceri.
Dacă de fapt ai toate link-urile într-o singură coloană, atunci fă tabel separat, pentru că nu e o idee bună să concatenezi string-uri de forma asta într-o coloană (e bad practice).
Dacă intenționezi să continui cu programarea, să-ți pui o alarmă pentru anul viitor, să-ți aducă aminte de subiectul ăsta. Cel puțin teoretic, în momentul ăla ar trebui să primesc dislike chiar de la tine, pentru că am postat o soluție neortodoxă.
atunci, inainte sa faci update, citesti ce se afla pe coloana respectiva si adaugi la noile poze la poza existenta intr-un array. Ulterior array-ul il transformi in string. Dar cum spuneai si colegii, cel mai bine e sa tii in tabela diferita pozele.
Ce vrei tu se poate, doar că nu este corect. Pune pozele intr-un tabel separat, sau pune-le intr-un folder (poti folosi ca denumite id-ul produsului) si in tabela pui doar poza principala.
Daca totusi vrei sa continui cu ideea ta, inainte de update, proceseaza continutul pe care vrei sa-l salvezi:
explodeaza continutul curent intr-un array
adauga continutul nou in array
filtreaza noul array ca sa elimini pozele duplicat ( array_unique, array_filter)
concateneaza valorile
salveaza
Poti face si direct (ca la hits) dar te poti trezi cu poze duplicat:
SET poza = CASE
WHEN LENGTH(poza) > 0 THEN CONCAT(poza, ',link2,link3')
ELSE 'link2,link3'
END