Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

#80296
Boa tarde a todos, estou fazendo adaptações em um modulo gratuito que gera etiquetas do correios, porém o módulo não mostra complemento nem o número do endereço. O que pra mim o torna inutil.
Os dados utilizados no modulo, vem direto do banco por meio de consulta na tabela 'order'.
e os valores que preciso declarar estão na coluna 'shipping_custom_filed'.
exemplo de valor armazenado = {"1":"66","5":"casa"}, onde 1 é o id do campo personalizado 'Número', e 5 é o id do campo personalizado 'Complemento'
Minha dificuldade atual é fazer uma consulta SQL pra pegar o valor '66' (número do endereço de entrega), e se for o caso uma segunda consulta para pegar o 'casa' que refere-se ao complemento.
Não estou conseguindo encontrar um meio de capturar estes valores com o mysql. tentei 'substring_index' mas não consegui acertar. sempre vem as aspas e outros valores.

Alguem ai mais entendido de mysql pra dar uma luz?
#80297
Tente pelo método abaixo pois esse campo deve esta sendo passado como array

Resgata o número do endereço:
Código: Selecionar todos
$order_info['shipping_custom_field']['1']
Resgata o complemento do endereço
Código: Selecionar todos
$order_info['shipping_custom_field']['5']
Agora caso esse campo estiver sendo passado exatamente como informou '{"1":"66","5":"casa"}' deve fazer o seguinte;
Código: Selecionar todos
$dados_complementares = json_decode($order_info['shipping_custom_field'], true);  // Converte para array
$numero = $dados_complementares['1']; //Resgata o número do endereço
$complemento  = $dados_complementares['5']; //Resgata o complemento do endereço
smfsoft gostou disso
#80299
Obrigado pela Veterano,
Mas como o arquivo que recebe o request com o id do pedido, não possui as variaveis do opencart, e sim consulta direto no banco, acabei resolvendo alterando a consulta SQL mesmo. Como segue abaixo funcionou e consegui inserir os dados que faltava. É gambiarra mesmo, até eu encontrar uma extensão que gere esta etiqueta melhor.
adicionei no SELECT o Seguinte:
SUBSTRING_INDEX(SUBSTRING_INDEX(shipping_custom_field,'\"', -6),'\"', 1) AS numero, SUBSTRING_INDEX(SUBSTRING_INDEX(shipping_custom_field,'\"', -2),'\"', 1) AS complemento
e desta forma eu pego os valores de número do endereço e o complemento, nos aliases declarados.

De qualquer forma agradeço a pela sua dica, e vou copiar seu código por que pode ser que eu use de outra forma em outro momento.
#80300
Que bom que solucionou dessa forma, mais você poderia ter utilizado a segunda opção que te informei "Agora caso esse campo...", para tal deveria apenas alterar o nome da variável "$order_info" pela que esta utilizando na query de consulta do banco de dados que traz os dados do cliente;
smfsoft gostou disso

Gente preciso de ajuda urgente. Na migraç&a[…]

Caro @reds , muito obrigado pela resposta.

PHP 8+ incompatibilidade

Toda tradução para a versão 3[…]

Ola @alex3257 Se você precisa apenas ver […]