PDA

Просмотр полной версии : [Вопрос] Снова вопрос по sscanf



Сергей
29.11.2018, 21:51
Доброго времени суток, в связи с тем, что я уже был разобрался с загрузкой из базы данных, теперь не могу разобраться со сохранением в неё же, помогите написать сохранение.

Суть вот в чём:
В базе данных в одной строке я храню 3 названия, т.е

Test1,Test2,Test3
При загрузке из базы данных разделяю их по разным переменным.

Образно говоря:
Загрузил я эти 3 названия в переменную:
new TEST_ID[3][30];

Потом с помощью sscanf раскинул т.е

new ID_TEST[3][30];
sscanf(TEST_ID[1], "p<,>s[20]s[20]s[20]", ID_TEST[0], ID_TEST[1], ID_TEST[2]);

Вопрос теперь вот в чём, я допустим, хочу изменить название Test1

Иду в диалоги, там провожу изменения:

strmid(ID_TEST[0], inputtext, 0, strlen(inputtext), 20);

А вот как теперь это всё дело изменить в базе данных, не пойму... прошу помощи...

m1n1vv
29.11.2018, 22:05
Так сразу сохраняй Test1,Test2,Test3 одной строкой

Сергей
30.11.2018, 00:56
Набил пост?

Вопрос и просьба помочь была конкретной, я хочу по пробовать сделать, именно так, если я редактирую Test2 то мне его в БД и нужно отредактировать(перезаписать) как хотите...

А те одной строкой сохранять

m1n1vv
30.11.2018, 01:03
Но все равно перезапишется вся ячейка

Seviel
30.11.2018, 01:08
Ну вроде так


#define MAX_TEST 3
new string[MAX_TEST * 30 + MAX_TEST];
for(new i; i < MAX_TEST; i++)
{
if(i != 0) strcat(string, ",");
strcat(string, ID_TEST[i]);
}


Запрос:


UPDATE `table` SET `column`='%s'

Сергей
30.11.2018, 01:12
Ну вроде так


#define MAX_TEST 3
new string[MAX_TEST * 30 + MAX_TEST];
for(new i; i < MAX_TEST; i++)
{
if(i != 0) strcat(string, ",");
strcat(string, ID_TEST[i]);
}


Запрос:


UPDATE `table` SET `column`='%s'


Отпишусь, как по пробую.

UnO
30.11.2018, 03:24
Набил пост?

Вопрос и просьба помочь была конкретной, я хочу по пробовать сделать, именно так, если я редактирую Test2 то мне его в БД и нужно отредактировать(перезаписать) как хотите...

А те одной строкой сохранять

Ты если не понимаешь, что тебе советуют, так не агрись
Как загружаешь, так и сохранять надо, только в обратном порядке

format(str, sizeof str, "UPDATE table SET rank0 = '%s,%s,%s'", ID_TEST[0], ID_TEST[1], ID_TEST[2]);
mysql_tquery(1, str);

Сергей
30.11.2018, 03:46
Дак зачем перезаписывать опять же всё? Если можно только 1 строчку поменять?

Причём тут агрится? Если я ясно дал понять, какой конкретно результат я хочу увидеть...

UnO
30.11.2018, 03:55
ТРИ названия хранятся в ОДНОЙ строке в бд. Если хочешь поменять ОДНО название, надо перезаписать всю строку.
Нельзя и рыбку съесть, и на хрен не сесть
Хочешь другой результат увидеть? Храни все названия в отдельных ячейках и меняй их сколько душе угодно.