Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]MySQL Update, Dopisywanie a nie zamienianie
kuna11
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 15.09.2013

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
KsaR
post
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


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...

Ten post edytował KsaR 30.09.2015, 09:53:35
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




CONCAT - patrz manual mysql

@KsaR w mysql tekstow sie nie dodaje... teksty sie łączy... poraz kolejny mowie: CONCAT
Go to the top of the page
+Quote Post
KsaR
post
Post #4





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
, i poprawilem dopiero co przeciez.. Chwile przed twoim postem.

No tak, piszac mojego posta, mialem co sekunde sprawdzac czy przypadkiem nie poprawiles juz....
Go to the top of the page
+Quote Post
kuna11
post
Post #6





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 15.09.2013

Ostrzeżenie: (0%)
-----


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).

Ten post edytował kuna11 30.09.2015, 10:10:25
Go to the top of the page
+Quote Post
Pyton_000
post
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
kuna11
post
Post #8





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 15.09.2013

Ostrzeżenie: (0%)
-----


Tak jak pisałem, patrzyłem ale nie zauważyłem (IMG:style_emoticons/default/smile.gif)
Dzięki za pomoc!

Tylko nie wiem, po co to dodaje przecinek na początku...
Właśnie tego chciałem uniknąć.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Na jakim początku? Kod...
Go to the top of the page
+Quote Post
kuna11
post
Post #10





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 15.09.2013

Ostrzeżenie: (0%)
-----


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

Ten post edytował kuna11 30.09.2015, 10:39:03
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
kuna11
post
Post #12





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 15.09.2013

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Tylko ze w ten sposob, bardzo szybko natrafisz na jeszcze wiecej problemow (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kuna11
post
Post #14





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 15.09.2013

Ostrzeżenie: (0%)
-----


:] W sumie potrzebuję jedynie wyświetlać wszystkie 'utwory' o danym tagu, wiec może wystarczy...
Go to the top of the page
+Quote Post
Pyton_000
post
Post #15





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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;


Ten post edytował Pyton_000 30.09.2015, 10:59:40
Go to the top of the page
+Quote Post
kuna11
post
Post #16





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 15.09.2013

Ostrzeżenie: (0%)
-----


Dokładnie, tak (IMG:style_emoticons/default/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...
Go to the top of the page
+Quote Post
Pyton_000
post
Post #17





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


nie, nie ma. I tu pojawia się @nospor:
Cytat
Tylko ze w ten sposob, bardzo szybko natrafisz na jeszcze wiecej problemow
Go to the top of the page
+Quote Post
viking
post
Post #18





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Jeśli kolumna będzie miała UNIQUE sypnie ci błędem na powieloną wartość.
Go to the top of the page
+Quote Post
nospor
post
Post #19





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@viking przeczytaj caly watek a nie piszesz glupoty (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 05:45