Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]MySQL Update
Forum PHP.pl > Forum > Przedszkole
kuna11
Czy mogę updatować jakiś rekord w bazie w taki sposób, żeby dodawać do tego co jest jakąś wartość a nie ją nadpisywać ?
Mam:
$sql = "UPDATE `tags` SET tekst=$tekst WHERE id='".$id_dwr."'";

Jeśli mam już ustawiony jakiś 'tekst' to to mi go nadpisze nową wartością a chciałbym aby update zostawił tą wartość i dopisał nową.

Czy jedyny sposób to taki, że muszę wcześniej pobrać to wartość i ją skleić z tą nową i wtedy dopiero updatować, nie ma uproszczenia ?
KsaR
Cytat(kuna11 @ 30.09.2015, 10:49:17 ) *
Czy mogę updatować jakiś rekord w bazie w taki sposób, żeby dodawać do tego co jest jakąś wartość a nie ją nadpisywać ?
Mam:
$sql = "UPDATE `tags` SET tekst=$tekst WHERE id='".$id_dwr."'";

Jeśli mam już ustawiony jakiś 'tekst' to to mi go nadpisze nową wartością a chciałbym aby update zostawił tą wartość i dopisał nową.

Czy jedyny sposób to taki, że muszę wcześniej pobrać to wartość i ją skleić z tą nową i wtedy dopiero updatować, nie ma uproszczenia ?

Tak powinno dzialac:

  1. $sql = "UPDATE `tags` SET `tekst`=CONCAT(`tekst`,$tekst) WHERE id='".$id_dwr."'";

W przypadku cyfr mozesz tak:
`kolumna`=`kolumna`-5
`kolumna`=`kolumna`+5 itd...
nospor
CONCAT - patrz manual mysql

@KsaR w mysql tekstow sie nie dodaje... teksty sie łączy... poraz kolejny mowie: CONCAT
KsaR
Cytat(nospor @ 30.09.2015, 10:51:52 ) *
CONCAT - patrz manual mysql

@KsaR w mysql tekstow sie nie dodaje... teksty sie łączy... poraz kolejny mowie: CONCAT

piszesz* :-P, i poprawilem dopiero co przeciez.. Chwile przed twoim postem.
nospor
Cytat
, i poprawilem dopiero co przeciez.. Chwile przed twoim postem.

No tak, piszac mojego posta, mialem co sekunde sprawdzac czy przypadkiem nie poprawiles juz....
kuna11
Dzięki za info - działa, ale chciałbym dodać między wartościami przecinek bo mi je zlepia.
Da się coś takiego uwzględnić w CONCAT ?
(mogę to zrobić obejściem, ale pytam czy jest może w tym concat taka możliwość - chociaż nie widzę w manualu nic na ten temat).
Pyton_000
Jakbyś zajrzał do Manuala tak jak Ci napisano to byś wieedział że się da:
https://dev.mysql.com/doc/refman/5.0/en/str...function_concat
kuna11
Tak jak pisałem, patrzyłem ale nie zauważyłem smile.gif
Dzięki za pomoc!

Tylko nie wiem, po co to dodaje przecinek na początku...
Właśnie tego chciałem uniknąć.
Pyton_000
Na jakim początku? Kod...
kuna11
Najpierw podaje separator jaki ma być, potem stringi, wg manuala.
echo $sql = "UPDATE `tags` SET `id_utworu`=CONCAT_WS(',',`id_utworu`,'$id') WHERE id='".$id_danego_utworu."'";
No i przed 1 wpisem też jest przecinek. Nie jest to mega problem, ale lepiej jakby separator separował coś od czegoś a nie nic od czegoś, więc na początku nie powinno go być.

Przykład:
,1,2,3,4,5
A powinno być:
1,2,3,4,5
nospor
zacznijmy od tego, ze masz zle zaprojektowaną strukture bazy. Tabela tags nie powinna zawierac info do jakich utworow jest przypisany tag.
Powinna powstac dodatkowa tabela
tag_utwor z polami:
tag_id oraz utwor_id
kuna11
Wiem,
Tak to też na początku zaprojektowałem, ale chciałem na szybko walnąć w ten sposób, bo słabo koduje, a przy drugiej tabeli napotkałem dodatkowe problemy, więc
na szybko zrobiłem w ten sposób...
nospor
Tylko ze w ten sposob, bardzo szybko natrafisz na jeszcze wiecej problemow smile.gif
kuna11
:] W sumie potrzebuję jedynie wyświetlać wszystkie 'utwory' o danym tagu, wiec może wystarczy...
Pyton_000
Cytat(kuna11 @ 30.09.2015, 11:37:16 ) *
Najpierw podaje separator jaki ma być, potem stringi, wg manuala.
echo $sql = "UPDATE `tags` SET `id_utworu`=CONCAT_WS(',',`id_utworu`,'$id') WHERE id='".$id_danego_utworu."'";
No i przed 1 wpisem też jest przecinek. Nie jest to mega problem, ale lepiej jakby separator separował coś od czegoś a nie nic od czegoś, więc na początku nie powinno go być.

Przykład:
,1,2,3,4,5
A powinno być:
1,2,3,4,5

A czy przypadkiem nie jest taż że , dodaje Ci się jak dodajesz pierwszy tag ? Tj pole najpierw jest puste...

  1. $sql = "UPDATE `tags` SET `id_utworu`= IF(id_utworu = '', '$id', CONCAT_WS(',',`id_utworu`,'$id')) WHERE id='".$id_danego_utworu;
kuna11
Dokładnie, tak smile.gif Dzięki wielkie!
Już ideałem byłoby jakby CONCAT w przypadku dopisywanej wartości sprawdzał, czy czasem już nie występuje i jej nie duplikował.
Zakładam, że nie ma takiej opcji, ale jeszcze postudiuję manual...
Pyton_000
nie, nie ma. I tu pojawia się @nospor:
Cytat
Tylko ze w ten sposob, bardzo szybko natrafisz na jeszcze wiecej problemow
viking
Jeśli kolumna będzie miała UNIQUE sypnie ci błędem na powieloną wartość.
nospor
@viking przeczytaj caly watek a nie piszesz glupoty wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.