Portal SAMP
[Ajuda] Método de salvamento de string - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Método de salvamento de string (/showthread.php?tid=3931)



Método de salvamento de string - Wes - 28/08/2023

Estou com uma dúvida sobre como salvar uma matriz de dados tudo em uma única linha. Eu quero evitar ter que utilizar o formato de query, pois serão vários números inteiros para salvar (50).

A ideia seria pegar os valores da matriz Lista[50] e armazenar todos eles em uma única linha, separada em espaços. Tentei ORM, mas não deu certo na hora de carregar a coluna no MySQL. Alguém tem uma luz?


RE: Método de salvamento de string - Device-Black - 29/08/2023

Talvez você pudesse demonstrar como fez, para que assim possamos enteder


RE: Método de salvamento de string - strelo - 29/08/2023

Vou tentar ajudar!

Se você quer salvar uma matriz de inteiros em uma única linha no MySQL, você pode transformar essa matriz em uma string onde os valores são separados por espaços (ou outro caractere) e, em seguida, salvar essa string em uma coluna do banco de dados. Aqui está um exemplo de como você poderia fazer isso:

Converter a matriz em uma string:

Código:
new Lista[50] = { ... }; // Sua matriz de inteiros
new ListaString[200];  // String para armazenar a matriz como texto

for (new i = 0; i < sizeof(Lista); i++) {
    format(ListaString, sizeof(ListaString), "%s%d ", ListaString, Lista[i]);
}


Salvar a string no banco de dados usando o seu ORM (exemplo genérico):

Código:
// Supondo que você tenha uma tabela chamada "Dados" e uma coluna "MatrizTexto"
new query[512];
format(query, sizeof(query), "INSERT INTO Dados (MatrizTexto) VALUES ('%s')", ListaString);
ExecuteQuery(query); // Substitua isso pelo método apropriado do seu ORM para executar a consulta



Para recuperar a matriz do banco de dados e converter a string de volta para uma matriz:

Código:
new Result[200];
// Supondo que você tenha recuperado o valor da coluna "MatrizTexto" na variável Result
new index = 0;
for (new i = 0; i < sizeof(Result); i++) {
    if (Result[i] == ' ') {
        Lista[index] = strval(Result);
        Result = strtok(Result, i + 1);
        index++;
    }
}




Lembre-se de adaptar esses exemplos ao seu código e ao seu ORM específico, já que cada ORM pode ter suas próprias peculiaridades na forma como lida com consultas e recuperação de dados.


RE: Método de salvamento de string - Carlos Victor - 31/08/2023

Eu acho que você pode usar o próprio sscanf para isso, nele tem uma função para separar as coisas que é tipo:

Código PHP:
new string[] = "0, 3, 6";
sscanf(string"p<,>ddd"valor1valor2valor3);

valor1 0
valor2 
3
valor3 




RE: Método de salvamento de string - pushline - 01/09/2023

Complementando o que o Carlos falou, se for um array eh so colocar desse jeito:

Código PHP:
sscanf(sualistaemstring"p<,>a<i>[tamanho em int]"output); 



RE: Método de salvamento de string - Device-Black - 04/09/2023

Mas isso teria um efeito diferente eu acho...
Código PHP:
new string[] = "abcd";
new 
abcd;

sscanf(string"a<iiii>"abcd); 
O valor de a, b, c e d, teriam os valores ascii da string, não é isso?
Se eu estiver certo, é pra isso que serve esse especificador

Posso estar errado, irei consultar o guia